Mercurial > emacs
changeset 69148:ed7ce86c68db
(tags-completion-table): Do completion from all the tables in the
current list, as documented in the manual.
author | Francesco Potortì <pot@gnu.org> |
---|---|
date | Sat, 25 Feb 2006 01:48:09 +0000 |
parents | fd2452e681b8 |
children | b5043066337b |
files | lisp/progmodes/etags.el |
diffstat | 1 files changed, 18 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/etags.el Sat Feb 25 01:47:29 2006 +0000 +++ b/lisp/progmodes/etags.el Sat Feb 25 01:48:09 2006 +0000 @@ -746,27 +746,25 @@ ;; their tags included in the completion table. (defun tags-completion-table () (or tags-completion-table + ;; No cached value for this buffer. (condition-case () - (prog2 - (message "Making tags completion table for %s..." buffer-file-name) - (let ((included (tags-included-tables)) - (table (funcall tags-completion-table-function))) - (save-excursion - ;; Iterate over the list of included tables, and combine each - ;; included table's completion obarray to the parent obarray. - (while included - ;; Visit the buffer. - (let ((tags-file-name (car included))) - (visit-tags-table-buffer 'same)) - ;; Recurse in that buffer to compute its completion table. - (if (tags-completion-table) - ;; Combine the tables. - (mapatoms (lambda (sym) (intern (symbol-name sym) table)) - tags-completion-table)) - (setq included (cdr included)))) - (setq tags-completion-table table)) - (message "Making tags completion table for %s...done" - buffer-file-name)) + (let (current-table combined-table) + (message "Making tags completion table for %s..." buffer-file-name) + (save-excursion + ;; Iterate over the current list of tags tables. + (while (visit-tags-table-buffer (and combined-table t)) + ;; Find possible completions in this table. + (setq current-table (funcall tags-completion-table-function)) + ;; Merge this buffer's completions into the combined table. + (if combined-table + (mapatoms + (lambda (sym) (intern (symbol-name sym) combined-table)) + current-table) + (setq combined-table current-table)))) + (message "Making tags completion table for %s...done" + buffer-file-name) + ;; Cache the result a buffer-local variable. + (setq tags-completion-table combined-table)) (quit (message "Tags completion table construction aborted.") (setq tags-completion-table nil)))))