#+TITLE: Change log of lin.el
#+AUTHOR: Protesilaos Stavrou
#+EMAIL: info@protesilaos.com
#+OPTIONS: ':nil toc:nil num:nil author:nil email:nil

The newest release is at the top.  For further details, please consult
the manual: <https://protesilaos.com/emacs/lin>.

* Version 2.0.0 on 2026-02-12
:PROPERTIES:
:CUSTOM_ID: h:e62c1f29-a19e-4e7b-892d-c88847810ad7
:END:

This is the first tagged release since 2024-08-05. The package is in a
stable state: it does everything it is meant to. This version makes
some small refinements, mostly in how parts of the code are written.
Though there also are some nice user-facing changes:

- The ~lin-gnome-accent-color-mode~ synchronises the accent colour of
  the GNOME desktop environment with Lin' own ~lin-face~. This happens
  live, so any buffers that are already using the ~lin-mode~ (directly
  or via ~lin-global-mode~) will get the updated colour.

- The user option ~lin-gnome-accent-color-override-foreground~
  controls whether the faces that correspond to GNOME accent colours
  should override the underlying text colour or not. This is useful
  for improved colour contrast. The default is to not override the
  foreground. Setting ~lin-gnome-accent-color-override-foreground~ to
  non-~nil~ changes that so, for example, the ~lin-face~ will be set
  to ~lin-red-override-fg~ instead of ~lin-red~ (of course, faces can
  be modified by users/themes to override the foreground anyway, so
  this is about the default behaviour).

- New faces to style the current line when ~lin-mode~ is enabled
  include ~lin-purple~, ~lin-orange~, and ~lin-slate~. Those do not
  override the underlying foreground colours by default. Whereas
  ~lin-purple-override-fg~, ~lin-orange-override-fg~, and
  ~lin-slate-override-fg~ apply their background while also setting
  the foreground (remember that you always control which face to use
  by changing the user option ~lin-face~).

- The ~lin-global-mode~ skips all private buffers. These are buffers
  that users normally do not interact with directly. Their names are
  prefixed with a space and, by default, are hidden from the view of
  ~switch-to-buffer~ and related commands.

- The default value of the user option ~lin-mode-hooks~ now includes
  the ~world-clock-mode-hook~ and ~xref--xref-buffer-mode-hook~. The
  former relates to the command ~world-clock~, while the latter is
  used by any command that produces Grep-like results via the built-in
  Xref infrastructure (for example, my Denote package does that for a
  few of its commands). The ~lin-mode-hooks~ is a list of hooks for
  major modes that should use the Lin style for the selection line
  highlight.

* Version 1.1.0 on 2024-08-05
:PROPERTIES:
:CUSTOM_ID: h:2b4f6153-3127-4ab9-b8ae-1e4d3c18dd00
:END:

The package is in a stable state. These are some quality-of-life
refinements.

- Updated the colour values of all the faces defined by ~lin~. They
  now are a bit more vivid. The colours come from my ~modus-themes~.

- Defined the user option ~lin-remap-current-line-number~, which is
  set to a non-nil value by default. What it does is to apply the
  colour of the currently highlighted line (per ~hl-line-mode~) to the
  line number when ~display-line-numbers-mode~ is enabled.

- Used the correct symbol for the Mu4e headers hook
  (~mu4e-headers-mode-hook~ instead of ~mu4e-headers-mode~). Thanks to
  Simon Pugnet for the contribution. The change is small, meaning that
  Simon does not need to assign copyright to the Free Software
  Foundation.

- Added the ~archive-mode-hook~ and ~tar-mode-hook~ to the
  ~lin-mode-hooks~. Thanks to Nicolas De Jaeghere for the
  contribution. It too does not require copyright assignment.

* Version 1.0.0 on 2022-09-08
:PROPERTIES:
:CUSTOM_ID: h:2dd7cf36-47a4-4bd5-83ab-4f1caacff95c
:END:

+ Clarified the doc string of the user option ~lin-mode-hooks~.  This
  variable specifies the list of hooks that ~lin-global-mode~ will use
  to apply its effect.  Lin enables ~hl-line-mode~ in the given buffer
  and remaps its face to the value of the ~lin-face~ user option.

+ Added ~pdf-outline-buffer-mode-hook~ (from the =pdf-tools= package) to
  the user option ~lin-mode-hooks~.  Thanks to Gautier Ponsinet for the
  patch which was sent to my personal email.  The change is below the
  ~15 line threshold and thus requires no copyright assignment to the
  Free Software Foundation.

+ Named the mailing list address as the =Maintainer:= of Lin.  Together
  with the other package headers, they help the user find our primary
  sources and/or communication channels.  This change conforms with work
  being done upstream in package.el by Philip Kaludercic.  I was
  informed about it here:
  <https://lists.sr.ht/~protesilaos/general-issues/%3C875ykl84yi.fsf%40posteo.net%3E>.

+ Made all user-facing variables specify the package version that
  introduced them or last affected their specification.  This
  information is presented in Help buffers.

+ Configured the Lin group in Custom UI buffers to show a link to the
  package's Info manual.  Again, this helps the user find information
  about Lin.

