annotate lisp/efs/dired-xemacs.el @ 98:0d2f883870bc r20-1b1

Import from CVS: tag r20-1b1
author cvs
date Mon, 13 Aug 2007 09:13:56 +0200
parents 8fc7fe29b841
children 4103f0995bd7 4be1180a9e89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
2 ;;
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
3 ;; File: dired-xemacs.el
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
4 ;; Dired Version: $Revision: 1.1 $
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
5 ;; RCS:
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
6 ;; Description: dired functions for XEmacs
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
7 ;; Author: Mike Sperber <sperber@informatik.uni-tuebingen.de>
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
8 ;;
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
10
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
11 (provide 'dired-xemacs)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
12 (require 'dired)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
13
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
14 (require 'backquote)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
15
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
16 ;;; Variables
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
17
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
18 ;; kludge
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
19 (defun dired-demarkify-regexp (re)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
20 (if (string-equal (substring re 0 (length dired-re-maybe-mark))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
21 dired-re-maybe-mark)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
22 (concat "^" (substring re
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
23 (length dired-re-maybe-mark)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
24 (length re)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
25 re))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
26
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
27 (defvar dired-do-highlighting t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
28 "Set if we should use highlighting according to filetype.")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
29
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
30 (defvar dired-do-interactive-permissions t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
31 "Set if we should allow interactive chmod.")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
32
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
33 (defvar dired-re-raw-dir (dired-demarkify-regexp dired-re-dir))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
34 (defvar dired-re-raw-sym (dired-demarkify-regexp dired-re-sym))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
35 (defvar dired-re-raw-exe (dired-demarkify-regexp dired-re-exe))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
36
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
37 (defvar dired-re-raw-boring (dired-omit-regexp)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
38 "Regexp to match backup, autosave and otherwise boring files.")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
39
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
40 (defvar dired-re-raw-socket (concat "^" dired-re-inode-size "s"))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
41
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
42 (defvar dired-re-raw-setuid
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
43 (concat "^" dired-re-inode-size
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
44 "-[-r][-w][Ss][-r][-w][sx][-r][-w][xst]")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
45 "setuid plain file (even if not executable)")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
46
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
47 (defvar dired-re-raw-setgid
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
48 (concat "^" dired-re-inode-size
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
49 "-[-r][-w][-x][-r][-w][Ss][-r][-w][xst]")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
50 "setgid plain file (even if not executable)")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
51
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
52 (defvar dired-re-pre-permissions "^.? ?[0-9 ]*[-d]"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
53 "Regexp matching the preamble to file permissions part of a dired line.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
54 This shouldn't match socket or symbolic link lines (which aren't editable).")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
55
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
56 (defvar dired-re-permissions "[-r][-w][-Ssx][-r][-w][-sx][-r][-w][-xst]"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
57 "Regexp matching the file permissions part of a dired line.")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
58
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
59 ;;; Setup
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
60
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
61 (setq dired-modeline-tracking-cmds '(mouse-track))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
62
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
63 ;;; Make needed faces if the user hasn't already done so.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
64 ;;; Respect X resources (`make-face' uses them when they exist).
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
65
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
66 (let ((change-it
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
67 (function (lambda (face)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
68 (or (if (fboundp 'facep)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
69 (facep face)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
70 (memq face (face-list)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
71 (make-face face))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
72 (not (face-differs-from-default-p face))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
73
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
74 (if (funcall change-it 'dired-face-marked)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
75 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
76 (set-face-background 'dired-face-marked "PaleVioletRed"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
77 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
78 (set-face-underline-p 'dired-face-marked t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
79 'global '(mono) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
80 (set-face-underline-p 'dired-face-marked t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
81 'global '(grayscale) 'append)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
82 (if (funcall change-it 'dired-face-deleted)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
83 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
84 (set-face-background 'dired-face-deleted "LightSlateGray"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
85 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
86 (set-face-underline-p 'dired-face-deleted t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
87 'global '(mono) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
88 (set-face-underline-p 'dired-face-deleted t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
89 'global '(grayscale) 'append)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
90 (if (funcall change-it 'dired-face-directory)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
91 (make-face-bold 'dired-face-directory))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
92 (if (funcall change-it 'dired-face-executable)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
93 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
94 (set-face-foreground 'dired-face-executable "SeaGreen"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
95 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
96 (make-face-bold 'dired-face-executable)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
97 (if (funcall change-it 'dired-face-setuid)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
98 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
99 (set-face-foreground 'dired-face-setuid "Red"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
100 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
101 (make-face-bold 'dired-face-setuid)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
102 (if (funcall change-it 'dired-face-socket)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
103 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
104 (set-face-foreground 'dired-face-socket "Gold"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
105 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
106 (make-face-italic 'dired-face-socket)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
107 (if (funcall change-it 'dired-face-symlink)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
108 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
109 (set-face-foreground 'dired-face-symlink "MediumBlue"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
110 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
111 (make-face-bold 'dired-face-symlink)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
112
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
113 (if (funcall change-it 'dired-face-boring)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
114 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
115 (set-face-foreground 'dired-face-boring "Grey"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
116 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
117 (set-face-background-pixmap
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
118 'dired-face-boring
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
119 [xbm :data (32 2 "\125\125\125\125\252\252\252\252")]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
120 'global '(mono) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
121 (set-face-background-pixmap
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
122 'dired-face-boring
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
123 [xbm :data (32 2 "\125\125\125\125\252\252\252\252")]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
124 'global '(grayscale) 'append)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
125 (if (funcall change-it 'dired-face-permissions)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
126 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
127 (set-face-foreground 'dired-face-permissions "MediumOrchid"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
128 'global '(color) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
129 (set-face-underline-p 'dired-face-deleted t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
130 'global '(mono) 'append)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
131 (set-face-underline-p 'dired-face-deleted t
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
132 'global '(grayscale) 'append))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
133
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
134 ;;; Menus
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
135
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
136 (defvar dired-subdir-menu nil "The Subdir menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
137 (defvar dired-mark-menu nil "The Mark menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
138 (defvar dired-do-menu nil "The Do menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
139 (defvar dired-regexp-menu nil "The Regexp menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
140 (defvar dired-look-menu nil "The Look menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
141 (defvar dired-sort-menu nil "The Sort menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
142 (defvar dired-help-menu nil "The Help menu for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
143
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
144 (defvar dired-menubar-menus
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
145 '(("Subdir" . dired-subdir-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
146 ("Mark" . dired-mark-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
147 ("Do" . dired-do-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
148 ("Regexp" . dired-regexp-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
149 ("Look" . dired-look-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
150 ("Sort" . dired-sort-menu))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
151 "All the dired menus.")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
152
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
153 (defvar dired-visit-popup-menu nil "The Visit popup for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
154 (defvar dired-do-popup-menu nil "The Do popup for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
155
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
156 (defun dired-setup-menus ()
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
157 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
158 dired-visit-popup-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
159 '(["Find File" dired-find-file t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
160 ["Find in Other Window" dired-find-file-other-window t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
161 ["Find in Other Frame" dired-find-file-other-frame t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
162 ["View File" dired-view-file t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
163 ["Display in Other Window" dired-find-file-other-window t]))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
164
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
165 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
166 dired-do-popup-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
167 '(["Copy to..." dired-do-copy t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
168 ["Rename to..." dired-do-rename t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
169 ["Compress/Uncompress" dired-do-compress t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
170 ["Uuencode/Uudecode" dired-do-uucode t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
171 ["Change Mode..." dired-do-chmod t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
172 ["Change Owner..." dired-do-chown t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
173 ["Change Group..." dired-do-chgrp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
174 ["Load" dired-do-load t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
175 ["Byte-compile" dired-do-byte-compile t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
176 ["Hardlink to..." dired-do-hardlink t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
177 ["Symlink to..." dired-do-symlink t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
178 ["Shell Command..." dired-do-shell-command t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
179 ["Background Shell Command..." dired-do-background-shell-command t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
180 ["Delete" dired-do-delete t]))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
181
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
182 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
183 dired-subdir-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
184 (list
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
185 ["Next Subdir" dired-next-subdir t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
186 ["Prev Subdir" dired-prev-subdir t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
187 ["Next Dirline" dired-next-dirline t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
188 ["Prev Dirline" dired-prev-dirline t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
189 ["Up Dir" dired-up-directory t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
190 ["Down Dir" dired-down-directory t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
191 ["Insert This Subdir" dired-maybe-insert-subdir t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
192 ["Create Directory..." dired-create-directory t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
193 ["Kill This Subdir" dired-kill-subdir t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
194 "-- Commands on All Files in Subdir --"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
195 ["Redisplay Subdir" dired-redisplay-subdir t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
196 ["Mark Files" dired-mark-subdir-files t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
197 ["Flag Files for Deletion" dired-flag-subdir-files t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
198 ["Compress Uncompressed Files" dired-compress-subdir-files t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
199 (vector "Uncompress Compressed Files"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
200 '(let ((current-prefix-arg t))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
201 (dired-compress-subdir-files))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
202 ':keys (dired-key-description 'dired-compress-subdir-files
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
203 'universal-argument))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
204
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
205 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
206 dired-mark-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
207 (list
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
208 ["Next Marked" dired-next-marked-file t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
209 ["Previous Marked" dired-prev-marked-file t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
210 ["Change Marks..." dired-change-marks t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
211 ["Unmark All" dired-unmark-all-files t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
212 (vector "Toggle marks..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
213 '(let ((current-prefix-arg t))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
214 (call-interactively 'dired-change-marks))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
215 ':keys (dired-key-description 'dired-change-marks
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
216 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
217 ["Mark Symlinks" dired-mark-symlinks t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
218 ["Mark Directories" dired-mark-directories t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
219 ["Mark Old Backups" dired-clean-directory t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
220 ["Mark Executables" dired-mark-executables t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
221 ["Flag Backup Files" dired-flag-backup-files t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
222 ["Flag Auto-save Files" dired-flag-auto-save-files t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
223 ["Set new marker char" dired-set-marker-char t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
224 ["Restore marker char" dired-restore-marker-char t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
225 ["Marker stack left" dired-marker-stack-left t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
226 ["Marker stack right" dired-marker-stack-right t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
227 "---"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
228 ["Mark Files from Other Dired" dired-mark-files-from-other-dired-buffer t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
229 ["Mark Files from Compile Buffer..." dired-mark-files-compilation-buffer t]))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
230
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
231 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
232 dired-do-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
233 '(["Copy to..." dired-do-copy t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
234 ["Rename to..." dired-do-rename t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
235 ["Expunge File Flagged for Deletion" dired-expunge-deletions t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
236 ["Compress/Uncompress" dired-do-compress t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
237 ["Uuencode/Uudecode" dired-do-uucode t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
238 ["Print..." dired-do-print t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
239 ["Change Mode..." dired-do-interactive-chmod t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
240 ["Change Owner..." dired-do-chown t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
241 ["Change Group..." dired-do-chgrp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
242 ["Byte-compile" dired-do-byte-compile t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
243 ["Hardlink to..." dired-do-hardlink t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
244 ["Symlink to..." dired-do-symlink t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
245 ["Shell Command..." dired-do-shell-command t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
246 ["Background Shell Command..." dired-do-background-shell-command t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
247 ["Delete Marked Files" dired-do-delete t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
248 ["Visit file menu >" dired-visit-popup-menu-internal t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
249 ["Operate on file menu >" dired-do-popup-menu-internal t]))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
250
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
251 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
252 dired-regexp-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
253 (list
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
254 ["Mark..." dired-mark-files-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
255 ["Mark Files with Extension..." dired-mark-extension t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
256 ["Flag..." dired-flag-files-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
257 ["Flag Files with Extension..." dired-flag-extension t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
258 ["Downcase" dired-downcase t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
259 ["Upcase" dired-upcase t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
260 ["Copy..." dired-do-copy-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
261 ["Rename..." dired-do-rename-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
262 ["Hardlink..." dired-do-hardlink-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
263 ["Symlink..." dired-do-symlink-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
264 ["Relative Symlink..." dired-do-relsymlink-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
265 "---"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
266 ["Add Omit Regex..." dired-add-omit-regexp t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
267 (vector "Remove Omit Regex..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
268 '(let ((current-prefix-arg 1))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
269 (call-interactively 'dired-add-omit-regexp))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
270 ':keys (dired-key-description 'dired-add-omit-regexp 1))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
271 (vector "Add Omit Extension..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
272 '(let ((current-prefix-arg '(4)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
273 (call-interactively 'dired-add-omit-regexp))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
274 ':keys (dired-key-description 'dired-add-omit-regexp 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
275 (vector "Remove Omit Extension..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
276 '(let ((current-prefix-arg '(16)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
277 (call-interactively 'dired-add-omit-regexp))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
278 ':keys (dired-key-description 'dired-add-omit-regexp
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
279 'universal-argument 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
280 (vector "Show Omit Regex"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
281 '(let ((current-prefix-arg 0))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
282 (call-interactively 'dired-add-omit-regexp))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
283 ':keys (dired-key-description 'dired-add-omit-regexp 0))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
284
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
285 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
286 dired-look-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
287 '(["Grep for..." dired-do-grep t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
288 ["Tags Search for..." dired-do-tags-search t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
289 ["Tags Query Replace..." dired-do-tags-query-replace t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
290 "---"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
291 ["Diff File..." dired-diff t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
292 ["Diff with Backup" dired-backup-diff t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
293 ["Merge Files..." dired-emerge t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
294 ["Merge Files Having Common Ancestor..." dired-emerge-with-ancestor t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
295 ["Ediff Files..." dired-ediff t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
296 ["Patch File" dired-epatch t]))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
297
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
298 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
299 dired-sort-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
300 (list
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
301 ["Toggle Current Subdir by Name/Date" dired-sort-toggle-or-edit t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
302 (vector "Show Current Switches"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
303 '(dired-sort-toggle-or-edit 0)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
304 ':keys (dired-key-description 'dired-sort-toggle-or-edit 0))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
305 (vector "Edit Switches for Current Subdir..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
306 '(dired-sort-toggle-or-edit 1)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
307 ':keys (dired-key-description 'dired-sort-toggle-or-edit 1))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
308 (vector "Edit Default Switches for Inserted Subdirs..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
309 '(dired-sort-toggle-or-edit 2)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
310 ':keys (dired-key-description 'dired-sort-toggle-or-edit 2))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
311 (vector "Sort Entire Buffer by Date"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
312 '(dired-sort-toggle-or-edit 'date)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
313 ':keys (dired-key-description 'dired-sort-toggle-or-edit
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
314 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
315 (vector "Sort Entire Buffer by Name"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
316 '(dired-sort-toggle-or-edit 'name)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
317 ':keys (dired-key-description 'dired-sort-toggle-or-edit
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
318 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
319 (vector "Edit Switches for Entire Buffer..."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
320 '(dired-sort-toggle-or-edit '(16))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
321 ':keys (dired-key-description 'dired-sort-toggle-or-edit
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
322 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
323 "---"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
324 ["Hide All Subdirs" dired-hide-all t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
325 ["Hide Subdir" dired-hide-subdir t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
326 ["Toggle Omit" dired-omit-toggle t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
327 ["Kill Marked Lines" dired-do-kill-file-lines t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
328 (vector "Redisplay Killed Lines"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
329 '(dired-do-kill-file-lines 0)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
330 ':keys (dired-key-description 'dired-do-kill-file-lines "0"))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
331 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
332 dired-help-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
333 (list
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
334 ["Dired Summary Help" dired-summary t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
335 ["Describe Dired" dired-describe-mode t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
336 (vector "Dired Info Manual"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
337 '(dired-describe-mode t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
338 ':keys (dired-key-description 'dired-describe-mode
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
339 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
340 ["Dired Command Apropos" dired-apropos t]
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
341 (vector "Dired Variable Apropos"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
342 '(let ((current-prefix-arg t))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
343 (call-interactively 'dired-apropos))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
344 ':keys (dired-key-description 'dired-apropos 'universal-argument))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
345 ["Report Dired Bug" dired-report-bug t])))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
346
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
347 (defun dired-install-menubar ()
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
348 "Installs the Dired menu at the menubar."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
349 (if (null dired-help-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
350 (dired-setup-menus))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
351 (if current-menubar
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
352 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
353 (let ((buffer-menubar (copy-sequence current-menubar)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
354 (delete (assoc "Edit" buffer-menubar) buffer-menubar)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
355 (set-buffer-menubar buffer-menubar)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
356 (mapcar
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
357 (function
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
358 (lambda (pair)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
359 (let ((name (car pair))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
360 (menu (symbol-value (cdr pair))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
361 (add-submenu nil (cons name menu)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
362 dired-menubar-menus))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
363 (add-menu-button '("Help") (list "---"))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
364 (add-submenu '("Help") (cons "Dired" dired-help-menu)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
365
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
366 (add-hook 'dired-mode-hook 'dired-install-menubar)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
367
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
368 ;;; Mouse functions
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
369
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
370 (defun dired-mouse-find-file (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
371 "In dired, visit the file or directory name you click on."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
372 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
373 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
374 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
375 (if dired-subdir-alist
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
376 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
377 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
378 (dired-find-file))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
379 (error
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
380 (concat "dired-subdir-alist seems to be mangled. "
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
381 (substitute-command-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
382 "\\<dired-mode-map>Try dired-revert (\\[dired-revert])."))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
383
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
384 (defun dired-mouse-mark (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
385 "In dired, mark the file name that you click on.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
386 If the file name is already marked, this unmarks it."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
387 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
388 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
389 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
390 (if dired-subdir-alist
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
391 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
392 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
393 (beginning-of-line)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
394 (if (looking-at dired-re-mark)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
395 (dired-unmark 1)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
396 (dired-mark 1)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
397 (error
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
398 (concat "dired-subdir-alist seems to be mangled. "
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
399 (substitute-command-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
400 "\\<dired-mode-map>Try dired-revert (\\[dired-revert])."))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
401
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
402 (defun dired-mouse-flag (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
403 "In dired, flag for deletion the file name that you click on.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
404 If the file name is already flag, this unflags it."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
405 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
406 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
407 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
408 (if dired-subdir-alist
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
409 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
410 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
411 (beginning-of-line)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
412 (if (char-equal (following-char) dired-del-marker)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
413 (dired-unflag 1)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
414 (dired-flag-file-deletion 1)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
415 (error
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
416 (concat "dired-subdir-alist seems to be mangled. "
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
417 (substitute-command-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
418 "\\<dired-mode-map>Try dired-revert (\\[dired-revert])."))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
419
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
420 (defun dired-mouse-get-target (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
421 "In dired, put a copy of the selected directory in the active minibuffer."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
422 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
423 (let ((obuff (current-buffer))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
424 mb)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
425 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
426 (if (and dired-subdir-alist (setq mb (dired-get-active-minibuffer-window)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
427 (let (dir)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
428 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
429 (setq dir (dired-current-directory))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
430 (select-window mb)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
431 (set-buffer (window-buffer mb))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
432 (erase-buffer)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
433 (insert dir))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
434 (set-buffer obuff)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
435 (if mb
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
436 (error "No directory specified")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
437 (error "No active minibuffer")))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
438
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
439 (defun dired-visit-popup-menu (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
440 "Popup a menu to visit the moused file."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
441 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
442 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
443 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
444 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
445 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
446 (dired-visit-popup-menu-internal event))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
447
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
448 (defun dired-visit-popup-menu-internal (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
449 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
450 (let ((fn (dired-get-filename 'no-dir)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
451 (popup-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
452 (cons (concat "Visit " fn " with") dired-visit-popup-menu))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
453 ;; this looks like a kludge to me ...
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
454 (while (popup-up-p)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
455 (dispatch-event (next-event)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
456
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
457 (defun dired-do-popup-menu (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
458 "Pop up a menu to do an operation on the moused file."
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
459 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
460 (let ((obuff (current-buffer)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
461 (unwind-protect
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
462 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
463 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
464 (dired-save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
465 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
466 (dired-do-popup-menu-internal event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
467 (set-buffer obuff))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
468
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
469 (defun dired-do-popup-menu-internal (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
470 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
471 (let ((fn (dired-get-filename 'no-dir))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
472 (current-prefix-arg 1))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
473 (popup-menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
474 (cons (concat "Do operation on " fn) dired-do-popup-menu))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
475 (while (popup-up-p)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
476 (dispatch-event (next-event)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
477
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
478 (defvar dired-filename-local-map
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
479 (let ((map (make-sparse-keymap)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
480 (set-keymap-name map 'dired-filename-local-map)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
481 (define-key map 'button2 'dired-mouse-find-file)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
482 (define-key map 'button3 'dired-visit-popup-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
483 (define-key map '(control button2) 'dired-do-popup-menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
484 (define-key map '(shift button1) 'dired-mouse-mark)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
485 (define-key map '(control shift button1) 'dired-mouse-flag)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
486 map)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
487 "Keymap used to activate actions on files in dired.")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
488
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
489 ;; Make this defined everywhere in the dired buffer.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
490 (define-key dired-mode-map '(meta button3) 'dired-mouse-get-target)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
491
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
492 ;;; Extent managment
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
493
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
494 (defun dired-set-text-properties (start end &optional face)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
495 (let ((filename-extent (make-extent start end)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
496 (set-extent-face filename-extent (or face 'default))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
497 (set-extent-property filename-extent 'dired-file-name t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
498 (set-extent-property filename-extent 'start-open t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
499 (set-extent-property filename-extent 'end-open t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
500 (set-extent-property filename-extent 'keymap dired-filename-local-map)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
501 (set-extent-property filename-extent 'highlight t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
502 (set-extent-property
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
503 filename-extent 'help-echo
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
504 (concat
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
505 "button2 finds, button3 visits, "
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
506 "C-button2 file ops, [C-]shift-button1 marks/flags."))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
507 filename-extent))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
508
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
509 (defun dired-insert-set-properties (beg end)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
510 ;; Sets the extents for the file names and their properties
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
511 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
512 (goto-char beg)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
513 (beginning-of-line)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
514 (let ((eol (save-excursion (end-of-line) (point)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
515 (bol (point))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
516 start)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
517 (while (< (point) end)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
518 (setq eol (save-excursion (end-of-line) (point)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
519
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
520 (if dired-do-interactive-permissions
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
521 (dired-make-permissions-interactive (point)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
522
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
523 (if (dired-manual-move-to-filename nil bol eol)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
524 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
525 (setq start (point))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
526 (dired-manual-move-to-end-of-filename nil bol eol)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
527 (dired-set-text-properties
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
528 start
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
529 (point)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
530 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
531 (beginning-of-line)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
532 (cond
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
533 ((null dired-do-highlighting) nil)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
534 ((looking-at dired-re-raw-dir) 'dired-face-directory)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
535 ((looking-at dired-re-raw-sym) 'dired-face-symlink)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
536 ((or (looking-at dired-re-raw-setuid)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
537 (looking-at dired-re-raw-setgid)) 'dired-face-setuid)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
538 ((looking-at dired-re-raw-exe) 'dired-face-executable)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
539 ((looking-at dired-re-raw-socket) 'dired-face-socket)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
540 ((save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
541 (goto-char start)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
542 (re-search-forward dired-re-raw-boring eol t))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
543 'dired-face-boring))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
544
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
545 (setq bol (1+ eol))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
546 (goto-char bol)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
547
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
548 (defun dired-remove-text-properties (start end)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
549 ;; Removes text properties. Called in popup buffers.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
550 (map-extents
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
551 (function
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
552 (lambda (extent maparg)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
553 (if (extent-property extent 'dired-file-name)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
554 (delete-extent extent))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
555 nil))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
556 nil start end))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
557
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
558 (defun dired-highlight-filename-mark (extent)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
559 (let ((mark
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
560 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
561 (skip-chars-backward "^\n\r")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
562 (following-char)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
563 (face (extent-face extent)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
564 (if (char-equal mark ?\ )
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
565 (if (consp face)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
566 (set-extent-face extent (cadr face)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
567 (let ((new-face
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
568 (cond
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
569 ((char-equal dired-default-marker mark)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
570 'dired-face-marked)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
571 ((char-equal dired-del-marker mark)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
572 'dired-face-deleted)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
573 (t 'default))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
574 (set-extent-face
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
575 extent
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
576 (if (consp face)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
577 (list new-face (cadr face))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
578 (list new-face face)))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
579
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
580 (defun dired-move-to-filename (&optional raise-error bol eol)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
581 (or bol (setq bol (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
582 (skip-chars-backward "^\n\r")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
583 (point))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
584 (or eol (setq eol (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
585 (skip-chars-forward "^\n\r")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
586 (point))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
587 (goto-char bol)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
588 (let ((extent
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
589 (map-extents
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
590 (function
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
591 (lambda (extent maparg)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
592 (if (extent-property extent 'dired-file-name)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
593 extent
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
594 nil)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
595 nil bol eol)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
596 (if extent
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
597 (progn
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
598 (if dired-do-highlighting
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
599 (dired-highlight-filename-mark extent))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
600 (goto-char (extent-start-position extent)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
601 (if raise-error
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
602 (error "No file on this line")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
603 nil))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
604
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
605
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
606 (defun dired-move-to-end-of-filename (&optional no-error bol eol)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
607 ;; Assumes point is at beginning of filename,
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
608 ;; thus the rwx bit re-search-backward below will succeed in *this*
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
609 ;; line if at all. So, it should be called only after
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
610 ;; (dired-move-to-filename t).
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
611 ;; On failure, signals an error (with non-nil NO-ERROR just returns nil).
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
612 (or eol (setq eol (save-excursion (skip-chars-forward "^\r\n") (point))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
613 (and
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
614 (null no-error)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
615 selective-display
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
616 (or bol (setq bol (save-excursion (skip-chars-backward "^\r\n") (point))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
617 (eq (char-after (1- bol)) ?\r)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
618 (cond
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
619 ((dired-subdir-hidden-p (dired-current-directory))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
620 (error
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
621 (substitute-command-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
622 "File line is hidden. Type \\[dired-hide-subdir] to unhide.")))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
623 ((error
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
624 (substitute-command-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
625 "File line is omitted. Type \\[dired-omit-toggle] to un-omit.")))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
626 (let ((filename-extent (map-extents
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
627 (function
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
628 (lambda (e p) (and (extent-property e p) e)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
629 (current-buffer) bol eol 'dired-file-name)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
630 (if filename-extent
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
631 (goto-char (extent-end-position filename-extent))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
632 (and (null no-error) (error "No file on this line")))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
633
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
634 ;;; Interactive chmod
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
635 ;;; (based on ideas from Russell Ritchie's dired-chmod.el)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
636
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
637 (defun dired-do-interactive-chmod (new-attribute)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
638 (let* ((file (dired-get-filename))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
639 (operation (concat "chmod " new-attribute " " file))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
640 (failure (apply (function dired-check-process)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
641 operation
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
642 "chmod" new-attribute (list file))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
643 (dired-do-redisplay)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
644 (if failure
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
645 (dired-log-summary (buffer-name (current-buffer))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
646 (format "%s: error" operation) nil))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
647
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
648 (defun dired-chmod-popup-menu (event menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
649 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
650 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
651 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
652 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
653 (popup-menu menu)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
654 ;; this looks like a kludge to me ...
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
655 (while (popup-up-p)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
656 (dispatch-event (next-event))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
657
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
658 ;; This is probably overdoing it.
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
659 ;; Someone give me lexical scoping here ...
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
660
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
661 (defun dired-setup-chmod-keymap (domain id keys)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
662 (let* ((names
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
663 (mapcar
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
664 (function
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
665 (lambda (key)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
666 (let ((name (intern (concat "dired-"
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
667 (list domain ?- key)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
668 (eval
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
669 `(defun ,name ()
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
670 (interactive)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
671 (dired-do-interactive-chmod ,(concat (list domain ?+ key)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
672 name)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
673 keys))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
674 (prefix (concat "dired-" (list domain) "-" (list id)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
675 (remove-name (intern (concat prefix "-remove")))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
676 (toggle-name (intern (concat prefix "-toggle")))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
677 (mouse-toggle-name (intern (concat prefix "-mouse-toggle")))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
678 (mouse-menu-name (intern (concat prefix "-menu"))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
679
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
680 (eval
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
681 `(defun ,remove-name ()
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
682 (interactive)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
683 (cond ,@(mapcar (function
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
684 (lambda (key)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
685 `((looking-at ,(regexp-quote (char-to-string key)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
686 (dired-do-interactive-chmod
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
687 ,(concat (list domain ?- key))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
688 keys))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
689
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
690 (eval
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
691 `(defun ,toggle-name ()
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
692 (interactive)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
693 (cond ((looking-at "-") (dired-do-interactive-chmod
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
694 ,(concat (list domain ?+ (car keys)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
695 ,@(let ((l keys)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
696 (c '()))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
697 (while l
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
698 (setq c
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
699 (cons
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
700 `((looking-at (regexp-quote (char-to-string ,(car l))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
701 (dired-do-interactive-chmod
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
702 ,(if (null (cdr l))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
703 (concat (list domain ?- (car l)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
704 (concat (list domain ?+ (cadr l))))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
705 c))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
706 (setq l (cdr l)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
707 (reverse c)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
708
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
709 (eval
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
710 `(defun ,mouse-toggle-name (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
711 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
712 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
713 (set-buffer (window-buffer (event-window event)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
714 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
715 (goto-char (event-point event))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
716 (,toggle-name)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
717
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
718 (let ((menu '())
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
719 (loop-keys keys)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
720 (loop-names names))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
721 (while loop-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
722 (setq menu
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
723 (cons (vector (concat (list ?+ (car loop-keys)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
724 (car loop-names)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
725 t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
726 menu))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
727 (setq loop-keys (cdr loop-keys)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
728 loop-names (cdr loop-names)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
729 (setq menu (append menu (list (vector "Toggle" toggle-name t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
730 (vector "Clear" remove-name t))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
731 (setq menu (cons (char-to-string domain) menu))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
732
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
733 (eval
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
734 `(defun ,mouse-menu-name (event)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
735 (interactive "e")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
736 (dired-chmod-popup-menu event ',menu))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
737
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
738 (let ((keymap (make-sparse-keymap)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
739 (let ((loop-keys (cons ?. (cons ?- keys)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
740 (loop-names (cons toggle-name (cons remove-name names))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
741 (while loop-keys
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
742 (define-key keymap (car loop-keys) (car loop-names))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
743 (setq loop-keys (cdr loop-keys)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
744 loop-names (cdr loop-names))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
745
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
746 (define-key keymap 'button2 mouse-toggle-name)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
747 (define-key keymap 'button3 mouse-menu-name)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
748 keymap)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
749
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
750 (defvar dired-u-r-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
751 (defvar dired-u-w-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
752 (defvar dired-u-x-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
753 (defvar dired-g-r-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
754 (defvar dired-g-w-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
755 (defvar dired-g-x-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
756 (defvar dired-o-r-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
757 (defvar dired-o-w-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
758 (defvar dired-o-x-keymap nil "internal keymap for dired")
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
759
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
760
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
761 (defun dired-setup-chmod-keymaps ()
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
762 (setq
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
763 dired-u-r-keymap (dired-setup-chmod-keymap ?u ?r '(?r))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
764 dired-u-w-keymap (dired-setup-chmod-keymap ?u ?w '(?w))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
765 dired-u-x-keymap (dired-setup-chmod-keymap ?u ?x '(?s ?S ?x))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
766 dired-g-r-keymap (dired-setup-chmod-keymap ?g ?r '(?r))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
767 dired-g-w-keymap (dired-setup-chmod-keymap ?g ?w '(?w))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
768 dired-g-x-keymap (dired-setup-chmod-keymap ?g ?x '(?s ?x))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
769 dired-o-r-keymap (dired-setup-chmod-keymap ?o ?r '(?r))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
770 dired-o-w-keymap (dired-setup-chmod-keymap ?o ?w '(?w))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
771 dired-o-x-keymap (dired-setup-chmod-keymap ?o ?x '(?s ?t ?x))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
772
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
773 (defun dired-make-permissions-interactive (beg)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
774 (save-excursion
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
775 (goto-char beg)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
776 (buffer-substring (point) (save-excursion (end-of-line) (point)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
777 (if (and (re-search-forward dired-re-pre-permissions
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
778 (save-excursion (end-of-line) (point))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
779 t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
780 (looking-at dired-re-permissions))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
781 (let ((p (point)))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
782 (dired-activate-permissions (make-extent p (+ 1 p)) dired-u-r-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
783 (dired-activate-permissions (make-extent (+ 1 p) (+ 2 p)) dired-u-w-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
784 (dired-activate-permissions (make-extent (+ 2 p) (+ 3 p)) dired-u-x-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
785 (dired-activate-permissions (make-extent (+ 3 p) (+ 4 p)) dired-g-r-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
786 (dired-activate-permissions (make-extent (+ 4 p) (+ 5 p)) dired-g-w-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
787 (dired-activate-permissions (make-extent (+ 5 p) (+ 6 p)) dired-g-x-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
788 (dired-activate-permissions (make-extent (+ 6 p) (+ 7 p)) dired-o-r-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
789 (dired-activate-permissions (make-extent (+ 7 p) (+ 8 p)) dired-o-w-keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
790 (dired-activate-permissions (make-extent (+ 8 p) (+ 9 p)) dired-o-x-keymap)))))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
791
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
792 (defun dired-activate-permissions (extent keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
793 (set-extent-face extent 'dired-face-permissions)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
794 (set-extent-property extent 'keymap keymap)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
795 (set-extent-property extent 'highlight t)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
796 (set-extent-property
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
797 extent 'help-echo
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
798 "button2 toggles, button3 changes otherwise."))
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
799
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
800 (dired-setup-chmod-keymaps)
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
801
8fc7fe29b841 Import from CVS: tag r19-15b94
cvs
parents:
diff changeset
802 ;;; end of dired-xemacs.el