1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-01 11:14:55 +00:00

Fix last change.

* emacs-lisp/lisp-mode.el (lisp-current-defun-name):
* progmodes/m4-mode.el (m4-current-defun-name):
* progmodes/perl-mode.el (perl-current-defun-name):
* textmodes/tex-mode.el (tex-current-defun-name):
* textmodes/texinfo.el (texinfo-current-defun-name): Use save-excursion.
This commit is contained in:
Chong Yidong 2012-12-01 13:09:12 +08:00
parent ba03d0d932
commit 9dffb5b693
6 changed files with 45 additions and 38 deletions

View File

@ -240,28 +240,29 @@ font-lock keywords will not be case sensitive."
(defun lisp-current-defun-name ()
"Return the name of the defun at point, or nil."
(let ((location (point)))
;; If we are now precisely at the beginning of a defun, make sure
;; beginning-of-defun finds that one rather than the previous one.
(or (eobp) (forward-char 1))
(beginning-of-defun)
;; Make sure we are really inside the defun found, not after it.
(when (and (looking-at "\\s(")
(progn (end-of-defun)
(< location (point)))
(progn (forward-sexp -1)
(>= location (point))))
(if (looking-at "\\s(")
(forward-char 1))
;; Skip the defining construct name, typically "defun" or
;; "defvar".
(forward-sexp 1)
;; The second element is usually a symbol being defined. If it
;; is not, use the first symbol in it.
(skip-chars-forward " \t\n'(")
(buffer-substring-no-properties (point)
(progn (forward-sexp 1)
(point))))))
(save-excursion
(let ((location (point)))
;; If we are now precisely at the beginning of a defun, make sure
;; beginning-of-defun finds that one rather than the previous one.
(or (eobp) (forward-char 1))
(beginning-of-defun)
;; Make sure we are really inside the defun found, not after it.
(when (and (looking-at "\\s(")
(progn (end-of-defun)
(< location (point)))
(progn (forward-sexp -1)
(>= location (point))))
(if (looking-at "\\s(")
(forward-char 1))
;; Skip the defining construct name, typically "defun" or
;; "defvar".
(forward-sexp 1)
;; The second element is usually a symbol being defined. If it
;; is not, use the first symbol in it.
(skip-chars-forward " \t\n'(")
(buffer-substring-no-properties (point)
(progn (forward-sexp 1)
(point)))))))
(defvar lisp-mode-shared-map
(let ((map (make-sparse-keymap)))

View File

@ -1745,8 +1745,9 @@ or as help on variables `cperl-tips', `cperl-problems',
(make-local-variable 'add-log-current-defun-function)
(setq add-log-current-defun-function
(lambda ()
(if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
(match-string-no-properties 1))))
(save-excursion
(if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
(match-string-no-properties 1)))))
(make-local-variable 'paragraph-start)
(setq paragraph-start (concat "^$\\|" page-delimiter))

View File

@ -143,9 +143,10 @@
(defun m4-current-defun-name ()
"Return the name of the M4 function at point, or nil."
(if (re-search-backward
"^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
(match-string-no-properties 3)))
(save-excursion
(if (re-search-backward
"^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
(match-string-no-properties 3))))
;;;###autoload
(define-derived-mode m4-mode prog-mode "m4"

View File

@ -581,8 +581,10 @@ create a new comment."
(defun perl-current-defun-name ()
"The `add-log-current-defun' function in Perl mode."
(if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
(match-string-no-properties 1)))
(save-excursion
(if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
(match-string-no-properties 1))))
(defvar perl-mode-hook nil
"Normal hook to run when entering Perl mode.")

View File

@ -424,13 +424,14 @@ An alternative value is \" . \", if you use a font with a narrow period."
(defun tex-current-defun-name ()
"Return the name of the TeX section/paragraph/chapter at point, or nil."
(when (re-search-backward
"\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
nil t)
(goto-char (match-beginning 0))
(buffer-substring-no-properties
(1+ (point)) ; without initial backslash
(line-end-position))))
(save-excursion
(when (re-search-backward
"\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
nil t)
(goto-char (match-beginning 0))
(buffer-substring-no-properties
(1+ (point)) ; without initial backslash
(line-end-position)))))
;;;;
;;;; Font-Lock support

View File

@ -513,8 +513,9 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
(defun texinfo-current-defun-name ()
"Return the name of the Texinfo node at point, or nil."
(if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
(match-string-no-properties 1)))
(save-excursion
(if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
(match-string-no-properties 1))))
;;; Texinfo mode