Skip to content

Commit 29caff1

Browse files
committed
[lsp-ui-imenu] Some refactoring
1 parent 841b857 commit 29caff1

File tree

1 file changed

+29
-36
lines changed

1 file changed

+29
-36
lines changed

lsp-ui-imenu.el

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,7 @@
8080
(propertize (car entry) 'face 'default)
8181
"\n"))
8282
(len (length text)))
83-
(add-text-properties 0 len `(index ,index) text)
84-
(add-text-properties 0 len `(title ,title) text)
85-
(add-text-properties 0 len `(marker ,(cdr entry)) text)
86-
(add-text-properties 0 len `(padding ,padding) text)
83+
(add-text-properties 0 len `(index ,index title ,title marker ,(cdr entry) padding ,padding) text)
8784
text))
8885

8986
(defvar-local lsp-ui-imenu-ov nil)
@@ -136,35 +133,31 @@
136133
(interactive)
137134
(setq lsp-ui-imenu--origin (current-buffer))
138135
(imenu--make-index-alist)
139-
(let ((list imenu--index-alist)
140-
queue)
136+
(let ((list imenu--index-alist))
141137
(with-current-buffer (get-buffer-create "*lsp-ui-imenu*")
142-
(setq buffer-read-only nil)
143-
(remove-overlays)
144-
(erase-buffer)
145-
(let ((padding (or (and (eq lsp-ui-imenu-kind-position 'top) 1)
146-
(--> (--filter (imenu--subalist-p it) list)
147-
(--map (length (car it)) it)
148-
(-max (or it '(1))))))
149-
(color-index 0))
150-
(--each-indexed list
151-
(-let* (((title . entries) it))
152-
(if (not (imenu--subalist-p it))
153-
(push it queue)
154-
(when queue
155-
(--each queue
156-
(insert (lsp-ui-imenu--make-line " " 0 padding it color-index)))
157-
(lsp-ui-imenu--put-separator)
158-
(setq color-index (1+ color-index))
159-
(setq queue nil))
160-
(lsp-ui-imenu--put-kind title padding color-index)
161-
(--each-indexed entries
162-
(insert (lsp-ui-imenu--make-line title it-index padding it color-index)))
163-
(lsp-ui-imenu--put-separator)
164-
(setq color-index (1+ color-index))
165-
)))
166-
(--each queue
167-
(insert (lsp-ui-imenu--make-line " " 0 padding it color-index)))
138+
(let* ((padding (or (and (eq lsp-ui-imenu-kind-position 'top) 1)
139+
(--> (-filter 'imenu--subalist-p list)
140+
(--map (length (car it)) it)
141+
(-max (or it '(1))))))
142+
(grouped-by-subs (-partition-by 'imenu--subalist-p list))
143+
(color-index 0)
144+
buffer-read-only)
145+
(remove-overlays)
146+
(erase-buffer)
147+
(lsp-ui-imenu--put-separator)
148+
(dolist (group grouped-by-subs)
149+
(if (imenu--subalist-p (car group))
150+
(dolist (kind group)
151+
(-let* (((title . entries) kind))
152+
(lsp-ui-imenu--put-kind title padding color-index)
153+
(--each-indexed entries
154+
(insert (lsp-ui-imenu--make-line title it-index padding it color-index)))
155+
(lsp-ui-imenu--put-separator)
156+
(setq color-index (1+ color-index))))
157+
(--each-indexed group
158+
(insert (lsp-ui-imenu--make-line " " it-index padding it color-index)))
159+
(lsp-ui-imenu--put-separator)
160+
(setq color-index (1+ color-index))))
168161
(lsp-ui-imenu-mode)
169162
(setq header-line-format " ")
170163
(setq mode-line-format '(:eval (lsp-ui-imenu--win-separator)))
@@ -209,14 +202,14 @@
209202
(while (not (= (get-text-property (point) 'index) 0))
210203
(forward-line -1)))
211204

212-
(defun lsp-ui-imenu--go nil
205+
(defun lsp-ui-imenu--visit nil
213206
(interactive)
214207
(let ((marker (get-text-property (point) 'marker)))
215208
(select-window (get-buffer-window lsp-ui-imenu--origin))
216209
(goto-char marker)
217210
(pulse-momentary-highlight-one-line (point) 'next-error)))
218211

219-
(defun lsp-ui-imenu--look nil
212+
(defun lsp-ui-imenu--view nil
220213
(interactive)
221214
(let ((marker (get-text-property (point) 'marker)))
222215
(with-selected-window (get-buffer-window lsp-ui-imenu--origin)
@@ -231,8 +224,8 @@
231224
(define-key map (kbd "q") 'lsp-ui-imenu--kill)
232225
(define-key map (kbd "<right>") 'lsp-ui-imenu--next-kind)
233226
(define-key map (kbd "<left>") 'lsp-ui-imenu--prev-kind)
234-
(define-key map (kbd "<return>") 'lsp-ui-imenu--look)
235-
(define-key map (kbd "<M-return>") 'lsp-ui-imenu--go)
227+
(define-key map (kbd "<return>") 'lsp-ui-imenu--view)
228+
(define-key map (kbd "<M-return>") 'lsp-ui-imenu--visit)
236229
(setq lsp-ui-imenu-mode-map map)))
237230

238231
(define-derived-mode lsp-ui-imenu-mode special-mode "lsp-ui-imenu"

0 commit comments

Comments
 (0)