@@ -248,6 +248,8 @@ Out-of-the box clojure-mode understands lein, boot and gradle."
248
248
[" Unwind once" clojure-unwind]
249
249
[" Fully unwind a threading macro" clojure-unwind-all])
250
250
" --"
251
+ [" View a Clojure guide" clojure-view-guide]
252
+ " --"
251
253
[" Report a clojure-mode bug" clojure-mode-report-bug]
252
254
[" Clojure-mode version" clojure-mode-display-version]))
253
255
map)
@@ -290,6 +292,28 @@ CIDER provides a more complex version which does classpath analysis.")
290
292
(interactive )
291
293
(browse-url clojure-mode-report-bug-url))
292
294
295
+ (defconst clojure-guides-base-url " https://clojure.org/guides/"
296
+ " The base URL for official Clojure guides." )
297
+
298
+ (defconst clojure-guides '((" Getting Started" . " getting_started" )
299
+ (" FAQ" . " faq" )
300
+ (" spec" . " spec" )
301
+ (" Destructuring" . " destructuring" )
302
+ (" Threading Macros" . " threading_macros" )
303
+ (" Comparators" . " comparators" )
304
+ (" Reader Conditionals" . " reader_conditionals" ))
305
+ " A list of all official Clojure guides." )
306
+
307
+ (defun clojure-view-guide ()
308
+ " Open a Clojure guide in your default browser.
309
+
310
+ The command will prompt you to select one of the available guides."
311
+ (interactive )
312
+ (let ((guide (completing-read " Select a guide: " (mapcar #'car clojure-guides))))
313
+ (when guide
314
+ (let ((guide-url (concat clojure-guides-base-url (cdr (assoc guide clojure-guides)))))
315
+ (browse-url guide-url)))))
316
+
293
317
(defun clojure-space-for-delimiter-p (endp delim )
294
318
" Prevent paredit from inserting useless spaces.
295
319
See `paredit-space-for-delimiter-predicates' for the meaning of
0 commit comments