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)))