Move sort function into a lambda in register-quicknav--registers.

This commit is contained in:
tastytea 2020-03-02 10:13:04 +01:00
parent 9b76f2a8e1
commit 4ee34787e6
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
1 changed files with 9 additions and 11 deletions

View File

@ -93,27 +93,25 @@
(defvar register-quicknav--current-position-register 0
"An index to the current position register.")
(defun register-quicknav--sort-position-register-elements (a b)
"Return t if the file name is the same and A < B."
(let ((marker-a (cdr a))
(marker-b (cdr b)))
(and (string= (buffer-file-name (marker-buffer marker-a))
(buffer-file-name (marker-buffer marker-b)))
(< (marker-position marker-a)
(marker-position marker-b)))))
(defun register-quicknav--registers ()
"Return all position registers, sorted by file name and position.
If `register-quicknav-buffer-only' is t, return only registers in
current buffer."
(let (result)
(let ((sort-fn (lambda (a b)
(let ((marker-a (cdr a))
(marker-b (cdr b)))
(and (string= (buffer-file-name (marker-buffer marker-a))
(buffer-file-name (marker-buffer marker-b)))
(< (marker-position marker-a)
(marker-position marker-b))))))
(result))
(dolist (item register-alist)
(when (markerp (cdr item))
(if register-quicknav-buffer-only
(when (eq (current-buffer) (marker-buffer (cdr item)))
(setq result (cons item result)))
(setq result (cons item result)))))
(sort result #'register-quicknav--sort-position-register-elements)))
(sort result sort-fn)))
;;;###autoload
(defun register-quicknav-next-register ()