From 9db3bfaeaf0fb657f5caffd1d5e1977e432f5555 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sat, 26 Jan 2008 17:07:59 +0000 Subject: [PATCH] (find-tag-default): Simplify using exclusively skip-syntax-backward/-forward. --- lisp/ChangeLog | 5 +++++ lisp/subr.el | 43 +++++++++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0673f5cb357..0b0a7dca4de 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2008-01-26 Martin Rudalics + + * subr.el (find-tag-default): Simplify using exclusively + skip-syntax-backward/-forward. + 2008-01-26 Michael Albinus * vc.el (vc-directory, vc-update-change-log): Remove check for diff --git a/lisp/subr.el b/lisp/subr.el index 5a7f88f76dd..f3579cc1fa6 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2127,26 +2127,29 @@ Note that this should end with a directory separator.") (defun find-tag-default () "Determine default tag to search for, based on text at point. If there is no plausible default, return nil." - (save-excursion - (while (looking-at "\\sw\\|\\s_") - (forward-char 1)) - (if (or (re-search-backward "\\sw\\|\\s_" - (save-excursion (beginning-of-line) (point)) - t) - (re-search-forward "\\(\\sw\\|\\s_\\)+" - (save-excursion (end-of-line) (point)) - t)) - (progn - (goto-char (match-end 0)) - (condition-case nil - (buffer-substring-no-properties - (point) - (progn (forward-sexp -1) - (while (looking-at "\\s'") - (forward-char 1)) - (point))) - (error nil))) - nil))) + (let (from to bound) + (when (or (progn + ;; Look at text around `point'. + (save-excursion + (skip-syntax-backward "w_") (setq from (point))) + (save-excursion + (skip-syntax-forward "w_") (setq to (point))) + (> to from)) + ;; Look between `line-beginning-position' and `point'. + (save-excursion + (and (setq bound (line-beginning-position)) + (skip-syntax-backward "^w_" bound) + (> (setq to (point)) bound) + (skip-syntax-backward "w_") + (setq from (point)))) + ;; Look between `point' and `line-end-position'. + (save-excursion + (and (setq bound (line-end-position)) + (skip-syntax-forward "^w_" bound) + (< (setq from (point)) bound) + (skip-syntax-forward "w_") + (setq to (point))))) + (buffer-substring-no-properties from to)))) (defun play-sound (sound) "SOUND is a list of the form `(sound KEYWORD VALUE...)'. -- 2.11.4.GIT