summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2021-12-03 21:24:45 +0000
committerjao <jao@gnu.org>2021-12-03 21:24:45 +0000
commit045b61b8681222456b8df6d4d153907a6879eca9 (patch)
tree87d2c3486e67507e91f6a604aff8d73d432e5aed
parent8c2fcf6b8a072f6fe896178747119766c6609dd0 (diff)
downloadgeiser-045b61b8681222456b8df6d4d153907a6879eca9.tar.gz
geiser-045b61b8681222456b8df6d4d153907a6879eca9.tar.bz2
Fix: more careful display of signatures
In some cases, Guile cannot figure out a signature and it comes back as #f (:t in emacs-land), rather than a list.
-rw-r--r--elisp/geiser-autodoc.el7
-rw-r--r--elisp/geiser-doc.el16
2 files changed, 12 insertions, 11 deletions
diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el
index a92cb35..7bd8a8c 100644
--- a/elisp/geiser-autodoc.el
+++ b/elisp/geiser-autodoc.el
@@ -1,6 +1,6 @@
;;; geiser-autodoc.el -- autodoc mode
-;; Copyright (C) 2009, 2010, 2011, 2012, 2015, 2016 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012, 2015, 2016, 2021 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -134,8 +134,9 @@ when `geiser-autodoc-display-module-p' is on."
(propertize str 'face 'geiser-font-lock-autodoc-identifier)))
(defun geiser-autodoc--str* (full-signature)
- (let ((geiser-font-lock-autodoc-current-arg 'default))
- (geiser-autodoc--str (list (car full-signature)) full-signature)))
+ (let ((geiser-font-lock-autodoc-current-arg 'default)
+ (sign (if (listp full-signature) full-signature (list full-signature))))
+ (geiser-autodoc--str (list (car sign)) sign)))
(defsubst geiser-autodoc--value-str (proc module value)
(let ((name (geiser-autodoc--id-name proc module)))
diff --git a/elisp/geiser-doc.el b/elisp/geiser-doc.el
index 908ff3a..44a06ba 100644
--- a/elisp/geiser-doc.el
+++ b/elisp/geiser-doc.el
@@ -149,14 +149,14 @@ help (e.g. browse an HTML page) implementing this method.")
'help-echo help)))
(defun geiser-doc--insert-button (target module impl &optional sign)
- (let ((link (geiser-doc--make-link target module impl))
- (text (format "%s" (or (and sign
- (geiser-autodoc--str* sign))
- target
- module)))
- (help (format "%smodule %s"
- (if target (format "%s in " target) "")
- (or module "<unknown>"))))
+ (let* ((link (geiser-doc--make-link target module impl))
+ (sign (when sign (if (listp sign) sign (list target))))
+ (text (format "%s" (or (and sign (geiser-autodoc--str* sign))
+ target
+ module)))
+ (help (format "%smodule %s"
+ (if target (format "%s in " target) "")
+ (or module "<unknown>"))))
(insert-text-button text
:type 'geiser-doc--button
'face 'geiser-font-lock-doc-link