Skip to content

Commit e67b04e

Browse files
committed
Merge pull request #691 from vitoshka/doc-map
Create cider-doc-map and add "\C" versions of the keys when it makes sense.
2 parents 6c39b34 + 99dbdbd commit e67b04e

File tree

5 files changed

+155
-102
lines changed

5 files changed

+155
-102
lines changed

cider-doc.el

Lines changed: 134 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
;;; cider-doc.el --- Documentation viewer -*- lexical-binding: t -*-
1+
;;; cider-doc.el --- CIDER documentation functionality -*- lexical-binding: t -*-
22

33
;; Copyright © 2014 Jeff Valk
44

@@ -31,97 +31,168 @@
3131
(require 'dash)
3232
(require 'easymenu)
3333

34-
;; Variables
34+
35+
;;; Variables
3536

3637
(defgroup cider-doc nil
37-
"Formatting/fontifying documentation viewer."
38+
"Documentation for CIDER."
3839
:prefix "cider-doc-"
3940
:group 'cider)
4041

41-
(defcustom cider-doc-fill-column fill-column
42+
43+
(defvar cider-doc-map
44+
(let (cider-doc-map)
45+
(define-prefix-command 'cider-doc-map)
46+
(define-key cider-doc-map (kbd "a") 'cider-apropos)
47+
(define-key cider-doc-map (kbd "C-a") 'cider-apropos)
48+
(define-key cider-doc-map (kbd "A") 'cider-apropos-documentation)
49+
(define-key cider-doc-map (kbd "d") 'cider-doc)
50+
(define-key cider-doc-map (kbd "C-d") 'cider-doc)
51+
(define-key cider-doc-map (kbd "g") 'cider-grimoire)
52+
(define-key cider-doc-map (kbd "C-g") 'cider-grimoire)
53+
(define-key cider-doc-map (kbd "h") 'cider-grimoire-web)
54+
(define-key cider-doc-map (kbd "j") 'cider-javadoc)
55+
(define-key cider-doc-map (kbd "C-j") 'cider-javadoc)
56+
cider-doc-map)
57+
"CIDER documentation keymap.")
58+
59+
(defvar cider-doc-menu
60+
'("Documentation ..."
61+
["CiderDoc" cider-doc]
62+
["JavaDoc in browser" cider-javadoc]
63+
["Grimoire" cider-grimoire]
64+
["Grimoire in browser" cider-grimoire-web]
65+
["Search functions/vars" cider-apropos]
66+
["Search documentation" cider-apropos-documentation])
67+
"CIDER documentation submenu.")
68+
69+
70+
71+
;;; cider-docview-mode
72+
73+
(defgroup cider-docview-mode nil
74+
"Formatting/fontifying documentation viewer."
75+
:prefix "cider-docview-"
76+
:group 'cider)
77+
78+
(defcustom cider-docview-fill-column fill-column
4279
"Fill column for docstrings in doc buffer."
4380
:type 'list
44-
:group 'cider-doc
81+
:group 'cider-docview-mode
4582
:package-version '(cider . "0.7.0"))
4683

4784

85+
4886
;; Faces
4987

50-
(defface cider-doc-emphasis-face
88+
(defface cider-docview-emphasis-face
5189
'((t (:inherit default :underline t)))
5290
"Face for emphasized text"
53-
:group 'cider-doc
91+
:group 'cider-docview-mode
5492
:package-version '(cider . "0.7.0"))
5593

56-
(defface cider-doc-strong-face
94+
(defface cider-docview-strong-face
5795
'((t (:inherit default :underline t :weight bold)))
5896
"Face for strongly emphasized text"
59-
:group 'cider-doc
97+
:group 'cider-docview-mode
6098
:package-version '(cider . "0.7.0"))
6199

62-
(defface cider-doc-literal-face
100+
(defface cider-docview-literal-face
63101
'((t (:inherit font-lock-string-face)))
64102
"Face for literal text"
65-
:group 'cider-doc
103+
:group 'cider-docview-mode
66104
:package-version '(cider . "0.7.0"))
67105

68-
(defface cider-doc-table-border-face
106+
(defface cider-docview-table-border-face
69107
'((t (:inherit shadow)))
70108
"Face for table borders"
71-
:group 'cider-doc
109+
:group 'cider-docview-mode
72110
:package-version '(cider . "0.7.0"))
73111

74-
112+
75113
;; Colors & Theme Support
76114

77-
(defvar cider-doc-code-background-color
115+
(defvar cider-docview-code-background-color
78116
(cider-scale-background-color)
79117
"Background color for code blocks.")
80118

81-
(defadvice enable-theme (after cider-doc-adapt-to-theme activate)
82-
"When theme is changed, update `cider-doc-code-background-color'."
83-
(setq cider-doc-code-background-color (cider-scale-background-color)))
84-
119+
(defadvice enable-theme (after cider-docview-adapt-to-theme activate)
120+
"When theme is changed, update `cider-docview-code-background-color'."
121+
(setq cider-docview-code-background-color (cider-scale-background-color)))
85122

123+
86124
;; Mode & key bindings
87125

88-
(defvar cider-doc-mode-map
126+
(defvar cider-docview-mode-map
89127
(let ((map (make-sparse-keymap)))
90128
(define-key map "q" 'cider-popup-buffer-quit-function)
91-
(define-key map "j" 'cider-doc-javadoc)
129+
(define-key map "j" 'cider-docview-javadoc)
92130
(define-key map (kbd "<backtab>") 'backward-button)
93131
(define-key map (kbd "TAB") 'forward-button)
94-
(easy-menu-define cider-doc-mode-menu map
132+
133+
;; VS[04-08-2014]: proposed keybindings for the docview mode
134+
;; (define-key map (kbd "<backtab>") 'backward-button)
135+
;; (define-key map (kbd "TAB") 'forward-button)
136+
;; (define-key map (kbd "k") 'kill-this-buffer)
137+
138+
;; (define-key map (kbd "C-c C-d") 'cider-doc-map)
139+
;; (define-key map (kbd "a") 'cider-apropos)
140+
;; (define-key map (kbd "A") 'cider-apropos-documentation)
141+
;; (define-key map (kbd "d") 'cider-doc)
142+
;; (define-key map (kbd "g") 'cider-grimoire)
143+
;; (define-key map (kbd "h") 'cider-grimoire-web)
144+
;; (define-key map (kbd "j") 'cider-javadoc)
145+
;; (define-key map (kbd "J") 'cider-doc-javadoc)
146+
147+
;; (define-key map (kbd "M-.") 'cider-jump-to-var)
148+
;; (define-key map (kbd "M-,") 'cider-jump-back)
149+
;; (define-key map (kbd "C-c M-.") 'cider-jump-to-resource)
150+
;; (define-key map (kbd "i") 'cider-inspect)
151+
;; (define-key map (kbd "C-c M-i") 'cider-inspect)
152+
;; (define-key map (kbd "C-c C-z") 'cider-switch-to-repl-buffer)
153+
154+
(easy-menu-define cider-docview-mode-menu map
95155
"Menu for CIDER's doc mode"
96-
'("Doc"
97-
["Go to Javadoc" cider-doc-javadoc]
98-
["Quit" cider-popup-buffer-quit-function]))
156+
`("Doc"
157+
;; ,cider-doc-menu
158+
;; "--"
159+
;; ["Jump to source" cider-jump-to-var]
160+
;; ["Jump to resource" cider-jump-to-resource]
161+
;; ["Jump back" cider-jump-back]
162+
;; "--"
163+
;; ["Switch to REPL" cider-switch-to-repl-buffer]
164+
;; "--"
165+
;; ["Kill" kill-this-buffer]
166+
;; ["Quit" quit-window]
167+
["JavaDoc in browser" cider-docview-javadoc]
168+
["Quit" cider-popup-buffer-quit-function]
169+
))
99170
map))
100171

101-
(define-derived-mode cider-doc-mode fundamental-mode "Doc"
172+
(define-derived-mode cider-docview-mode special-mode "Doc"
102173
"Major mode for displaying CIDER documentation
103174
104-
\\{cider-doc-mode-map}"
175+
\\{cider-docview-mode-map}"
105176
(setq buffer-read-only t)
106177
(setq-local truncate-lines t)
107178
(setq-local electric-indent-chars nil)
108-
(setq-local cider-doc-symbol nil)
109-
(setq-local cider-doc-javadoc-url nil))
110-
179+
(setq-local cider-docview-symbol nil)
180+
(setq-local cider-docview-javadoc-url nil))
111181

112-
;; Interactive functions
182+
183+
;;; Interactive functions
113184

114-
(defun cider-doc-javadoc ()
185+
(defun cider-docview-javadoc ()
115186
"Open the Javadoc for the current class, if available."
116187
(interactive)
117-
(if cider-doc-javadoc-url
118-
(browse-url cider-doc-javadoc-url)
119-
(message "No Javadoc available for %s" cider-doc-symbol)))
188+
(if cider-docview-javadoc-url
189+
(browse-url cider-docview-javadoc-url)
190+
(message "No Javadoc available for %s" cider-docview-symbol)))
120191

192+
193+
;;; Font Lock and Formatting
121194

122-
;; Font Lock and Formatting
123-
124-
(defun cider-doc-fontify-code-blocks (buffer mode)
195+
(defun cider-docview-fontify-code-blocks (buffer mode)
125196
"Font lock BUFFER code blocks using MODE and remove markdown characters.
126197
This processes the triple backtick GFM markdown extension. An overlay is used
127198
to shade the background. Blocks are marked to be ignored by other fonification
@@ -131,14 +202,14 @@ and line wrap."
131202
(while (search-forward-regexp "```\n" nil t)
132203
(replace-match "")
133204
(let ((beg (point))
134-
(bg `(:background ,cider-doc-code-background-color)))
205+
(bg `(:background ,cider-docview-code-background-color)))
135206
(when (search-forward-regexp "```\n" nil t)
136207
(replace-match "")
137208
(cider-font-lock-region-as mode beg (point))
138209
(overlay-put (make-overlay beg (point)) 'face bg)
139210
(put-text-property beg (point) 'block 'code)))))))
140211

141-
(defun cider-doc-fontify-literals (buffer)
212+
(defun cider-docview-fontify-literals (buffer)
142213
"Font lock BUFFER literal text and remove backtick markdown characters.
143214
Preformatted code text blocks are ignored."
144215
(with-current-buffer buffer
@@ -151,9 +222,9 @@ Preformatted code text blocks are ignored."
151222
(let ((beg (point)))
152223
(when (search-forward "`" (line-end-position) t)
153224
(replace-match "")
154-
(put-text-property beg (point) 'face 'cider-doc-literal-face)))))))))
225+
(put-text-property beg (point) 'face 'cider-docview-literal-face)))))))))
155226

156-
(defun cider-doc-fontify-emphasis (buffer)
227+
(defun cider-docview-fontify-emphasis (buffer)
157228
"Font lock BUFFER emphasized text and remove markdown characters.
158229
One '*' represents emphasis, multiple '**'s represent strong emphasis.
159230
Preformatted code text blocks are ignored."
@@ -166,19 +237,19 @@ Preformatted code text blocks are ignored."
166237
(replace-match "\\2")
167238
(let ((beg (1- (point)))
168239
(face (if (> (length (match-string 1)) 1)
169-
'cider-doc-strong-face
170-
'cider-doc-emphasis-face)))
240+
'cider-docview-strong-face
241+
'cider-docview-emphasis-face)))
171242
(when (search-forward-regexp "\\(\\w\\)\\*+" (line-end-position) t)
172243
(replace-match "\\1")
173244
(put-text-property beg (point) 'face face)))))))))
174245

175-
(defun cider-doc-format-tables (buffer)
246+
(defun cider-docview-format-tables (buffer)
176247
"Align BUFFER tables and dim borders.
177248
This processes the GFM table markdown extension using `org-table'.
178249
Tables are marked to be ignored by line wrap."
179250
(with-current-buffer buffer
180251
(save-excursion
181-
(let ((border 'cider-doc-table-border-face))
252+
(let ((border 'cider-docview-table-border-face))
182253
(org-table-map-tables
183254
(lambda ()
184255
(org-table-align)
@@ -187,7 +258,7 @@ Tables are marked to be ignored by line wrap."
187258
(put-text-property (match-beginning 0) (match-end 0) 'face border))
188259
(put-text-property (org-table-begin) (org-table-end) 'block 'table)))))))
189260

190-
(defun cider-doc-wrap-text (buffer)
261+
(defun cider-docview-wrap-text (buffer)
191262
"For text in BUFFER not propertized as 'block', apply line wrap."
192263
(with-current-buffer buffer
193264
(save-excursion
@@ -196,23 +267,23 @@ Tables are marked to be ignored by line wrap."
196267
(fill-region (point) (line-end-position)))
197268
(forward-line)))))
198269

270+
271+
;;; Rendering
199272

200-
;; Rendering
201-
202-
(defun cider-doc-render-java-doc (buffer text)
273+
(defun cider-docview-render-java-doc (buffer text)
203274
"Emit into BUFFER formatted doc TEXT for a Java class or member."
204275
(with-current-buffer buffer
205276
(let ((beg (point)))
206277
(insert text)
207278
(save-excursion
208279
(goto-char beg)
209-
(cider-doc-fontify-code-blocks buffer 'java-mode) ; left alone hereafter
210-
(cider-doc-fontify-literals buffer)
211-
(cider-doc-fontify-emphasis buffer)
212-
(cider-doc-format-tables buffer) ; may contain literals, emphasis
213-
(cider-doc-wrap-text buffer))))) ; ignores code, table blocks
280+
(cider-docview-fontify-code-blocks buffer 'java-mode) ; left alone hereafter
281+
(cider-docview-fontify-literals buffer)
282+
(cider-docview-fontify-emphasis buffer)
283+
(cider-docview-format-tables buffer) ; may contain literals, emphasis
284+
(cider-docview-wrap-text buffer))))) ; ignores code, table blocks
214285

215-
(defun cider-doc-render-info (buffer info)
286+
(defun cider-docview-render-info (buffer info)
216287
"Emit into BUFFER formatted INFO for the Clojure or Java symbol."
217288
(let* ((ns (cadr (assoc "ns" info)))
218289
(name (cadr (assoc "name" info)))
@@ -256,7 +327,7 @@ Tables are marked to be ignored by line wrap."
256327
(emit (concat "Deprecated in " depr) 'font-lock-comment-face))
257328
(when doc
258329
(if class
259-
(cider-doc-render-java-doc (current-buffer) doc)
330+
(cider-docview-render-java-doc (current-buffer) doc)
260331
(emit (concat " " doc))))
261332
(when url
262333
(newline)
@@ -284,22 +355,23 @@ Tables are marked to be ignored by line wrap."
284355
(put-text-property beg end (car x) (cadr x)))))
285356
(current-buffer))))
286357

287-
(defun cider-doc-render (buffer symbol info)
358+
(defun cider-docview-render (buffer symbol info)
288359
"Emit into BUFFER formatted documentation for SYMBOL's INFO."
289360
(with-current-buffer buffer
290361
(let ((javadoc (cadr (assoc "javadoc" info)))
291362
(inhibit-read-only t))
292-
(cider-doc-mode)
363+
(cider-docview-mode)
293364

294-
(setq-local cider-doc-symbol symbol)
295-
(setq-local cider-doc-javadoc-url javadoc)
365+
(setq-local cider-docview-symbol symbol)
366+
(setq-local cider-docview-javadoc-url javadoc)
296367

297368
(remove-overlays)
298-
(cider-doc-render-info buffer info)
369+
(cider-docview-render-info buffer info)
299370

300371
(goto-char (point-min))
301372
(current-buffer))))
302373

374+
303375
(provide 'cider-doc)
304376

305377
;;; cider-doc.el ends here

cider-interaction.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1425,7 +1425,7 @@ point, prompts for a var."
14251425
(defun cider-create-doc-buffer (symbol)
14261426
"Populates *cider-doc* with the documentation for SYMBOL."
14271427
(-when-let (info (cider-var-info symbol))
1428-
(cider-doc-render (cider-make-popup-buffer cider-doc-buffer) symbol info)))
1428+
(cider-docview-render (cider-make-popup-buffer cider-doc-buffer) symbol info)))
14291429

14301430
(defun cider-doc-lookup (symbol)
14311431
"Look up documentation for SYMBOL."

cider-macroexpansion.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ and point is placed after the expanded form."
167167
["Macroexpand-all" cider-macroexpand-all-inplace]
168168
["Go to source" cider-jump-to-var]
169169
["Go to doc" cider-doc]
170-
["Go to Javadoc" cider-doc-javadoc]
170+
["Go to Javadoc" cider-docview-javadoc]
171171
["Quit" cider-popup-buffer-quit-function]))
172172
(cl-labels ((redefine-key (from to)
173173
(dolist (mapping (where-is-internal from cider-mode-map))

0 commit comments

Comments
 (0)