helpful

a fork of Wilfred's helpful
git clone https://git.trogloxene.org/helpful.git
Log | Files | Refs | README

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.