aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 839c4cbb829ab1b93df4b6ebba5836b05611084e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
# v0.12

Added a 'pretty view' for string values, keymap values, and hooks.

* For strings, we show properties natively in Emacs.

* For keymaps, we render each keybinding in a human-readable way along
with a link to the relevant command.

* For hooks, which are lists of functions and symbols, convert symbols
  to links.

Added a 'view callees' button which shows functions called inside the
bodies of source code, with links to view them inside helpful.

Fixed a crash on keymaps where keys are bound to anonymous functions.

Improved performance (PR by @nickdrozd).

# v0.11

Further work on syntax highlighting performance for large code
snippets. Helpful now informs the user when it has intentionally
disabled highlighting, and shows a link to the relevant setting.

Fixed an issue where Helpful didn't find keybindings if the command
was only referenced in `minor-mode-map-alist`.

Fixed a crash when minor modes had invalid keymaps.

Fixed an issue with `helpful-variable` where the user was pointlessly
prompted about file variables.

Fixed a crash when a docstring referenced a non-existent keymap.

Linkify docstring URLs of the form `<http://foo>`.

# v0.10

When visiting a reference, the occurrences of the symbol are
temporarily highlighted.

Keybindings in `widget-global-map` are now ignored as they're rarely
informative.

URLs in docstrings are now converted to buttons.

Function signatures are now correct when a function uses
`(declare (advertised-calling-convention ...))`.

Fixed an issue where escaped backticks were confused with unescaped
backticks in docstrings.

Fixed an issue with very large code snippets making helpful hang due
to slow syntax highlighting. This was particularly problematic for C
functions and variables.

When extracting the source for an item, include preceding comments and
autoload cookies.

# v0.9

Much better handling of aliases: show aliases differently to their
underlying symbol, show the `defalias` call in the source code, don't
show duplicates in the Aliases list, and cross-reference the Elisp
manual.

Fixed an issue where keymaps with prefix keys were not rendered
correctly.

Fixed an issue when looking at variable docs where we would visit the
definition buffer without the user requesting it.

Wording polish for finding references of primitives.

Fixed some corner cases in references to info manual sections not
being linkified.

Fixed an issue where the definition of interactively defined functions
wasn't shown.

Pretty-printing is now much more robust, gracefully handling very
large lists.

# v0.8

Added setting `helpful-switch-buffer-function` to allow users to
control how the Helpful buffer is shown.

Fixed a crash on functions where the last form in their definition is
a plain symbol.

Fixed an issue where we would show function source code for variables
where we can't find the variable definition.

Fixed a crash on functions defined in a buffer that isn't backed by a
file. We now provide a button to navigate to that buffer.

Improved wording for functions with no source at all.

Fixed an issue with obsolete aliases without version information.

Fixed an issue with top-level references where we would show the
previous form rather than the relevant one.

# v0.7

Helpful buffers now start with a summary of what you're looking at,
including quick links to the relevant source code. Interactive and
autoloaded functions are highlighted and include relevant links to the
manual.

Fixed a crash on functions defined in a .elc when the .el file is not
available.

Fixed some crashes on primitive functions.

Improved finding source code when edebug info is available.

Better handling of docstrings:

* All strings in quotes are highlighted. For example, previously
  `` `C-M-\' `` was not highlighted because `C-M-\` doesn't look like
  a symbol.
* Handle nested key sequences correctly, such as `` `\\[foo]' ``.
* Handle keymap sequences, such as `\\{foo-mode-map}`.

# v0.6

Added imenu support! You can now navigate between headings with imenu.

Better handling of docstrings:

* Correctly handle \= escapes
* Quoted keywords are now highlighted
* Correctly highlight docstrings that contain standalone `` ` ``
* Ensure we link command references in variable docstrings too

Added disassemble buttons to byte-code functions in symbol properties.

Fixed an issue with the prompt when setting variables to symbol
values.

Smarter handling of keybindings:

* Consider all keymaps, not just `foo-mode-map`.
* Show keybindings where they are defined, don't show them in keymaps
  that inherit them.
* Don't show menu bar items, as they clutter the display (please file
  a bug if you miss this).
* Correctly handle `\<foo-map>` in docstrings.

When `helpful-max-buffers` is set, we now kill buffers in the order of
least recently accessed. Previously, we killed in creation order.

If a function also has a unit test of the same name, allow it to be
run directly from the property list.

Fixed an issue where we would repeatedly prompt the user regarding
unsafe buffer-local variables.

# v0.5

Allow function tracing to be enabled/disabled from Helpful buffers.

Ensure docstring references to Info nodes are converted to
buttons. Docstring references to command keys are converted to buttons
too (see `set-mark-command` for an example).

Helpful now shows all aliases for callables and variables, and
highlights which aliases are obsolete.

Improved helpful performance for primitives when Emacs source code is
loaded.

Helpful will now only keep the last 5 buffers, to avoid cluttering
your buffer list. You can customise this behaviour with
`helpful-max-buffers`: set it to 1 to cleanup all previous buffers, or
set it to `nil` never cleanup buffers.

## recentf bug

Helpful had an issue where it would call find-file with propertized
strings. This broke various recentf features.

This has been fixed, and you can check if you're running a fixed
version by seeing whether you have a `helpful--button` function
defined. If you do, your version is new enough.

You will aso need to edit your `~/.emacs.d/recentf` and
`recentf-save.el` to remove any lines that start with a `#`:

``` emacs-lisp
#("/usr/share/emacs/25.3.50/lisp/frame.el.gz" 0 41 (button (t) category helpful-navigate-button-button path #0 position 2815))
```

Otherwise, you will get `Invalid read syntax: "#"` when starting
Emacs.

# v0.4

You can now enable edebug directly from helpful buffers!

Variables may be set from the helpful buffer, and booleans can be
toggled. If a variable is a `defcustom`, we also offer Customize.

Show the name of variables at the top of the helpful buffer.

Improved handling of special forms, and prevent users from
accidentally unbinding special forms.

Ensure we can find (and jump to) the definition of functions even if
the source buffer has narrowing in effect.

Fixed an issue where calling helpful commands on interactively defined
functions would overwrite unrelated buffers. Fixed a crash with
interactively defined functions being edebugged.

Added a cleanup command `helpful-kill-buffers`.

Fixed an issue with helpful making recentf write broken paths to
~/.recentf, breaking Emacs startup.

# v0.3

Fixed a crash on autoloaded functions that aren't loaded yet.

Fixed a crash in `helpful-key` for symbols that aren't bound to
commands.

Fixed an issue where viewing help for a function opened a buffer with
its source code. Helpful now cleans up any extra buffers it created.

Pressing RET on the extracted source code now goes to the buffer and
position where the source code is located.

TAB now moves between buttons in helpful buffers.

Buffer names now include 'function' or 'variable' etc, e.g. `*helpful
function: message*`.

# v0.2

Fixed a crash on viewing aliased primitive functions.

Fixed an issue where we didn't find the path for functions defined
interactively using `cl-defstruct`.

Interactively defined functions (e.g. try re-evaluating package.el.gz
and looking at `package-desc-name`) are converted from raw closures to
equivalent defun forms.

We now show the value of variables too.

Added a command `helpful-callable`, which offers both macros and
functions. This should be a drop-in replacement for
`describe-function`.

Added a command `helpful-key`, which offers help on keybindings much
like `describe-key`.

Added a command `helpful-symbol`, which offers help on variables,
functions and macros. It prompts the user if a symbol is both a
variable and a callable.

If a symbol is mentioned in the Emacs manual, show a link to the
relevant section.

# v0.1

First release.