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)
|
||||
;; Forgo the use of `buffer-read-function' (often nil) in
|
||||
;; 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))
|
||||
(car (rassoc other-buffer unique-names))))
|
||||
(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'.")
|
||||
|
||||
(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
|
||||
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
|
||||
only present in the returned alist."
|
||||
|
|
@ -547,8 +548,15 @@ only present in the returned alist."
|
|||
(gethash name buffer-names)))))
|
||||
(mapcar (lambda (buf)
|
||||
(with-current-buffer buf
|
||||
(prog1 (cons uniquify--stateless-curname buf)
|
||||
(kill-local-variable 'uniquify--stateless-curname))))
|
||||
(let ((name
|
||||
(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))
|
||||
|
||||
;;; Hooks from the rest of Emacs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue