[Top][All Lists]

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

enable mouse-2 in tags-select-tags-table

From: Masatake YAMATO
Subject: enable mouse-2 in tags-select-tags-table
Date: Sun, 06 Apr 2003 04:32:16 +0900 (JST)

With attached patch, you can select a tags table with
mouse-2(and/or C-m).

I hope many part of etags.el is now overhauled.

Masatake YAMATO
P.S. I got a CVS write access. So if my patch passes your 
review, I can install it by myself.

2003-04-06  Masatake YAMATO  <address@hidden>

        * progmodes/etags.el (select-tags-table-mode-map): 
        Don't create new keymap. Instead copy from button-buffer-map.
        Bind push-button to `t' instead of binding
        select-tags-table-select directly
        * (tags-select-tags-table): New button.

        * progmodes/etags.el (select-tags-table): Put
        a button for each selections.

Warning: Remote host denied X11 forwarding.
Index: lisp/progmodes/etags.el
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/etags.el,v
retrieving revision 1.174
diff -u -r1.174 etags.el
--- lisp/progmodes/etags.el     5 Apr 2003 18:19:30 -0000       1.174
+++ lisp/progmodes/etags.el     5 Apr 2003 19:22:40 -0000
@@ -1890,6 +1890,10 @@
 ;; XXX Kludge interface.
+(define-button-type 'tags-select-tags-table
+  'action (lambda (button) (select-tags-table-select))
+  'hel-echo "RET, t or mouse-2: select tags table")
 ;; XXX If a file is in multiple tables, selection may get the wrong one.
 (defun select-tags-table ()
@@ -1901,16 +1905,21 @@
   (setq buffer-read-only nil)
   (let ((set-list tags-table-set-list)
-       (desired-point nil))
+       (desired-point nil)
+       b)
     (when tags-table-list
          (setq desired-point (point-marker))
+         (setq b (point))
          (princ tags-table-list (current-buffer))
+         (make-text-button b (point) 'type 'tags-select-tags-table)
          (insert "\C-m")
          (prin1 (car tags-table-list) (current-buffer)) ;invisible
       (insert "\n"))
     (while set-list
       (unless (eq (car set-list) tags-table-list)
+       (setq b (point))
        (princ (car set-list) (current-buffer))
+       (make-text-button b (point) 'type 'tags-select-tags-table)
        (insert "\C-m")
        (prin1 (car (car set-list)) (current-buffer)) ;invisible
        (insert "\n"))
@@ -1918,7 +1927,10 @@
     (when tags-file-name
          (or desired-point
              (setq desired-point (point-marker)))
-         (insert tags-file-name "\C-m")
+         (setq b (point))
+         (insert tags-file-name)
+         (make-text-button b (point) 'type 'tags-select-tags-table)
+         (insert "\C-m")
          (prin1 tags-file-name (current-buffer)) ;invisible
       (insert "\n"))
     (setq set-list (delete tags-file-name
@@ -1926,7 +1938,10 @@
                                               (mapcar 'copy-sequence
     (while set-list
-      (insert (car set-list) "\C-m")
+      (setq b (point))
+      (insert (car set-list))
+      (make-text-button b (point) 'type 'tags-select-tags-table)
+      (insert "\C-m")
       (prin1 (car set-list) (current-buffer)) ;invisible
       (insert "\n")
       (setq set-list (delete (car set-list) set-list)))
@@ -1939,15 +1954,15 @@
   (set-buffer-modified-p nil)
-(defvar select-tags-table-mode-map)
-(let ((map (make-sparse-keymap)))
-  (define-key map "t" 'select-tags-table-select)
-  (define-key map " " 'next-line)
-  (define-key map "\^?" 'previous-line)
-  (define-key map "n" 'next-line)
-  (define-key map "p" 'previous-line)
-  (define-key map "q" 'select-tags-table-quit)
-  (setq select-tags-table-mode-map map))
+(defvar select-tags-table-mode-map
+  (let ((map (copy-keymap button-buffer-map)))
+    (define-key map "t" 'push-button)
+    (define-key map " " 'next-line)
+    (define-key map "\^?" 'previous-line)
+    (define-key map "n" 'next-line)
+    (define-key map "p" 'previous-line)
+    (define-key map "q" 'select-tags-table-quit)
+    map))
 (defun select-tags-table-mode ()
   "Major mode for choosing a current tags table among those already loaded.

reply via email to

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