@@ -248,6 +248,8 @@ Out-of-the box clojure-mode understands lein, boot and gradle."
248248 [" Unwind once" clojure-unwind]
249249 [" Fully unwind a threading macro" clojure-unwind-all])
250250 " --"
251+ [" View a Clojure guide" clojure-view-guide]
252+ " --"
251253 [" Report a clojure-mode bug" clojure-mode-report-bug]
252254 [" Clojure-mode version" clojure-mode-display-version]))
253255 map)
@@ -290,6 +292,28 @@ CIDER provides a more complex version which does classpath analysis.")
290292 (interactive )
291293 (browse-url clojure-mode-report-bug-url))
292294
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+
293317(defun clojure-space-for-delimiter-p (endp delim )
294318 " Prevent paredit from inserting useless spaces.
295319See `paredit-space-for-delimiter-predicates' for the meaning of
0 commit comments