[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: patches for etags and shell-command
From: |
John Williams |
Subject: |
Re: patches for etags and shell-command |
Date: |
Sun, 19 Feb 2006 15:48:20 -0600 |
User-agent: |
Debian Thunderbird 1.0.7 (X11/20051017) |
Francesco,
I've updated my version of tags-completion-table so it contains the same
amount of comments as the original, and I replaced the message I had
accidentally removed. My tests indicate that recursing into the
included tags tables is not necessary because (while
(visit-tags-table-buffer (and combined-table t)) ...) visits the
included tags tables in addition to those the user has specifically visited.
(defun tags-completion-table ()
(or tags-completion-table
;; No cached value for this buffer.
(condition-case ()
(let (current-table combined-table)
(message "Making tags completion table for %s..."
buffer-file-name)
(save-excursion
;; Iterate over all tags buffers.
(while (visit-tags-table-buffer (and combined-table t))
;; Find possible completions in this buffer.
(setq current-table (funcall
tags-completion-table-function))
;; Merge this buffer's comletions 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)))))
P.S. Sorry about the overly aggressive spam filtering; I've updated by
settings so you shouldn't get any more bounces from me.
jw
Richard M. Stallman wrote:
>In case you don't receive his mail.
>
>------- Start of forwarded message -------
>From: Francesco Potorti` <address@hidden>
>To: John Williams <address@hidden>
>In-reply-to: <address@hidden> (address@hidden)
>Organization:
>Date: Wed, 15 Feb 2006 19:08:01 +0100
>Cc: address@hidden
>Subject: Re: patches for etags and shell-command
>
>John, I tried to follow up on your patch to etags.el, but apparently
>your mail server bounces mail coming from *.it!
>
>Anyway, you should get this one via the list.
>
>I was examining the patch you proposed (see below), which is intended to
>correctly implement Emacs' behaviour as documented in the manual, in the
>Select Tags Table node. However it has three problems:
>- - it removes the starting message
>- - it removes helpful comments
>- - most importantly, it does not recursively descend into the tree of
> included tags tables
>
>Would you please resubmit a patch that corrects these problems?
>
>
>
>>This patch corrects a bug in etags that causes completion to only consider
>>the
>>tags in a single TAGS buffer. With the match tag completion will consider
>>tags
>>
>>
>>from all the active TAGS buffers. (The diff is a bit longer than it really
>
>
>>needs to be because I inadvertently changed tabs to spaces--I didn't change
>>back
>>to tabs because spaces appear to be the preferred from of indentation based
>>on
>>emacs's default settings.)
>>
>>--- etags.el 2006-01-20 09:53:43.000000000 -0600
>>+++ etags-1.el 2006-01-20 10:14:31.000000000 -0600
>>@@ -747,28 +747,21 @@
>> (defun tags-completion-table ()
>> (or tags-completion-table
>> (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))
>>- (quit (message "Tags completion table construction aborted.")
>>- (setq tags-completion-table nil)))))
>>+ (let (combined-table)
>>+ (save-excursion
>>+ (while (visit-tags-table-buffer (and combined-table t))
>>+ (let ((included (tags-included-tables))
>>+ (table (funcall tags-completion-table-function)))
>>+ (if (null combined-table)
>>+ (setq combined-table table)
>>+ (mapatoms (lambda (sym)
>>+ (intern (symbol-name sym) combined-table))
>>+ table))
>>+ (message "Making tags completion table for %s...done"
>>+ buffer-file-name))))
>>+ (setq tags-completion-table combined-table))
>>+ (quit (message "Tags completion table construction aborted.")
>>+ (setq tags-completion-table nil)))))
>>
>> ;; Completion function for tags. Does normal try-completion,
>> ;; but builds tags-completion-table on demand.
>>