]> git.eshelyaron.com Git - emacs.git/commitdiff
(function-called-at-point): Try `find-tag-default' when other methods failed.
authorJuri Linkov <juri@jurta.org>
Thu, 2 Sep 2004 16:37:01 +0000 (16:37 +0000)
committerJuri Linkov <juri@jurta.org>
Thu, 2 Sep 2004 16:37:01 +0000 (16:37 +0000)
lisp/help.el

index 52a772779a5d1a03628e1115067d4b61acfc9e97..bf0df4358a7e07a6701e259197e557150491da7d 100644 (file)
@@ -237,32 +237,35 @@ C-w Display 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."
-  (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)))))
+  (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))
+            (obj (if str (read str))))
+       (and (symbolp obj) (fboundp obj) obj))))
 
 \f
 ;;; `User' help functions