diff options
-rw-r--r-- | geiser-chez.el | 44 | ||||
-rw-r--r-- | src/geiser/geiser.ss | 3 |
2 files changed, 45 insertions, 2 deletions
diff --git a/geiser-chez.el b/geiser-chez.el index 170570d..a96b357 100644 --- a/geiser-chez.el +++ b/geiser-chez.el @@ -65,6 +65,27 @@ host." (define-obsolete-variable-alias 'geiser-chez-debug-on-exception-p 'geiser-chez-debug-on-exception "0.18") +(geiser-custom--defcustom geiser-chez-browse-function #'eww + "Function used to open HTML pages for the manuals." + :type 'function) + +(geiser-custom--defcustom geiser-chez-csug-url + "https://cisco.github.io/ChezScheme/csug9.5/" + "Base URL for the Chez Scheme User's Guide HTML documents. + +Set it to a local file URI such as +'file:///usr/share/doc/chezscheme-doc/html/' for quicker offline +access." + :type 'string) + +(geiser-custom--defcustom geiser-chez-tspl-url + "https://scheme.com/tspl4/" + "Base URL for the The Scheme Programming Languange HTML version. + +Set it to a local file URI such as +'file:///usr/share/doc/tlsp/html/' for quicker offline access." + :type 'string) + (defconst geiser-chez-minimum-version "9.4") ;;; REPL support @@ -273,6 +294,27 @@ Return its local name." (with-output-to-file 1) (with-output-to-string 0)) +;;; Documentation display +(defun geiser-chez--insert-button (url label) + (insert-text-button label + 'button-data url + 'action geiser-chez-browse-function)) + +(defun geiser-chez--display-docstring (res) + (when-let ((labels (cdr (assoc "labels" res)))) + (insert (format "%s\n" (or (cdr (assoc "docstring" res)) ""))) + (let* ((csug (cdr (assoc 'csug labels))) + (csug-url (and (stringp csug) (concat geiser-chez-csug-url csug))) + (tspl (cdr (assoc 'tspl labels))) + (tspl-url (and (stringp tspl) (concat geiser-chez-tspl-url tspl)))) + (when csug-url + (insert "\n") + (geiser-chez--insert-button csug-url "· Chez Manual Entry")) + (when tspl-url + (insert "\n") + (geiser-chez--insert-button tspl-url "· TSLP Entry"))) + t)) + ;;; Implementation definition: (define-geiser-implementation chez @@ -291,8 +333,8 @@ Return its local name." (import-command geiser-chez--import-command) (find-symbol-begin geiser-chez--symbol-begin) (display-error geiser-chez--display-error) + (display-docstring geiser-chez--display-docstring) ;; (external-help geiser-chez--manual-look-up) - ;; (check-buffer geiser-chez--guess) (keywords geiser-chez--keywords) (nested-definitions t) (case-sensitive nil)) diff --git a/src/geiser/geiser.ss b/src/geiser/geiser.ss index 87ff1a7..98e03fd 100644 --- a/src/geiser/geiser.ss +++ b/src/geiser/geiser.ss @@ -319,7 +319,8 @@ (let ((lib (symbol-lib id))) (and lib `(("docstring" . ,(docstr lib id)) - ("signature" . ,(id-autodoc id)))))) + ("signature" . ,(id-autodoc id)) + ("labels" . ,(symbol-labels id)))))) (define geiser:no-values void) (define geiser:newline newline) |