From 361b2c697a0def416ba9881d1f3b08390507f0a2 Mon Sep 17 00:00:00 2001 From: tastytea Date: Sun, 8 Mar 2020 05:01:53 +0100 Subject: [PATCH] Actually search for next/previous register nearest to pos. Simplified the logic, fixes the bug where you couldn't jump to the first register from the start of the document or the last register from the end. --- register-quicknav.el | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/register-quicknav.el b/register-quicknav.el index 03264ad..0dbc6ee 100644 --- a/register-quicknav.el +++ b/register-quicknav.el @@ -153,34 +153,32 @@ Works on markers and file-queries." (stop-searching)) (unless (eq index nil) (if next - (cl-decf index) - (cl-incf index))) + (cl-incf index) + (cl-decf index))) ;; Try to find the position register closest to point. (dolist (register register-list) (when (register-quicknav--is-current-buffer? register) (let ((register-pos (register-quicknav--position register))) (if next - (when (<= register-pos (point)) - (setq index (cl-position register register-list))) - (when (and (not stop-searching) (>= register-pos (point))) - (setq index (cl-position register register-list) - stop-searching t)))))) + (when (and (not stop-searching) (> register-pos (point))) + (setq index (cl-position register register-list) + stop-searching t)) + (when (< register-pos (point)) + (setq index (cl-position register register-list))))))) ;; If an index was found, set it to the next/previous register. If not, set ;; it to the first/last. (if index (progn - (when (> index (- (length register-list) 1)) + (when (or (> index (- (length register-list) 1)) (< index 0)) (setq index nil)) (if next (progn - (if (or (eq index nil) (eq index (- (length register-list) 1))) - (setq index 0) - (cl-incf index))) - (if (or (eq index nil) (eq index 0)) - (setq index (- (length register-list) 1)) - (cl-decf index))) + (if (or (eq index nil) (eq index (length register-list))) + (setq index 0))) + (if (or (eq index nil)) + (setq index (- (length register-list) 1)))) (register-to-point (car (nth index register-list))) (register-quicknav--last-register (nth index register-list))) (register-to-point (car (car register-list)))