mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-09 09:16:02 -08:00
(help-xref-on-pp): New function.
(describe-variable): Use it to display xrefs in a symbol's value.
This commit is contained in:
parent
23c0fb21e7
commit
2e48ba1817
1 changed files with 38 additions and 8 deletions
46
lisp/help.el
46
lisp/help.el
|
|
@ -751,6 +751,29 @@ Return 0 if there is no such symbol."
|
|||
(set-syntax-table stab)))
|
||||
(error 0)))
|
||||
|
||||
(defun help-xref-on-pp (from to)
|
||||
"Add xrefs for symbols in `pp's output between FROM and TO."
|
||||
(let ((ost (syntax-table)))
|
||||
(unwind-protect
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
(set-syntax-table emacs-lisp-mode-syntax-table)
|
||||
(narrow-to-region from to)
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(cond
|
||||
((looking-at "\"") (forward-sexp 1))
|
||||
((looking-at "#<") (search-forward ">" nil 'move))
|
||||
((looking-at "\\(\\(\\sw\\|\\s_\\)+\\)")
|
||||
(let* ((sym (intern-soft
|
||||
(buffer-substring (match-beginning 1) (match-end 1))))
|
||||
(fn (cond ((fboundp sym) #'describe-function)
|
||||
((and sym (boundp sym)) #'describe-variable))))
|
||||
(when fn (help-xref-button 1 fn sym)))
|
||||
(goto-char (match-end 1)))
|
||||
(t (forward-char 1))))))
|
||||
(set-syntax-table ost))))
|
||||
|
||||
(defun describe-variable (variable)
|
||||
"Display the full documentation of VARIABLE (a symbol).
|
||||
Returns the documentation as a string, also."
|
||||
|
|
@ -772,20 +795,27 @@ Returns the documentation as a string, also."
|
|||
(if (not (boundp variable))
|
||||
(progn
|
||||
(princ " is void")
|
||||
(terpri)
|
||||
(setq valvoid t))
|
||||
(princ "'s value is ")
|
||||
(terpri)
|
||||
(pp (symbol-value variable))
|
||||
(terpri))
|
||||
(let ((val (symbol-value variable)))
|
||||
(with-current-buffer standard-output
|
||||
(princ "'s value is ")
|
||||
(terpri)
|
||||
(let ((from (point)))
|
||||
(pp val)
|
||||
(help-xref-on-pp from (point))))))
|
||||
(terpri)
|
||||
(if (local-variable-p variable)
|
||||
(progn
|
||||
(princ (format "Local in buffer %s; " (buffer-name)))
|
||||
(if (not (default-boundp variable))
|
||||
(princ "globally void")
|
||||
(princ "global value is ")
|
||||
(terpri)
|
||||
(pp (default-value variable)))
|
||||
(let ((val (default-value variable)))
|
||||
(with-current-buffer standard-output
|
||||
(princ "global value is ")
|
||||
(terpri)
|
||||
(let ((from (point)))
|
||||
(pp val)
|
||||
(help-xref-on-pp from (point))))))
|
||||
(terpri)))
|
||||
(terpri)
|
||||
(save-current-buffer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue