;;; help-fns.el --- Complex help functions
-;; Copyright (C) 1985, 86, 93, 94, 98, 1999, 2000, 01, 02, 03, 2004
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001,
+;; 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help, internal
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
(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)))
+;;;###autoload
(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))))))))
;; This is heuristic, but covers all common cases
;; except ARG1-ARG2
(concat "\\<" ; beginning of word
- "\\(?:[a-z-]+-\\)?" ; for xxx-ARG
+ "\\(?:[a-z-]*-\\)?" ; for xxx-ARG
"\\("
- arg
+ (regexp-quote arg)
"\\)"
"\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
"\\(?:-[a-z-]+\\)?" ; for ARG-xxx
(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
(terpri)
(let ((from (point)))
(pp val)
- (help-xref-on-pp from (point))
+ ;; Hyperlinks in variable's value are quite frequently
+ ;; inappropriate e.g C-h v <RET> features <RET>
+ ;; (help-xref-on-pp from (point))
(if (< (point) (+ from 20))
(delete-region (1- from) from)))))
(terpri)
;; sensible size before prettyprinting. -- fx
(let ((from (point)))
(pp val)
- (help-xref-on-pp from (point))
+ ;; See previous comment for this function.
+ ;; (help-xref-on-pp from (point))
(if (< (point) (+ from 20))
(delete-region (1- from) from))))))
(terpri))
;; 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
(provide 'help-fns)
-;;; arch-tag: 9e10331c-ae81-4d13-965d-c4819aaab0b3
+;; arch-tag: 9e10331c-ae81-4d13-965d-c4819aaab0b3
;;; help-fns.el ends here