]> git.eshelyaron.com Git - emacs.git/commitdiff
(uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 5 May 2003 16:55:38 +0000 (16:55 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 5 May 2003 16:55:38 +0000 (16:55 +0000)
(uniquify-ask-about-buffer-names-p, uniquify-ignore-buffers-re)
(uniquify-min-dir-content, uniquify-separator, uniquify-trailing-separator-p):
Remove redundant group specification.
(uniquify-file-name-nondirectory): Delete.
(uniquify-rationalize-file-buffer-names): Simplify.
Use directory names as `filename' component of uniquify-item.
(uniquify-get-proposed-name): Adjust now that `filename' does not
include `base'.

lisp/uniquify.el

index 33dfe72ae7a7b382c1d1f4b0ec6a2876d5dd524e..f80e469feabfcdb3fe1ff9af034c51375e54402b 100644 (file)
@@ -109,22 +109,19 @@ would have the following buffer names in the various styles:
                (const post-forward)
                (const post-forward-angle-brackets)
                (const :tag "standard Emacs behavior (nil)" nil))
-  :require 'uniquify
-  :group 'uniquify)
+  :require 'uniquify)
 
 (defcustom uniquify-after-kill-buffer-p nil
   "*If non-nil, rerationalize buffer names after a buffer has been killed.
 This can be dangerous if Emacs Lisp code is keeping track of buffers by their
 names (rather than keeping pointers to the buffers themselves)."
-  :type 'boolean
-  :group 'uniquify)
+  :type 'boolean)
 
 (defcustom uniquify-ask-about-buffer-names-p nil
   "*If non-nil, permit user to choose names for buffers with same base file.
 If the user chooses to name a buffer, uniquification is preempted and no
 other buffer names are changed."
-  :type 'boolean
-  :group 'uniquify)
+  :type 'boolean)
 
 ;; The default value matches certain Gnus buffers.
 (defcustom uniquify-ignore-buffers-re "^\\*\\(un\\)?sent "
@@ -132,13 +129,11 @@ other buffer names are changed."
 For instance, set this to \"^draft-[0-9]+$\" to avoid having uniquify rename
 draft buffers even if `uniquify-after-kill-buffer-p' is non-nil and the
 visited file name isn't the same as that of the buffer."
-  :type '(choice (const :tag "Uniquify all buffers" nil) regexp)
-  :group 'uniquify)
+  :type '(choice (const :tag "Uniquify all buffers" nil) regexp))
 
 (defcustom uniquify-min-dir-content 0
   "*Minimum number of directory name components included in buffer name."
-  :type 'integer
-  :group 'uniquify)
+  :type 'integer)
 
 (defcustom uniquify-separator nil
   "*String separator for buffer name components.
@@ -146,16 +141,14 @@ When `uniquify-buffer-name-style' is `post-forward', separates
 base file name from directory part in buffer names (default \"|\").
 When `uniquify-buffer-name-style' is `reverse', separates all
 file name components (default \"\\\")."
-  :type '(choice (const nil) string)
-  :group 'uniquify)
+  :type '(choice (const nil) string))
 
 (defcustom uniquify-trailing-separator-p nil
   "*If non-nil, add a file name separator to dired buffer names.
 If `uniquify-buffer-name-style' is `forward', add the separator at the end;
 if it is `reverse', add the separator at the beginning; otherwise, this
 variable is ignored."
-  :type 'boolean
-  :group 'uniquify)
+  :type 'boolean)
 
 (defvar uniquify-list-buffers-directory-modes '(dired-mode cvs-mode)
   "List of modes for which uniquify should obey `list-buffers-directory'.
@@ -164,10 +157,6 @@ contains the name of the directory which the buffer is visiting.")
 
 ;;; Utilities
 
-;; For directories, return the last component, not the empty string.
-(defun uniquify-file-name-nondirectory (file-name)
-  (file-name-nondirectory (directory-file-name file-name)))
-
 ;; uniquify-fix-list data structure
 (defstruct (uniquify-item
            (:constructor nil) (:copier nil)
@@ -185,25 +174,25 @@ If `uniquify-min-dir-content' > 0, always pulls that many
 file name elements.
 Arguments NEWBUFFILE and NEWBUF cause only a subset of buffers to be renamed."
   (interactive)
-  (let (fix-list
-       (newbuffile-nd (and newbuffile
-                           (uniquify-file-name-nondirectory newbuffile))))
+  (when newbuffile
+    (setq newbuffile (expand-file-name (directory-file-name newbuffile))))
+  (let ((fix-list nil)
+       (base (and newbuffile (file-name-nondirectory newbuffile))))
     (dolist (buffer (buffer-list))
       (let ((bufname (buffer-name buffer))
-           bfn rawname proposed)
-       (if (and (not (and uniquify-ignore-buffers-re
-                          (string-match uniquify-ignore-buffers-re
-                                        bufname)))
-                (setq bfn (if (eq buffer newbuf)
-                              (when newbuffile
-                                (expand-file-name
-                                 (directory-file-name newbuffile)))
-                            (uniquify-buffer-file-name buffer)))
-                (setq rawname (uniquify-file-name-nondirectory bfn))
-                (or (not newbuffile)
-                    (equal rawname newbuffile-nd))
-                (setq proposed (uniquify-get-proposed-name rawname bfn)))
-           (push (uniquify-make-item rawname bfn buffer proposed) fix-list))))
+           bfn rawname)
+       (when (and (not (and uniquify-ignore-buffers-re
+                            (string-match uniquify-ignore-buffers-re
+                                          bufname)))
+                  (setq bfn (if (eq buffer newbuf) newbuffile
+                              (uniquify-buffer-file-name buffer)))
+                  (setq rawname (file-name-nondirectory bfn))
+                  (or (null base) (equal rawname base)))
+         (when (setq bfn (file-name-directory bfn)) ;Strip off the `base'.
+           (setq bfn (directory-file-name bfn)))    ;Strip trailing slash.
+         (push (uniquify-make-item rawname bfn buffer
+                                   (uniquify-get-proposed-name rawname bfn))
+               fix-list))))
     ;; selects buffers whose names may need changing, and others that
     ;; may conflict, then bring conflicting names together
     (uniquify-rationalize-a-list fix-list)))
@@ -252,12 +241,11 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
 
 (defun uniquify-get-proposed-name (base filename &optional depth)
   (unless depth (setq depth uniquify-min-dir-content))
-  (assert (equal base (uniquify-file-name-nondirectory filename)))
-  (assert (equal (directory-file-name filename) filename))
+  (assert (equal (directory-file-name filename) filename))  ;No trailing slash.
 
   ;; Distinguish directories by adding extra separator.
   (if (and uniquify-trailing-separator-p
-          (file-directory-p filename)
+          (file-directory-p (expand-file-name base filename))
           (not (string-equal base "")))
       (cond ((eq uniquify-buffer-name-style 'forward)
             (setq base (file-name-as-directory base)))
@@ -267,10 +255,10 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
 
   (let ((extra-string nil)
        (n depth))
-    (while (and (> n 0) filename
-               (setq filename (file-name-directory filename))
-               (setq filename (directory-file-name filename)))
+    (while (and (> n 0) filename)
       (let ((file (file-name-nondirectory filename)))
+       (when (setq filename (file-name-directory filename))
+         (setq filename (directory-file-name filename)))
        (setq n (1- n))
        (push (if (zerop (length file)) ;nil or "".
                  (prog1 "" (setq filename nil)) ;Could be `filename' iso "".
@@ -278,9 +266,7 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
              extra-string)))
     (when (zerop n)
       (if (and filename extra-string
-              (setq filename (file-name-directory filename))
-              (equal filename
-                     (file-name-directory (directory-file-name filename))))
+              (equal filename (file-name-directory filename)))
          ;; We're just before the root.  Let's add the leading / already.
          ;; With "/a/b"+"/c/d/b" this leads to "/a/b" and "d/b" but with
          ;; "/a/b"+"/c/a/b" this leads to "/a/b" and "a/b".