CHANGELOG.md (12822B)
1 # v0.22 (unreleased) 2 3 # v0.21 (released 30th July 2023) 4 5 Added more keybindings (`C-h x`, remapped `revert-buffer` and 6 `revert-buffer-quick`). 7 8 # v0.20 (released 30th July 2023) 9 10 Fixed support for Emacs 29. 11 12 Added support for storing org-mode links from inside Helpful buffers. 13 14 # v0.19 (released 12th May 2022) 15 16 Fixed a hang when looking at functions that had advice but hadn't yet 17 been loaded by the autoloader (#179, #191). 18 19 Fixed issue with displaying circular data structures. 20 21 Fixed a crash in `helpful-variable` in files that weren't 22 syntactically valid lisp. 23 24 Fixed stack overflow in macroexpanding large s-expressions (#279). 25 26 # v0.18 27 28 Show the original value for custom variables whose value has changed. 29 30 Report the package version when custom variables were added. 31 32 Fixed a crash on assigning byte-compiled objects to keybindings. 33 34 Fixed an issue with advice being shown in docstrings on Emacs 27+. 35 36 Symbol links in docstrings are now smarter in cases like "function 37 `foo'". 38 39 ## Improvements to the default symbol offered 40 41 Functions: 42 43 * If the symbol at point is a bound function, offer that. 44 * If point is at a function call, offer that. 45 46 Variables: 47 48 * If the symbol at point is a bound variable, offer that. 49 * If point is at a `defvar` or `defcustom` call, offer that variable. 50 51 Symbols: 52 53 * If the symbol at point is a bound function, offer that. 54 * Try the function, then the variable heuristics described above. 55 56 This should also make transitioning from help.el easier, and should 57 improve helpful in literate org-mode files. 58 59 # v0.17 60 61 Fixed a minor docstring formatting issue when keymap references were 62 on their own line. 63 64 Symbols of the form `foo-functions` (e.g. `after-change-functions`) 65 are now rendered as hooks. 66 67 String literals are now rendered correctly in docstrings. Previously 68 command substitution applied inside literals. 69 70 Fixed a crash on keyboard macros in keymaps. 71 72 String values are now shown as literals by default. 73 74 Fixed an issue with modes that override after-change-major-mode-hook, 75 such as `global-hi-lock-mode`. 76 77 Added bookmark support. 78 79 # v0.16 80 81 Improved wording when looking at aliases. 82 83 Fixed several issues for symbols that contain spaces. 84 85 Fixed an issue when viewing `inhibit-read-only`. 86 87 Improved the buffer prompt to be more relevant when inspecting 88 buffer-local values. 89 90 Better source detection for functions defined by `defstruct` or other 91 macros. 92 93 Fixed issues with functions that had more than one advice active. 94 95 Added looking up C-style Lisp names. 96 97 Set `comment-start` inside helpful buffers, to fix external packages 98 relying on that variable. 99 100 Helpful now always autoloads callables if they aren't already 101 loaded. This is consistent with help.el (unless you've overridden 102 `help-enable-auto-load`), produces more useful results, and fixes 103 crashes rendering some docstrings. 104 105 # v0.15 106 107 Fixed a crash on formatting values. 108 109 # v0.14 110 111 Named keyboard macros are now supported. 112 113 Function callees are now sorted. 114 115 Fixed an issue where source code of primitive variables included the 116 whole surrounding function. This was less useful and significantly 117 slower. 118 119 Fixed an issue with Remacs compatibility. 120 121 Fixed an issue with the prompt when setting variables whose current 122 value was nil or a keyword. 123 124 Fixed an issue with going to definitions when the source buffer was 125 narrowed. 126 127 Navigation keybindings now work in callee list buffers. 128 129 Fixed an issue where we didn't show function aliases as aliases when 130 they pointed to a primitive function. 131 132 Fixed an issue with primitive variables when using Helpful with 133 Remacs. 134 135 # v0.13 136 137 Buffer-local variables are now highlighted, and it's possible to see 138 all the different values of a buffer-local variable. 139 140 Variable values are now shown before docstrings. 141 142 Fixed an issue where special forms were incorrectly described as 143 functions. 144 145 Helpful now shows keybindings for aliases of the current command too. 146 147 Fixed an issue where functions defined in .el.gz files were not 148 recognised as being autoloaded. 149 150 Fixed an issue where we didn't show the source code for advised 151 primitives. 152 153 Show the default value for the symbol in the minibuffer prompt. 154 155 # v0.12 156 157 Added a 'pretty view' for string values, keymap values, and hooks. 158 159 * For strings, we show properties natively in Emacs. 160 161 * For keymaps, we render each keybinding in a human-readable way along 162 with a link to the relevant command. 163 164 * For hooks, which are lists of functions and symbols, convert symbols 165 to links. 166 167 Added a 'view callees' button which shows functions called inside the 168 bodies of source code, with links to view them inside helpful. 169 170 Fixed a crash on keymaps where keys are bound to anonymous functions. 171 172 Improved performance (PR by @nickdrozd). 173 174 It's now possible to move between buttons in the Helpful buffer with 175 `n` and `p`. 176 177 # v0.11 178 179 Further work on syntax highlighting performance for large code 180 snippets. Helpful now informs the user when it has intentionally 181 disabled highlighting, and shows a link to the relevant setting. 182 183 Fixed an issue where Helpful didn't find keybindings if the command 184 was only referenced in `minor-mode-map-alist`. 185 186 Fixed a crash when minor modes had invalid keymaps. 187 188 Fixed an issue with `helpful-variable` where the user was pointlessly 189 prompted about file variables. 190 191 Fixed a crash when a docstring referenced a non-existent keymap. 192 193 Linkify docstring URLs of the form `<http://foo>`. 194 195 # v0.10 196 197 When visiting a reference, the occurrences of the symbol are 198 temporarily highlighted. 199 200 Keybindings in `widget-global-map` are now ignored as they're rarely 201 informative. 202 203 URLs in docstrings are now converted to buttons. 204 205 Function signatures are now correct when a function uses 206 `(declare (advertised-calling-convention ...))`. 207 208 Fixed an issue where escaped backticks were confused with unescaped 209 backticks in docstrings. 210 211 Fixed an issue with very large code snippets making helpful hang due 212 to slow syntax highlighting. This was particularly problematic for C 213 functions and variables. 214 215 When extracting the source for an item, include preceding comments and 216 autoload cookies. 217 218 # v0.9 219 220 Much better handling of aliases: show aliases differently to their 221 underlying symbol, show the `defalias` call in the source code, don't 222 show duplicates in the Aliases list, and cross-reference the Elisp 223 manual. 224 225 Fixed an issue where keymaps with prefix keys were not rendered 226 correctly. 227 228 Fixed an issue when looking at variable docs where we would visit the 229 definition buffer without the user requesting it. 230 231 Wording polish for finding references of primitives. 232 233 Fixed some corner cases in references to info manual sections not 234 being linkified. 235 236 Fixed an issue where the definition of interactively defined functions 237 wasn't shown. 238 239 Pretty-printing is now much more robust, gracefully handling very 240 large lists. 241 242 # v0.8 243 244 Added setting `helpful-switch-buffer-function` to allow users to 245 control how the Helpful buffer is shown. 246 247 Fixed a crash on functions where the last form in their definition is 248 a plain symbol. 249 250 Fixed an issue where we would show function source code for variables 251 where we can't find the variable definition. 252 253 Fixed a crash on functions defined in a buffer that isn't backed by a 254 file. We now provide a button to navigate to that buffer. 255 256 Improved wording for functions with no source at all. 257 258 Fixed an issue with obsolete aliases without version information. 259 260 Fixed an issue with top-level references where we would show the 261 previous form rather than the relevant one. 262 263 # v0.7 264 265 Helpful buffers now start with a summary of what you're looking at, 266 including quick links to the relevant source code. Interactive and 267 autoloaded functions are highlighted and include relevant links to the 268 manual. 269 270 Fixed a crash on functions defined in a .elc when the .el file is not 271 available. 272 273 Fixed some crashes on primitive functions. 274 275 Improved finding source code when edebug info is available. 276 277 Better handling of docstrings: 278 279 * All strings in quotes are highlighted. For example, previously 280 `` `C-M-\' `` was not highlighted because `C-M-\` doesn't look like 281 a symbol. 282 * Handle nested key sequences correctly, such as `` `\\[foo]' ``. 283 * Handle keymap sequences, such as `\\{foo-mode-map}`. 284 285 # v0.6 286 287 Added imenu support! You can now navigate between headings with imenu. 288 289 Better handling of docstrings: 290 291 * Correctly handle \= escapes 292 * Quoted keywords are now highlighted 293 * Correctly highlight docstrings that contain standalone `` ` `` 294 * Ensure we link command references in variable docstrings too 295 296 Added disassemble buttons to byte-code functions in symbol properties. 297 298 Fixed an issue with the prompt when setting variables to symbol 299 values. 300 301 Smarter handling of keybindings: 302 303 * Consider all keymaps, not just `foo-mode-map`. 304 * Show keybindings where they are defined, don't show them in keymaps 305 that inherit them. 306 * Don't show menu bar items, as they clutter the display (please file 307 a bug if you miss this). 308 * Correctly handle `\<foo-map>` in docstrings. 309 310 When `helpful-max-buffers` is set, we now kill buffers in the order of 311 least recently accessed. Previously, we killed in creation order. 312 313 If a function also has a unit test of the same name, allow it to be 314 run directly from the property list. 315 316 Fixed an issue where we would repeatedly prompt the user regarding 317 unsafe buffer-local variables. 318 319 # v0.5 320 321 Allow function tracing to be enabled/disabled from Helpful buffers. 322 323 Ensure docstring references to Info nodes are converted to 324 buttons. Docstring references to command keys are converted to buttons 325 too (see `set-mark-command` for an example). 326 327 Helpful now shows all aliases for callables and variables, and 328 highlights which aliases are obsolete. 329 330 Improved helpful performance for primitives when Emacs source code is 331 loaded. 332 333 Helpful will now only keep the last 5 buffers, to avoid cluttering 334 your buffer list. You can customise this behaviour with 335 `helpful-max-buffers`: set it to 1 to cleanup all previous buffers, or 336 set it to `nil` never cleanup buffers. 337 338 ## recentf bug 339 340 Helpful had an issue where it would call find-file with propertized 341 strings. This broke various recentf features. 342 343 This has been fixed, and you can check if you're running a fixed 344 version by seeing whether you have a `helpful--button` function 345 defined. If you do, your version is new enough. 346 347 You will aso need to edit your `~/.emacs.d/recentf` and 348 `recentf-save.el` to remove any lines that start with a `#`: 349 350 ``` emacs-lisp 351 #("/usr/share/emacs/25.3.50/lisp/frame.el.gz" 0 41 (button (t) category helpful-navigate-button-button path #0 position 2815)) 352 ``` 353 354 Otherwise, you will get `Invalid read syntax: "#"` when starting 355 Emacs. 356 357 # v0.4 358 359 You can now enable edebug directly from helpful buffers! 360 361 Variables may be set from the helpful buffer, and booleans can be 362 toggled. If a variable is a `defcustom`, we also offer Customize. 363 364 Show the name of variables at the top of the helpful buffer. 365 366 Improved handling of special forms, and prevent users from 367 accidentally unbinding special forms. 368 369 Ensure we can find (and jump to) the definition of functions even if 370 the source buffer has narrowing in effect. 371 372 Fixed an issue where calling helpful commands on interactively defined 373 functions would overwrite unrelated buffers. Fixed a crash with 374 interactively defined functions being edebugged. 375 376 Added a cleanup command `helpful-kill-buffers`. 377 378 Fixed an issue with helpful making recentf write broken paths to 379 ~/.recentf, breaking Emacs startup. 380 381 # v0.3 382 383 Fixed a crash on autoloaded functions that aren't loaded yet. 384 385 Fixed a crash in `helpful-key` for symbols that aren't bound to 386 commands. 387 388 Fixed an issue where viewing help for a function opened a buffer with 389 its source code. Helpful now cleans up any extra buffers it created. 390 391 Pressing RET on the extracted source code now goes to the buffer and 392 position where the source code is located. 393 394 TAB now moves between buttons in helpful buffers. 395 396 Buffer names now include 'function' or 'variable' etc, e.g. `*helpful 397 function: message*`. 398 399 # v0.2 400 401 Fixed a crash on viewing aliased primitive functions. 402 403 Fixed an issue where we didn't find the path for functions defined 404 interactively using `cl-defstruct`. 405 406 Interactively defined functions (e.g. try re-evaluating package.el.gz 407 and looking at `package-desc-name`) are converted from raw closures to 408 equivalent defun forms. 409 410 We now show the value of variables too. 411 412 Added a command `helpful-callable`, which offers both macros and 413 functions. This should be a drop-in replacement for 414 `describe-function`. 415 416 Added a command `helpful-key`, which offers help on keybindings much 417 like `describe-key`. 418 419 Added a command `helpful-symbol`, which offers help on variables, 420 functions and macros. It prompts the user if a symbol is both a 421 variable and a callable. 422 423 If a symbol is mentioned in the Emacs manual, show a link to the 424 relevant section. 425 426 # v0.1 427 428 First release.