I have been using Emacs for some time, and ido has always been my favourite way to switch buffers.
But recently I discovered and started using Helm, a package based on incremental completion which can provide lots of interesting features. One of them being buffer switching.
The simplest way to use Helm to switch buffers is
helm-buffers-list
. Personally I use C-x b
:
(global-set-key (kbd "C-x b") 'helm-buffers-list)
I really like that helm-buffer-list
orders buffers using the last time they
were used. However as soon as I start typing something to narrow the
selection, Helm switches to a different ordering based on the length of buffer
names. A bug report was
submitted, but apparently, this is the intended behaviour.
Fortunately, it is possible to override this behaviour, as suggested in
another Github issue.
Ordering is done in the helm-buffers-sort-transformer
function; we could
replace it, but it is cleaner to
advise
it.
(defun nm-around-helm-buffers-sort-transformer (candidates source)
candidates)
(advice-add 'helm-buffers-sort-transformer
:override #'nm-around-helm-buffers-sort-transformer)
This way we keep the LRU-style ordering even when narrowing the selection.