Mercurial > emacs
comparison lisp/uniquify.el @ 33700:32c5f03d36c9
(uniquify-list-buffers-directory-modes): New var.
(uniquify-buffer-file-name): Use it.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 21 Nov 2000 20:42:39 +0000 |
parents | 888000b8e8b6 |
children | 02c61ff8a12b |
comparison
equal
deleted
inserted
replaced
33699:76d6d2515065 | 33700:32c5f03d36c9 |
---|---|
70 ;; Ignore non-file non-dired buffers. Colin Rafferty <craffert@ml.com> 3 Mar 97 | 70 ;; Ignore non-file non-dired buffers. Colin Rafferty <craffert@ml.com> 3 Mar 97 |
71 ;; Use last component, not "", for file name of directories. mernst 27 Jun 97 | 71 ;; Use last component, not "", for file name of directories. mernst 27 Jun 97 |
72 ;; Use directory-file-name; code cleanup. mernst 6 Sep 97 | 72 ;; Use directory-file-name; code cleanup. mernst 6 Sep 97 |
73 ;; Add uniquify-ignore-buffers-re. | 73 ;; Add uniquify-ignore-buffers-re. |
74 ;; Andre Srinivasan <andre@visigenic.com> 9 Sep 97 | 74 ;; Andre Srinivasan <andre@visigenic.com> 9 Sep 97 |
75 ;; Add uniquify-list-buffers-directory-modes | |
76 ;; Stefan Monnier <monnier@cs.yale.edu> 17 Nov 2000 | |
75 | 77 |
76 ;; Valuable feedback was provided by | 78 ;; Valuable feedback was provided by |
77 ;; Paul Smith <psmith@baynetworks.com>, | 79 ;; Paul Smith <psmith@baynetworks.com>, |
78 ;; Alastair Burt <burt@dfki.uni-kl.de>, | 80 ;; Alastair Burt <burt@dfki.uni-kl.de>, |
79 ;; Bob Weiner <weiner@footloose.sps.mot.com>, | 81 ;; Bob Weiner <weiner@footloose.sps.mot.com>, |
155 if it is `reverse', add the separator at the beginning; otherwise, this | 157 if it is `reverse', add the separator at the beginning; otherwise, this |
156 variable is ignored." | 158 variable is ignored." |
157 :type 'boolean | 159 :type 'boolean |
158 :group 'uniquify) | 160 :group 'uniquify) |
159 | 161 |
162 (defvar uniquify-list-buffers-directory-modes '(dired-mode cvs-mode) | |
163 "List of modes for which uniquify should obey `list-buffers-directory'. | |
164 That means that when `buffer-file-name' is set to nil, `list-buffers-directory' | |
165 contains the name of the directory which the buffer is visiting.") | |
160 | 166 |
161 ;;; Utilities | 167 ;;; Utilities |
162 | 168 |
163 ;; For directories, return the last component, not the empty string. | 169 ;; For directories, return the last component, not the empty string. |
164 (defun uniquify-file-name-nondirectory (file-name) | 170 (defun uniquify-file-name-nondirectory (file-name) |
184 (defvar uniquify-possibly-resolvable nil) | 190 (defvar uniquify-possibly-resolvable nil) |
185 | 191 |
186 ;;; Main entry point. | 192 ;;; Main entry point. |
187 | 193 |
188 (defun uniquify-rationalize-file-buffer-names (&optional newbuffile newbuf) | 194 (defun uniquify-rationalize-file-buffer-names (&optional newbuffile newbuf) |
189 "Makes file buffer names unique by adding segments from file name. | 195 "Make file buffer names unique by adding segments from file name. |
190 If `uniquify-min-dir-content' > 0, always pulls that many | 196 If `uniquify-min-dir-content' > 0, always pulls that many |
191 file name elements. Arguments cause only a subset of buffers to be renamed." | 197 file name elements. Arguments cause only a subset of buffers to be renamed." |
192 (interactive) | 198 (interactive) |
193 (let (fix-list | 199 (let (fix-list |
194 uniquify-non-file-buffer-names) | 200 uniquify-non-file-buffer-names) |
224 (mapcar 'uniquify-fix-item-unrationalized-buffer fix-list))) | 230 (mapcar 'uniquify-fix-item-unrationalized-buffer fix-list))) |
225 | 231 |
226 ;; uniquify's version of buffer-file-name; result never contains trailing slash | 232 ;; uniquify's version of buffer-file-name; result never contains trailing slash |
227 (defun uniquify-buffer-file-name (buffer) | 233 (defun uniquify-buffer-file-name (buffer) |
228 "Return name of file BUFFER is visiting, or nil if none. | 234 "Return name of file BUFFER is visiting, or nil if none. |
229 Works on dired buffers and ordinary file-visiting buffers, but no others." | 235 Works on ordinary file-visiting buffers and buffers whose mode is mentioned |
236 in `uniquify-list-buffers-directory-modes', otherwise returns nil." | |
230 (or (buffer-file-name buffer) | 237 (or (buffer-file-name buffer) |
231 (and (featurep 'dired) | 238 (with-current-buffer buffer |
232 (save-excursion | |
233 (set-buffer buffer) | |
234 (and | 239 (and |
235 (eq major-mode 'dired-mode) ; do nothing if not a dired buffer | 240 (memq major-mode uniquify-list-buffers-directory-modes) |
236 (if (boundp 'list-buffers-directory) ; XEmacs mightn't define this | 241 (if (boundp 'list-buffers-directory) ; XEmacs mightn't define this |
237 (and list-buffers-directory | 242 (and list-buffers-directory |
238 (directory-file-name list-buffers-directory)) | 243 (directory-file-name list-buffers-directory)) |
239 ;; don't use default-directory if dired-directory is nil | 244 ;; don't use default-directory if dired-directory is nil |
240 (and dired-directory | 245 (and dired-directory |
241 (expand-file-name | 246 (expand-file-name |
242 (directory-file-name | 247 (directory-file-name |
243 (if (consp dired-directory) | 248 (if (consp dired-directory) |
244 (car dired-directory) | 249 (car dired-directory) |
245 dired-directory)))))))))) | 250 dired-directory))))))))) |
246 | 251 |
247 ;; This examines the filename components in reverse order. | 252 ;; This examines the filename components in reverse order. |
248 (defun uniquify-filename-lessp (s1 s2) | 253 (defun uniquify-filename-lessp (s1 s2) |
249 (let ((s1f (uniquify-file-name-nondirectory s1)) | 254 (let ((s1f (uniquify-file-name-nondirectory s1)) |
250 (s2f (uniquify-file-name-nondirectory s2))) | 255 (s2f (uniquify-file-name-nondirectory s2))) |