From 8c0bf8b395e28e31e921b6b741c35cd59048f989 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 30 Apr 2010 21:08:43 -0400 Subject: [PATCH] * minibuffer.el (tags-completion-at-point-function): Move to etags.el. * progmodes/etags.el (tags-completion-at-point-function): Remove left over interactive spec. Add autoloading stub. (complete-tag): Use tags-completion-at-point-function. --- lisp/ChangeLog | 7 +++++++ lisp/minibuffer.el | 21 ------------------- lisp/progmodes/etags.el | 46 +++++++++++++++++++++++++++-------------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ec929a7c58d..46561200668 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2010-05-01 Stefan Monnier + + * minibuffer.el (tags-completion-at-point-function): Move to etags.el. + * progmodes/etags.el (tags-completion-at-point-function): + Remove left over interactive spec. Add autoloading stub. + (complete-tag): Use tags-completion-at-point-function. + 2010-04-30 Chong Yidong * minibuffer.el (tags-completion-at-point-function): Fix return diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index be9b9a524fe..d8f1f0a8e9d 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1169,27 +1169,6 @@ Currently supported properties are: `:predicate' a predicate that completion candidates need to satisfy. `:annotation-function' the value to use for `completion-annotate-function'.") -(declare-function tags-lazy-completion-table "etags.el" ()) -(defun tags-completion-at-point-function () - "Using tags, return a completion table for the text around point. -If no tags table is loaded, do nothing and return nil." - (interactive) - (when (or tags-table-list tags-file-name) - (require 'etags) - (let ((completion-ignore-case (if (memq tags-case-fold-search '(t nil)) - tags-case-fold-search - case-fold-search)) - (pattern (funcall (or find-tag-default-function - (get major-mode 'find-tag-default-function) - 'find-tag-default))) - beg) - (when pattern - (save-excursion - (search-backward pattern) - (setq beg (point)) - (forward-char (length pattern)) - (list beg (point) (tags-lazy-completion-table))))))) - (defun complete-symbol (&optional arg) "Perform completion on the text around point. The completion method is determined by `completion-at-point-functions'. diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index 23e175cbe7d..4f0fcd77ab5 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -423,9 +423,9 @@ Returns non-nil if it is a valid table." (if (get-file-buffer file) ;; The file is already in a buffer. Check for the visited file ;; having changed since we last used it. - (let (win) + (progn (set-buffer (get-file-buffer file)) - (setq win (or verify-tags-table-function (tags-table-mode))) + (or verify-tags-table-function (tags-table-mode)) (if (or (verify-visited-file-modtime (current-buffer)) ;; Decide whether to revert the file. ;; revert-without-query can say to revert @@ -787,6 +787,30 @@ tags table and its (recursively) included tags tables." (let ((enable-recursive-minibuffers t)) (visit-tags-table-buffer)) (complete-with-action action (tags-completion-table) string pred)))))) + +;;;###autoload (defun tags-completion-at-point-function () +;;;###autoload (if (or tags-table-list tags-file-name) +;;;###autoload (progn +;;;###autoload (load "etags") +;;;###autoload (tags-completion-at-point-function)))) + +(defun tags-completion-at-point-function () + "Using tags, return a completion table for the text around point. +If no tags table is loaded, do nothing and return nil." + (when (or tags-table-list tags-file-name) + (let ((completion-ignore-case (if (memq tags-case-fold-search '(t nil)) + tags-case-fold-search + case-fold-search)) + (pattern (funcall (or find-tag-default-function + (get major-mode 'find-tag-default-function) + 'find-tag-default))) + beg) + (when pattern + (save-excursion + (search-backward pattern) ;FIXME: will fail if we're inside pattern. + (setq beg (point)) + (forward-char (length pattern)) + (list beg (point) (tags-lazy-completion-table))))))) (defun find-tag-tag (string) "Read a tag name, with defaulting and completion." @@ -2039,20 +2063,10 @@ for \\[find-tag] (which see)." (error "%s" (substitute-command-keys "No tags table loaded; try \\[visit-tags-table]"))) - (let ((completion-ignore-case (if (memq tags-case-fold-search '(t nil)) - tags-case-fold-search - case-fold-search)) - (pattern (funcall (or find-tag-default-function - (get major-mode 'find-tag-default-function) - 'find-tag-default))) - (comp-table (tags-lazy-completion-table)) - beg) - (or pattern - (error "Nothing to complete")) - (search-backward pattern) - (setq beg (point)) - (forward-char (length pattern)) - (completion-in-region beg (point) comp-table))) + (let ((comp-data (tags-completion-at-point-function))) + (if (null comp-data) + (error "Nothing to complete") + (apply 'completion-in-region comp-data)))) (dolist (x '("^No tags table in use; use .* to select one$" "^There is no default tag$" -- 2.39.2