(forward-line 1)
(newline (- n (/ n 2)))))
(goto-char (point-min))
+ (setq buffer-undo-list nil)
(set-buffer-modified-p nil))))
;;;###autoload
(intern (upcase name))))))
arglist)))
+;;; Could be this, if we make symbol-file do the work below.
+;;; (defun help-C-file-name (subr-or-var kind)
+;;; "Return the name of the C file where SUBR-OR-VAR is defined.
+;;; KIND should be `var' for a variable or `subr' for a subroutine."
+;;; (symbol-file (if (symbolp subr-or-var) subr-or-var
+;;; (subr-name subr-or-var))
+;;; (if (eq kind 'var) 'defvar 'defun)))
+
(defun help-C-file-name (subr-or-var kind)
"Return the name of the C file where SUBR-OR-VAR is defined.
KIND should be `var' for a variable or `subr' for a subroutine."
(let ((file (catch 'loop
(while t
(let ((pnt (search-forward (concat "\1f" name "\n"))))
- (re-search-backward "\1fS\\(.*\\)")
- (let ((file (match-string 1)))
+ (re-search-backward "\1fS\\(.*\\)")
+ (let ((file (match-string 1)))
(if (member file build-files)
(throw 'loop file)
(goto-char pnt))))))))
(if (re-search-backward "alias for `\\([^`']+\\)'" nil t)
(help-xref-button 1 'help-function def)))))
(or file-name
- (setq file-name (symbol-file function)))
+ (setq file-name (symbol-file function 'defun)))
(when (equal file-name "loaddefs.el")
;; Find the real def site of the preloaded function.
;; This is necessary only for defaliases.
;; Variables
;;;###autoload
-(defun variable-at-point ()
+(defun variable-at-point (&optional any-symbol)
"Return the bound variable symbol found around point.
-Return 0 if there is no such symbol."
+Return 0 if there is no such symbol.
+If ANY-SYMBOL is non-nil, don't insist the symbol be bound."
(or (condition-case ()
(with-syntax-table emacs-lisp-mode-syntax-table
(save-excursion
(error nil))
(let* ((str (find-tag-default))
(sym (if str (intern-soft str))))
- (if (and sym (boundp sym))
+ (if (and sym (or any-symbol (boundp sym)))
sym
(save-match-data
(when (and str (string-match "\\`\\W*\\(.*?\\)\\W*\\'" str))
(setq sym (intern-soft (match-string 1 str)))
- (and (boundp sym) sym)))))
+ (and (or any-symbol (boundp sym)) sym)))))
0))
;;;###autoload
(insert " value is shown ")
(insert-button "below"
'action help-button-cache
+ 'follow-link t
'help-echo "mouse-2, RET: show value")
(insert ".\n\n")))
;; Add a note for variables that have been make-var-buffer-local.
;; Make a hyperlink to the library if appropriate. (Don't
;; change the format of the buffer's initial line in case
;; anything expects the current format.)
- (let ((file-name (symbol-file (cons 'defvar variable))))
+ (let ((file-name (symbol-file variable 'defvar)))
(when (equal file-name "loaddefs.el")
;; Find the real def site of the preloaded variable.
(let ((location