Function: uniquify-get-unique-names

uniquify-get-unique-names is a byte-compiled function defined in uniquify.el.gz.

Signature

(uniquify-get-unique-names BUFFERS)

Documentation

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. 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.

Source Code

;; Defined in /usr/src/emacs/lisp/uniquify.el.gz
(defun uniquify-get-unique-names (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.  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."
  (let ((buffer-names (make-hash-table :size (length buffers) :test 'equal))
        fix-lists-by-base)
    (dolist (buf buffers)
      (with-current-buffer buf
        (setq uniquify--stateless-curname (buffer-name buf))
        (puthash (buffer-name buf) buf buffer-names)
        (when uniquify-managed
          (let ((base (uniquify-item-base (car uniquify-managed))))
            (push
             (uniquify-make-item base (uniquify-buffer-file-name buf) buf nil)
             (alist-get base fix-lists-by-base nil nil #'equal))))))
    (dolist (pair fix-lists-by-base)
      (uniquify-rationalize--generic
       (cdr pair)
       (lambda (item name)              ; rename-buffer
         (with-current-buffer (uniquify-item-buffer item)
           (remhash uniquify--stateless-curname buffer-names)
           (setq uniquify--stateless-curname name)
           (puthash name (current-buffer) buffer-names)))
       (lambda (name)                   ; get-buffer
         (gethash name buffer-names)))))
  (mapcar (lambda (buf)
            (with-current-buffer buf
              (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))