Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix uniquify-trailing-separator-p + uniquify-strip-common-suffix
(uniquify-item): New slot 'original-dirname'.
(uniquify-rationalize-file-buffer-names): Use new slot.
(uniquify-rationalize): Use new slot.
(uniquify-get-proposed-name): New optional argument 'original-dirname'
to properly add a trailing separator when the corresponding user option
is set and the dirname is an existing directory (bug#47132).
  • Loading branch information
Gabriel do Nascimento Ribeiro authored and larsmagne committed Mar 18, 2021
1 parent a5197e2 commit 846e867
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions lisp/uniquify.el
Expand Up @@ -175,8 +175,8 @@ contains the name of the directory which the buffer is visiting.")
(cl-defstruct (uniquify-item
(:constructor nil) (:copier nil)
(:constructor uniquify-make-item
(base dirname buffer &optional proposed)))
base dirname buffer proposed)
(base dirname buffer &optional proposed original-dirname)))
base dirname buffer proposed original-dirname)

;; Internal variables used free
(defvar uniquify-possibly-resolvable nil)
Expand Down Expand Up @@ -211,7 +211,8 @@ this rationalization."
(with-current-buffer newbuf (setq uniquify-managed nil))
(when dirname
(setq dirname (expand-file-name (directory-file-name dirname)))
(let ((fix-list (list (uniquify-make-item base dirname newbuf)))
(let ((fix-list (list (uniquify-make-item base dirname newbuf
nil dirname)))
items)
(dolist (buffer (buffer-list))
(when (and (not (and uniquify-ignore-buffers-re
Expand Down Expand Up @@ -284,7 +285,9 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
;; Refresh the dirnames and proposed names.
(setf (uniquify-item-proposed item)
(uniquify-get-proposed-name (uniquify-item-base item)
(uniquify-item-dirname item)))
(uniquify-item-dirname item)
nil
(uniquify-item-original-dirname item)))
(setq uniquify-managed fix-list)))
;; Strip any shared last directory names of the dirname.
(when (and (cdr fix-list) uniquify-strip-common-suffix)
Expand All @@ -307,7 +310,8 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
(uniquify-item-dirname item))))
(and f (directory-file-name f)))
(uniquify-item-buffer item)
(uniquify-item-proposed item))
(uniquify-item-proposed item)
(uniquify-item-original-dirname item))
fix-list)))))
;; If uniquify-min-dir-content is 0, this will end up just
;; passing fix-list to uniquify-rationalize-conflicting-sublist.
Expand Down Expand Up @@ -335,13 +339,14 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
(uniquify-rationalize-conflicting-sublist conflicting-sublist
old-proposed depth)))

(defun uniquify-get-proposed-name (base dirname &optional depth)
(defun uniquify-get-proposed-name (base dirname &optional depth
original-dirname)
(unless depth (setq depth uniquify-min-dir-content))
(cl-assert (equal (directory-file-name dirname) dirname)) ;No trailing slash.

;; Distinguish directories by adding extra separator.
(if (and uniquify-trailing-separator-p
(file-directory-p (expand-file-name base dirname))
(file-directory-p (expand-file-name base original-dirname))
(not (string-equal base "")))
(cond ((eq uniquify-buffer-name-style 'forward)
(setq base (file-name-as-directory base)))
Expand Down Expand Up @@ -410,7 +415,8 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
(uniquify-get-proposed-name
(uniquify-item-base item)
(uniquify-item-dirname item)
depth)))
depth
(uniquify-item-original-dirname item))))
(uniquify-rationalize-a-list conf-list depth))
(unless (string= old-name "")
(uniquify-rename-buffer (car conf-list) old-name)))))
Expand Down

0 comments on commit 846e867

Please sign in to comment.