Skip to content

Commit 3a7921b

Browse files
committed
symbol-focus: minor-mode
- also, survive a revert-buffer
1 parent 6e84768 commit 3a7921b

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

settings/setup-clojure-mode.el

-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424

2525
(require 'symbol-focus)
2626
(define-key clojure-mode-map (kbd "M-s-f") 'sf/focus-at-point)
27-
(define-key clojure-mode-map (kbd "M-s-b") 'sf/back)
28-
(define-key clojure-mode-map (kbd "M-s-n") 'sf/next)
29-
(define-key clojure-mode-map (kbd "M-s-p") 'sf/prev)
3027

3128
(defun clj-duplicate-top-level-form ()
3229
(interactive)

site-lisp/symbol-focus.el

+22-2
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@
9090

9191
(defun sf/reset ()
9292
(remove-overlays nil nil 'sf/hidden t)
93-
(remove-overlays nil nil 'sf/highlight t))
93+
(remove-overlays nil nil 'sf/highlight t)
94+
(symbol-focus-mode 0))
9495

9596
(defvar sf/history nil)
9697
(make-variable-buffer-local 'sf/history)
@@ -100,7 +101,9 @@
100101
(sf/hide-mismatches symbol)
101102
(sf/highlight-symbol symbol)
102103
(unless (string= (car sf/history) symbol)
103-
(push symbol sf/history)))
104+
(push symbol sf/history))
105+
(symbol-focus-mode 1)
106+
(recenter-top-bottom))
104107

105108
(defun sf/focus-at-point ()
106109
(interactive)
@@ -135,4 +138,21 @@
135138
0)))
136139
(goto-char (- prev offset))))
137140

141+
(defvar symbol-focus-mode-map (make-sparse-keymap)
142+
"symbol-focus-mode keymap")
143+
144+
(define-key symbol-focus-mode-map (kbd "M-s-b") 'sf/back)
145+
(define-key symbol-focus-mode-map (kbd "M-s-n") 'sf/next)
146+
(define-key symbol-focus-mode-map (kbd "M-s-p") 'sf/prev)
147+
(define-key symbol-focus-mode-map (kbd "M-s-r") 'sf/reset)
148+
149+
(define-minor-mode symbol-focus-mode
150+
"Focuses on a symbol, hides all top-level forms that does not
151+
include it. Easily jump between them. Change the symbol in one
152+
place, update all."
153+
nil " Focus" symbol-focus-mode-map
154+
(if symbol-focus-mode
155+
(add-hook 'before-revert-hook 'sf/reset)
156+
(remove-hook 'before-revert-hook 'sf/reset)))
157+
138158
(provide 'symbol-focus)

0 commit comments

Comments
 (0)