emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

patches for etags and shell-command


From: John Williams
Subject: patches for etags and shell-command
Date: Fri, 20 Jan 2006 10:29:40 -0600
User-agent: Thunderbird 1.5 (X11/20051201)

Hello everyone,

This if my first post to emacs-devel, so feel free to correct my etiquette :)

I have two patches today; the first one changes shell-command so that the default interactive argument is the current buffer's filename. This is inspired by vim, where a '%' character in a command expands to the current buffer's filename.

--- simple.el   2006-01-20 09:52:46.000000000 -0600
+++ simple-1.el 2006-01-20 10:08:41.000000000 -0600
@@ -1797,8 +1797,12 @@
 In an interactive call, the variable `shell-command-default-error-buffer'
 specifies the value of ERROR-BUFFER."

-  (interactive (list (read-from-minibuffer "Shell command: "
-                                          nil nil nil 'shell-command-history)
+  (interactive (list (read-from-minibuffer
+                      "Shell command: "
+                      nil nil nil
+                      'shell-command-history
+                      (and (buffer-file-name)
+                           (file-relative-name (buffer-file-name))))
                     current-prefix-arg
                     shell-command-default-error-buffer))
   ;; Look for a handler in case default-directory is a remote file name.

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]