Skip to content

Commit 9ebcba2

Browse files
committed
Merge pull request #1084 from clojure-emacs/tweaks-to-cider-browse-ns
Tweaks to cider browse ns
2 parents 9ff62a3 + 85d16c8 commit 9ebcba2

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

cider-browse-ns.el

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,17 @@
4545
(defvar cider-browse-ns-mode-map
4646
(let ((map (make-sparse-keymap)))
4747
(set-keymap-parent map cider-popup-buffer-mode-map)
48-
(define-key map [return] #'cider-browse-ns-operate-on-point)
48+
(define-key map "d" #'cider-browse-ns--doc-at-point)
49+
(define-key map "s" #'cider-browse-ns--find-at-point)
50+
(define-key map [return] #'cider-browse-ns--doc-at-point)
4951
(define-key map "^" #'cider-browse-ns-all)
5052
(define-key map "n" #'next-line)
5153
(define-key map "p" #'previous-line)
5254
map))
5355

5456
(defvar cider-browse-ns-mouse-map
5557
(let ((map (make-sparse-keymap)))
56-
(define-key map [mouse-1] #'cider-browse-ns-handle-mouse)
58+
(define-key map [mouse-1] #'cider-browse-ns--handle-mouse)
5759
map))
5860

5961
(define-derived-mode cider-browse-ns-mode special-mode "browse-ns"
@@ -66,14 +68,14 @@
6668
(setq-local truncate-lines t)
6769
(setq-local cider-browse-ns-current-ns nil))
6870

69-
(defun cider-browse-ns-properties (text)
71+
(defun cider-browse-ns--properties (text)
7072
"Decorate TEXT with a clickable keymap and function face."
7173
(propertize text
7274
'font-lock-face 'font-lock-function-name-face
7375
'mouse-face 'highlight
7476
'keymap cider-browse-ns-mouse-map))
7577

76-
(defun cider-browse-ns-list (buffer title items)
78+
(defun cider-browse-ns--list (buffer title items)
7779
"Reset contents of BUFFER. Then display TITLE at the top and ITEMS are indented underneath."
7880
(with-current-buffer buffer
7981
(cider-browse-ns-mode)
@@ -94,11 +96,11 @@
9496
(interactive (list (completing-read "Browse namespace: " (cider-sync-request:ns-list))))
9597
(with-current-buffer (cider-popup-buffer cider-browse-ns-buffer t)
9698
(let ((vars (cider-sync-request:ns-vars namespace)))
97-
(cider-browse-ns-list (current-buffer)
99+
(cider-browse-ns--list (current-buffer)
98100
namespace
99101
(mapcar (lambda (var)
100-
(format "/%s"
101-
(cider-browse-ns-properties var)))
102+
(format "%s"
103+
(cider-browse-ns--properties var)))
102104
vars))
103105
(setq-local cider-browse-ns-current-ns namespace))))
104106

@@ -108,29 +110,33 @@
108110
(interactive)
109111
(with-current-buffer (cider-popup-buffer cider-browse-ns-buffer t)
110112
(let ((names (cider-sync-request:ns-list)))
111-
(cider-browse-ns-list (current-buffer)
112-
"All loaded namespaces"
113-
(mapcar (lambda (name)
114-
(cider-browse-ns-properties name))
115-
names))
113+
(cider-browse-ns--list (current-buffer)
114+
"All loaded namespaces"
115+
(mapcar (lambda (name)
116+
(cider-browse-ns--properties name))
117+
names))
116118
(setq-local cider-browse-ns-current-ns nil))))
117119

118-
(defun cider-browse-ns-operate-on-point ()
120+
(defun cider-browse-ns--var-at-point ()
121+
(let ((line (buffer-substring-no-properties (line-beginning-position) (line-end-position))))
122+
(when (string-match " +\\(.+\\)" line)
123+
(format "%s/%s" cider-browse-ns-current-ns (match-string 1 line)))))
124+
125+
(defun cider-browse-ns--doc-at-point ()
119126
"Expand browser according to thing at current point."
120127
(interactive)
121-
(let ((line (buffer-substring-no-properties (line-beginning-position) (line-end-position))))
122-
(cond
123-
((= 1 (line-number-at-pos))
124-
'nothing-to-do)
125-
((string-match " +/\\(.+\\)" line)
126-
(cider-doc-lookup (format "%s/%s" cider-browse-ns-current-ns (match-string 1 line))))
127-
(t
128-
(cider-browse-ns (replace-regexp-in-string " " "" line))))))
129-
130-
(defun cider-browse-ns-handle-mouse (event)
128+
(-when-let (var (cider-browse-ns--var-at-point))
129+
((cider-doc-lookup var))))
130+
131+
(defun cider-browse-ns--find-at-point ()
132+
(interactive)
133+
(when-let (var (cider-browse-ns--var-at-point))
134+
(cider-find-var current-prefix-arg var)))
135+
136+
(defun cider-browse-ns--handle-mouse (event)
131137
"Handle mouse click EVENT."
132138
(interactive "e")
133-
(cider-browse-ns-operate-on-point))
139+
(cider-browse-ns--doc-at-point))
134140

135141
(provide 'cider-browse-ns)
136142

0 commit comments

Comments
 (0)