summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/help-fns.el26
-rw-r--r--lisp/help.el68
3 files changed, 53 insertions, 47 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6ca7bffdceb..f4b0748c764 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * help.el (function-called-at-point):
+ * help-fns.el (variable-at-point): Use emacs-lisp-mode-syntax-table
+ even when calling find-tag-default.
+
2008-06-06 Daniel Colascione <danc@merrillpress.com>
* nxml/nxml-mode.el (nxml-syntax-highlight-flag)
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 1d1130f21a8..f2e9b1e1b98 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -443,8 +443,8 @@ face (according to `face-differs-from-default-p')."
"Return the bound variable symbol found at or before point.
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
+ (with-syntax-table emacs-lisp-mode-syntax-table
+ (or (condition-case ()
(save-excursion
(or (not (zerop (skip-syntax-backward "_w")))
(eq (char-syntax (following-char)) ?w)
@@ -452,17 +452,17 @@ If ANY-SYMBOL is non-nil, don't insist the symbol be bound."
(forward-sexp -1))
(skip-chars-forward "'")
(let ((obj (read (current-buffer))))
- (and (symbolp obj) (boundp obj) obj))))
- (error nil))
- (let* ((str (find-tag-default))
- (sym (if str (intern-soft str))))
- (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 (or any-symbol (boundp sym)) sym)))))
- 0))
+ (and (symbolp obj) (boundp obj) obj)))
+ (error nil))
+ (let* ((str (find-tag-default))
+ (sym (if str (intern-soft str))))
+ (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 (or any-symbol (boundp sym)) sym)))))
+ 0)))
(defun describe-variable-custom-version-info (variable)
(let ((custom-version (get variable 'custom-version))
diff --git a/lisp/help.el b/lisp/help.el
index 5ed67566c93..44e3f707af1 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -254,40 +254,40 @@ C-w Information on absence of warranty for GNU Emacs."
(defun function-called-at-point ()
"Return a function around point or else called by the list containing point.
If that doesn't give a function, return nil."
- (or (with-syntax-table emacs-lisp-mode-syntax-table
- (or (condition-case ()
- (save-excursion
- (or (not (zerop (skip-syntax-backward "_w")))
- (eq (char-syntax (following-char)) ?w)
- (eq (char-syntax (following-char)) ?_)
- (forward-sexp -1))
- (skip-chars-forward "'")
- (let ((obj (read (current-buffer))))
- (and (symbolp obj) (fboundp obj) obj)))
- (error nil))
- (condition-case ()
- (save-excursion
- (save-restriction
- (narrow-to-region (max (point-min)
- (- (point) 1000)) (point-max))
- ;; Move up to surrounding paren, then after the open.
- (backward-up-list 1)
- (forward-char 1)
- ;; If there is space here, this is probably something
- ;; other than a real Lisp function call, so ignore it.
- (if (looking-at "[ \t]")
- (error "Probably not a Lisp function call"))
- (let ((obj (read (current-buffer))))
- (and (symbolp obj) (fboundp obj) obj))))
- (error nil))))
- (let* ((str (find-tag-default))
- (sym (if str (intern-soft str))))
- (if (and sym (fboundp sym))
- sym
- (save-match-data
- (when (and str (string-match "\\`\\W*\\(.*?\\)\\W*\\'" str))
- (setq sym (intern-soft (match-string 1 str)))
- (and (fboundp sym) sym)))))))
+ (with-syntax-table emacs-lisp-mode-syntax-table
+ (or (condition-case ()
+ (save-excursion
+ (or (not (zerop (skip-syntax-backward "_w")))
+ (eq (char-syntax (following-char)) ?w)
+ (eq (char-syntax (following-char)) ?_)
+ (forward-sexp -1))
+ (skip-chars-forward "'")
+ (let ((obj (read (current-buffer))))
+ (and (symbolp obj) (fboundp obj) obj)))
+ (error nil))
+ (condition-case ()
+ (save-excursion
+ (save-restriction
+ (narrow-to-region (max (point-min)
+ (- (point) 1000)) (point-max))
+ ;; Move up to surrounding paren, then after the open.
+ (backward-up-list 1)
+ (forward-char 1)
+ ;; If there is space here, this is probably something
+ ;; other than a real Lisp function call, so ignore it.
+ (if (looking-at "[ \t]")
+ (error "Probably not a Lisp function call"))
+ (let ((obj (read (current-buffer))))
+ (and (symbolp obj) (fboundp obj) obj))))
+ (error nil))
+ (let* ((str (find-tag-default))
+ (sym (if str (intern-soft str))))
+ (if (and sym (fboundp sym))
+ sym
+ (save-match-data
+ (when (and str (string-match "\\`\\W*\\(.*?\\)\\W*\\'" str))
+ (setq sym (intern-soft (match-string 1 str)))
+ (and (fboundp sym) sym))))))))
;;; `User' help functions