emacs-devel
[Top][All Lists]
Advanced

[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.
>>
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]