mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-28 10:56:36 +00:00
(uniquify-rationalize-file-buffer-names):
Refresh the dirname in the case that rename-buffer was skipped. (uniquify-buffer-file-name): Return a dirname with no trailing slash.
This commit is contained in:
parent
0bbdffbdfc
commit
aa74499543
@ -1,6 +1,6 @@
|
||||
;;; uniquify.el --- unique buffer names dependent on file name
|
||||
|
||||
;; Copyright (c) 1989, 1995, 1996, 1997, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (c) 1989,95,96,97,2001,2003 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dick King <king@reasoning.com>
|
||||
;; Maintainer: FSF
|
||||
@ -186,7 +186,8 @@ It actually holds the list of `uniquify-item's corresponding to the conflict.")
|
||||
"Make file buffer names unique by adding segments from file name.
|
||||
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."
|
||||
Arguments BASE, DIRNAME, and NEWBUF specify the new buffer that causes
|
||||
this rationaliztion."
|
||||
(interactive)
|
||||
(if (null dirname)
|
||||
(with-current-buffer newbuf (setq uniquify-managed nil))
|
||||
@ -203,6 +204,20 @@ Arguments NEWBUFFILE and NEWBUF cause only a subset of buffers to be renamed."
|
||||
;; Don't re-add stuff we already have. Actually this
|
||||
;; whole `and' test should only match at most once.
|
||||
(not (memq (car items) fix-list)))
|
||||
(unless (cdr items)
|
||||
;; If there was no conflict, the buffer-name is equal to the
|
||||
;; base-name and we may have missed a rename-buffer because
|
||||
;; of code like in set-visited-file-name:
|
||||
;; (or (string= new-name (buffer-name)) (rename-buffer new-name t))
|
||||
;; So we need to refresh the dirname of the uniquify-item.
|
||||
(setf (uniquify-item-dirname (car items))
|
||||
(uniquify-buffer-file-name
|
||||
(uniquify-item-buffer (car items))))
|
||||
;; This shouldn't happen, but maybe there' no dirname any more.
|
||||
(unless (uniquify-item-dirname (car items))
|
||||
(setq items nil)
|
||||
(with-current-buffer (uniquify-item-buffer (car items))
|
||||
(setq uniquify-managed nil))))
|
||||
(setq fix-list (append fix-list items))))
|
||||
;; selects buffers whose names may need changing, and others that
|
||||
;; may conflict, then bring conflicting names together
|
||||
@ -219,7 +234,10 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
|
||||
(if (memq major-mode uniquify-list-buffers-directory-modes)
|
||||
list-buffers-directory))))
|
||||
(when filename
|
||||
(file-name-directory (expand-file-name (directory-file-name filename)))))))
|
||||
(directory-file-name
|
||||
(file-name-directory
|
||||
(expand-file-name
|
||||
(directory-file-name filename))))))))
|
||||
|
||||
(defun uniquify-rerationalize-w/o-cb (fix-list)
|
||||
"Re-rationalize the buffers in FIX-LIST, but ignoring current-buffer."
|
||||
@ -236,7 +254,7 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
|
||||
;; if there is a conflict.
|
||||
(dolist (item fix-list)
|
||||
(with-current-buffer (uniquify-item-buffer item)
|
||||
;; Reset the proposed names.
|
||||
;; Refresh the dirnames and proposed names.
|
||||
(setf (uniquify-item-proposed item)
|
||||
(uniquify-get-proposed-name (uniquify-item-base item)
|
||||
(uniquify-item-dirname item)))
|
||||
|
Loading…
Reference in New Issue
Block a user