mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-05 22:20:24 -08:00
uniquify-get-unique-names: Return a list with propertized strings
* lisp/uniquify.el (uniquify-get-unique-names): Return a list of strings, and add text property 'uniquify-orig-buffer' to each, pointing at the corresponding buffers (bug#77312). * lisp/progmodes/project.el (project--read-project-buffer): Look up that property's values here and build the alist.
This commit is contained in:
parent
fa77689b1e
commit
76877a6b08
2 changed files with 19 additions and 5 deletions
|
|
@ -1598,7 +1598,13 @@ Return non-nil if PROJECT is not a remote project."
|
||||||
uniquify-buffer-name-style)
|
uniquify-buffer-name-style)
|
||||||
;; Forgo the use of `buffer-read-function' (often nil) in
|
;; Forgo the use of `buffer-read-function' (often nil) in
|
||||||
;; favor of uniquifying the buffers better.
|
;; favor of uniquifying the buffers better.
|
||||||
(let* ((unique-names (uniquify-get-unique-names buffers))
|
(let* ((unique-names
|
||||||
|
(mapcar
|
||||||
|
(lambda (name)
|
||||||
|
(cons name
|
||||||
|
(get-text-property 0 'uniquify-orig-buffer
|
||||||
|
(or name ""))))
|
||||||
|
(uniquify-get-unique-names buffers)))
|
||||||
(other-name (when (funcall predicate (cons other-name other-buffer))
|
(other-name (when (funcall predicate (cons other-name other-buffer))
|
||||||
(car (rassoc other-buffer unique-names))))
|
(car (rassoc other-buffer unique-names))))
|
||||||
(result (completing-read
|
(result (completing-read
|
||||||
|
|
|
||||||
|
|
@ -517,10 +517,11 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
|
||||||
"The current unique name of this buffer in `uniquify-get-unique-names'.")
|
"The current unique name of this buffer in `uniquify-get-unique-names'.")
|
||||||
|
|
||||||
(defun uniquify-get-unique-names (buffers)
|
(defun uniquify-get-unique-names (buffers)
|
||||||
"Return an alist with a unique name for each buffer in BUFFERS.
|
"Return a list with unique names for buffers in BUFFERS.
|
||||||
|
|
||||||
The names are unique only among BUFFERS, and may conflict with other
|
The names are unique only among BUFFERS, and may conflict with other
|
||||||
buffers not in that list.
|
buffers not in that list. Each string has a text property
|
||||||
|
`uniquify-orig-buffer' that stores the corresponding buffer.
|
||||||
|
|
||||||
This does not rename the buffers or change any state; the unique name is
|
This does not rename the buffers or change any state; the unique name is
|
||||||
only present in the returned alist."
|
only present in the returned alist."
|
||||||
|
|
@ -547,8 +548,15 @@ only present in the returned alist."
|
||||||
(gethash name buffer-names)))))
|
(gethash name buffer-names)))))
|
||||||
(mapcar (lambda (buf)
|
(mapcar (lambda (buf)
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(prog1 (cons uniquify--stateless-curname buf)
|
(let ((name
|
||||||
(kill-local-variable 'uniquify--stateless-curname))))
|
(if (eq uniquify--stateless-curname
|
||||||
|
(buffer-name buf))
|
||||||
|
(copy-sequence uniquify--stateless-curname)
|
||||||
|
uniquify--stateless-curname)))
|
||||||
|
(when name
|
||||||
|
(put-text-property 0 1 'uniquify-orig-buffer buf name))
|
||||||
|
(kill-local-variable 'uniquify--stateless-curname)
|
||||||
|
name)))
|
||||||
buffers))
|
buffers))
|
||||||
|
|
||||||
;;; Hooks from the rest of Emacs
|
;;; Hooks from the rest of Emacs
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue