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.
This commit is contained in:
parent
4f9866fa85
commit
361b2c697a
|
@ -153,34 +153,32 @@ Works on markers and file-queries."
|
||||||
(stop-searching))
|
(stop-searching))
|
||||||
(unless (eq index nil)
|
(unless (eq index nil)
|
||||||
(if next
|
(if next
|
||||||
(cl-decf index)
|
(cl-incf index)
|
||||||
(cl-incf index)))
|
(cl-decf index)))
|
||||||
|
|
||||||
;; Try to find the position register closest to point.
|
;; Try to find the position register closest to point.
|
||||||
(dolist (register register-list)
|
(dolist (register register-list)
|
||||||
(when (register-quicknav--is-current-buffer? register)
|
(when (register-quicknav--is-current-buffer? register)
|
||||||
(let ((register-pos (register-quicknav--position register)))
|
(let ((register-pos (register-quicknav--position register)))
|
||||||
(if next
|
(if next
|
||||||
(when (<= register-pos (point))
|
(when (and (not stop-searching) (> register-pos (point)))
|
||||||
(setq index (cl-position register register-list)))
|
(setq index (cl-position register register-list)
|
||||||
(when (and (not stop-searching) (>= register-pos (point)))
|
stop-searching t))
|
||||||
(setq index (cl-position register register-list)
|
(when (< register-pos (point))
|
||||||
stop-searching t))))))
|
(setq index (cl-position register register-list)))))))
|
||||||
|
|
||||||
;; If an index was found, set it to the next/previous register. If not, set
|
;; If an index was found, set it to the next/previous register. If not, set
|
||||||
;; it to the first/last.
|
;; it to the first/last.
|
||||||
(if index
|
(if index
|
||||||
(progn
|
(progn
|
||||||
(when (> index (- (length register-list) 1))
|
(when (or (> index (- (length register-list) 1)) (< index 0))
|
||||||
(setq index nil))
|
(setq index nil))
|
||||||
(if next
|
(if next
|
||||||
(progn
|
(progn
|
||||||
(if (or (eq index nil) (eq index (- (length register-list) 1)))
|
(if (or (eq index nil) (eq index (length register-list)))
|
||||||
(setq index 0)
|
(setq index 0)))
|
||||||
(cl-incf index)))
|
(if (or (eq index nil))
|
||||||
(if (or (eq index nil) (eq index 0))
|
(setq index (- (length register-list) 1))))
|
||||||
(setq index (- (length register-list) 1))
|
|
||||||
(cl-decf index)))
|
|
||||||
(register-to-point (car (nth index register-list)))
|
(register-to-point (car (nth index register-list)))
|
||||||
(register-quicknav--last-register (nth index register-list)))
|
(register-quicknav--last-register (nth index register-list)))
|
||||||
(register-to-point (car (car register-list)))
|
(register-to-point (car (car register-list)))
|
||||||
|
|
Loading…
Reference in New Issue