Emacs: lin version 0.3.0

Lin is a stylistic enhancement for Emacs’ built-in hl-line-mode. It remaps the hl-line face (or equivalent) buffer-locally to a style that is optimal for major modes where line selection is the primary mode of interaction. Its manual explains the technicalities: https://protesilaos.com/emacs/lin.

Here is an illustration of Lin in the lower window as compared to the default subtle style of hl-line-mode in the upper window (using the modus-operandi theme from my modus-themes package):

Modus Operandi with LIN active

Below are the release notes.

Version 0.3.0 on 2022-04-08

  • Changed the source repository from GitLab to SourceHut: https://git.sr.ht/~protesilaos/lin. Use the mailing list to start a discussion, report a bug, send a patch, etc.: https://lists.sr.ht/~protesilaos/lin. The GitLab URL will serve as a mirror from now on (a GitHub mirror is still available and will remain that way).

  • Introduced a buffer-local minor mode as well as its global equivalent: lin-mode and lin-global-mode. This makes it easier to set up Lin in user init files and/or toggle it on demand. The following shows how the package can be used:

    (require 'lin)
    (setq lin-face 'lin-blue) ; check doc string for alternative styles
    ;; You can use this to live update the face:
    ;; (customize-set-variable 'lin-face 'lin-green)
    (setq lin-mode-hooks
    (lin-global-mode 1)
  • The lin-face now has a custom setter which automatically updates its appearance in all buffers where lin-mode is enabled. Users might thus prefer to set its value with customize-set-variable in order to find the style they like the most. Otherwise setting the value with setq is just fine for stable configurations. If, in that case, the user wants to update the face, they must invoke revert-buffer or equivalent (e.g. type g in Dired with the default key bindings) or evaluate the function lin-enable-mode-in-buffers.

  • The user option lin-mode-hooks now includes bongo-mode-hook (from the bongo package). Its default value is shown in the sample code above.