ui/nav-flash: refactor

+ Add +nav-flash-exclude-commands to control where
  +nav-flash-blink-cursor-maybe should not trigger nav-flash.
+ Rename API to conform to Doom naming conventions
  + +nav-flash-blink-cursor
  + +nav-flash-blink-cursor-maybe
  + +nav-flash|delayed-blink-cursor
  + +nav-flash|blink-cursor
  + +nav-flash|blink-cursor-maybe
  + +nav-flash*blink-cursor
This commit is contained in:
Henrik Lissner 2018-07-24 20:04:03 +02:00
parent ebd3b0223e
commit f58f3c3604
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 45 additions and 21 deletions

View file

@ -1,24 +1,40 @@
;;; ui/nav-flash/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +nav-flash*blink-cursor-maybe (orig-fn &rest args)
"Blink current line if the window has moved."
(if (or (not (window-start))
(derived-mode-p 'term-mode))
(apply orig-fn args)
(let* ((win-beg (window-start))
(point (save-excursion (goto-char win-beg) (point-marker))))
(apply orig-fn args)
(unless (equal point (save-excursion (goto-char win-beg) (point-marker)))
(+nav-flash/blink-cursor)))))
(defun +nav-flash-blink-cursor (&rest _)
"Blinks the current line in the current window, to make it clear where the
cursor has landed (typically after a large motion, like switching windows or
jumping to another part of the file)."
(unless (minibufferp)
(nav-flash-show)
;; only show in the current window
(overlay-put compilation-highlight-overlay 'window (selected-window))))
;;;###autoload
(defun +nav-flash-blink-cursor-maybe (&rest _)
"Like `+nav-flash-blink-cursor', but no-ops if in special-mode or term-mode,
or triggered from one of `+nav-flash-exclude-commands'."
(unless (or (derived-mode-p 'special-mode 'term-mode)
(memq this-command +nav-flash-exclude-commands))
(+nav-flash-blink-cursor)))
;;;###autoload
(defun +nav-flash|delayed-blink-cursor (&rest _)
"Like `+nav-flash-blink-cursor', but links after a tiny pause, in case it
isn't clear at run-time if the point will be in the correct window/buffer (like
for `org-follow-link-hook')."
(run-at-time 0.1 nil #'+nav-flash|blink-cursor))
;;;###autoload
(defalias '+nav-flash|blink-cursor #'+nav-flash-blink-cursor)
;;;###autoload
(defalias '+nav-flash|blink-cursor-maybe #'+nav-flash-blink-cursor-maybe)
;;;###autoload
(defalias '+nav-flash*blink-cursor #'+nav-flash-blink-cursor-maybe)
;;;###autoload
(defun +nav-flash/blink-cursor (&rest _)
"Blink current line using `nav-flash'."
(interactive)
(unless (or (minibufferp)
(derived-mode-p 'special-mode)
(memq this-command '(mouse-set-point evil-mouse-drag-region)))
(nav-flash-show)
;; only show in the current window
(overlay-put compilation-highlight-overlay 'window (selected-window))))
(+nav-flash-blink-cursor-maybe))