+ Removed old forms that rendered obsolete certain functions or
  variables.  This keeps the code base small and focused on the current
  feature set.

The switch to version =1.0.0= is mostly symbolic.  Lin has been stable
and feature-complete practically since its inception.  This change shows
that most (all?) of the work has been accomplished.

* Version 0.4.0 on 2022-06-09
:PROPERTIES:
:CUSTOM_ID: h:bac21c2a-9858-4398-be54-cbcc045379af
:END:

+ The official Git repository is now hosted on SourceHut.  Mirrors are
  available on GitHub and GitLab---users can open issues there if they
  find it difficult to use the mailing list.  The sources:

  - Official manual: <https://protesilaos.com/emacs/lin>
  - Change log: <https://protesilaos.com/emacs/lin-changelog>
  - Git repo on SourceHut: <https://git.sr.ht/~protesilaos/lin>
    + Mirrors:
      - GitHub: <https://github.com/protesilaos/lin>
      - GitLab: <https://gitlab.com/protesilaos/lin>
  - Mailing list: <https://lists.sr.ht/~protesilaos/lin>

+ The ~grep-mode-hook~ and ~proced-mode-hook~ are included in the
  default value of the user option ~lin-mode-hooks~.  This practically
  means that Lin will be active in the implied modes when
  ~lin-global-mode~ is enabled.  Thanks to Nicolas De Jaeghere for the
  patch (Nicolas has assigned copyright to the Free Software
  Foundation).

+ The faces that leverage the macOS palette (~lin-mac{,-override-fg}~)
  are made to work with Mitsuharu Yamamoto's =emacs-mac= port:
  <https://bitbucket.org/mituharu/emacs-mac/src/master/>.  They read the
  =mac= display specification in addition to the =ns= one.  Remember
  that you can specify the desired face as the value of ~lin-face~ (its
  doc string documents all the stylistic options we provide).  Thanks to
  Kai von Fintel for the patch (the change is well below the ~15 line
  threshold for copyright assignment).

* Version 0.3.0 on 2022-04-08
:PROPERTIES:
:CUSTOM_ID: h:92f32a93-b310-414c-8ec9-0f2b038191f7
:END:

+ 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:

  #+begin_src emacs-lisp
(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
      '(bongo-mode-hook
        dired-mode-hook
        elfeed-search-mode-hook
        git-rebase-mode-hook
        ibuffer-mode-hook
        ilist-mode-hook
        ledger-report-mode-hook
        log-view-mode-hook
        magit-log-mode-hook
        mu4e-headers-mode
        notmuch-search-mode-hook
        notmuch-tree-mode-hook
        occur-mode-hook
        org-agenda-mode-hook
        tabulated-list-mode-hook))

(lin-global-mode 1)
  #+end_src

+ 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.

* Version 0.2.0 on 2022-03-16
:PROPERTIES:
:CUSTOM_ID: h:335b0809-d1c9-4981-b453-607eaf9760c6
:END:

Rewrote the entirety of =lin.el= to make the configuration easier and
keep the code streamlined.  The gist is that now Lin automatically
enables ~hl-line-mode~ in every mode implied by ~lin-mode-hooks~.  Here
is how Lin should be set up henceforth:

#+begin_src emacs-lisp
(require 'lin)

(setq lin-face 'lin-blue) ; check doc string for alternative styles

(lin-setup) ; Either run this or change `lin-mode-hooks'

(customize-set-variable
 'lin-mode-hooks ; do not use `setq' with this; `customize-set-variable' runs `lin-setup' automatically
 '(dired-mode-hook
   elfeed-search-mode-hook
   git-rebase-mode-hook
   ibuffer-mode-hook
   ilist-mode-hook
   ledger-report-mode-hook
   log-view-mode-hook
   magit-log-mode-hook
   mu4e-headers-mode
   notmuch-search-mode-hook
   notmuch-tree-mode-hook
   occur-mode-hook
   org-agenda-mode-hook
   tabulated-list-mode-hook))
#+end_src

The manual has been updated to reflect those changes:
<https://protesilaos.com/emacs/lin>.

Thanks to:

+ Christian Tietze for showing how the Lin face can use colours from the
  macOS palette.  The original contribution was in merge request 2:
  <https://gitlab.com/protesilaos/lin/-/merge_requests/2>.  Now we
  provide the ~lin-mac~ and ~lin-mac-override-fg~ faces.  These can be
  assigned as a value to the user option ~lin-face~.

+ Damien Cassou for suggesting that Lin sets itself up for a list of
  mode hooks.  The original contribution was in merge request 3:
  <https://gitlab.com/protesilaos/lin/-/merge_requests/3>.  It has now
  been rewritten as the ~lin-mode-hooks~ user option, though the idea is
  the same.

+ Federico Stilman for adding ~mu4e-headers-mode~ to the list that
  Damien had provided and which now lives as ~lin-mode-hooks~.
  Federico's contribution was sent as a patch via email.

* Version 0.1.0 on 2022-03-14
:PROPERTIES:
:CUSTOM_ID: h:1d5d376c-3010-4ffd-b3f6-38526e157c72
:END:

Initial release of the package.  Please read the manual.
