@@ -1411,6 +1411,8 @@ under point, prompts for a var."
14111411 (interactive " P" )
14121412 (cider-read-symbol-name " Symbol: " 'cider-doc-lookup query))
14131413
1414+ (defconst cider-grimoire-url " http://grimoire.arrdem.com/" )
1415+
14141416(defun cider-grimoire-replace-special (name )
14151417 " Convert the dashes in NAME to a grimoire friendly format."
14161418 (->> name
@@ -1422,12 +1424,12 @@ under point, prompts for a var."
14221424(defun cider-grimoire-url (name ns clojure-version )
14231425 " Generate a grimoire url from NAME, NS and CLOJURE-VERSION."
14241426 (let ((clojure-version (concat (substring clojure-version 0 4 ) " 0" ))
1425- (base-url " http:// grimoire.arrdem.com/ " ))
1427+ (base-url cider- grimoire-url ))
14261428 (if name
14271429 (concat base-url clojure-version " /" ns " /" (cider-grimoire-replace-special name) " /" )
14281430 (concat base-url clojure-version " /" ns " /" ))))
14291431
1430- (defun cider-grimoire-lookup (symbol )
1432+ (defun cider-grimoire-web- lookup (symbol )
14311433 " Look up the grimoire documentation for SYMBOL."
14321434 (-if-let (var-info (cider-var-info symbol))
14331435 (let ((name (cider-get-var-attr var-info " name" ))
@@ -1436,9 +1438,38 @@ under point, prompts for a var."
14361438 (browse-url (cider-grimoire-url name ns (cider--clojure-version))))
14371439 (message " Symbol %s not resolved " symbol)))
14381440
1439- (defun cider-grimoire (query )
1441+ (defun cider-grimoire-web (query )
14401442 " Open the grimoire documentation for QUERY in the default web browser."
14411443 (interactive " P" )
1444+ (cider-read-symbol-name " Symbol: " 'cider-grimoire-web-lookup query))
1445+
1446+ (defun cider-grimoire-lookup (symbol )
1447+ " Look up the grimoire documentation for SYMBOL."
1448+ (-if-let (var-info (cider-var-info symbol))
1449+ (let ((name (cider-get-var-attr var-info " name" ))
1450+ (ns (cider-get-var-attr var-info " ns" ))
1451+ (url-request-method " GET" )
1452+ (url-request-extra-headers `((" Content-Type" . " text/plain" ))))
1453+ ; ; TODO: add a whitelist of supported namespaces
1454+ (url-retrieve (cider-grimoire-url name ns (cider--clojure-version))
1455+ (lambda (status )
1456+ (goto-char (point-min ))
1457+ (re-search-forward " ^$" )
1458+ (delete-region (point-min ) (point ))
1459+ (delete-blank-lines )
1460+ (text-mode )
1461+ (cider-popup-buffer-mode +1 )
1462+ (read-only-mode +1 )
1463+ (pop-to-buffer (current-buffer ))
1464+ (goto-char (point-min ))
1465+ (when (get-buffer " *cider grimoire*" )
1466+ (kill-buffer " *cider grimoire*" ))
1467+ (rename-buffer " *cider grimoire*" ))))
1468+ (message " Symbol %s not resolved " symbol)))
1469+
1470+ (defun cider-grimoire (query )
1471+ " Open the grimoire documentation for QUERY in a popup buffer."
1472+ (interactive " P" )
14421473 (cider-read-symbol-name " Symbol: " 'cider-grimoire-lookup query))
14431474
14441475(defun cider-apropos-doc (button )
0 commit comments