;ELC ;;; compiled by rms@psilocin.gnu.ai.mit.edu on Sun Jul 28 21:21:56 1996 ;;; from file /home/fsf/rms/e19/lisp/uniquify.el ;;; emacs version 19.31.97.1. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`uniquify.el' was compiled for Emacs 19.29 or later")) (provide (quote uniquify)) #@598 *If non-nil, buffer names are uniquified with parts of directory name. The value determines the buffer name style and is one of `forward', `reverse', `post-forward' (the default), or `post-forward-angle-brackets'. For example, files `/foo/bar/mumble/name' and `/baz/quux/mumble/name' would have the following buffer names in the various styles: forward bar/mumble/name quux/mumble/name reverse name\mumble\bar name\mumble\quux post-forward name|bar/mumble name|quux/mumble post-forward-angle-brackets name name nil name name<2> (defvar uniquify-buffer-name-style (quote post-forward) (#$ . -506)) #@215 *If non-nil, rerationalize buffer names after a buffer has been killed. This can be dangerous if Emacs Lisp code is keeping track of buffers by their names (rather than keeping pointers to the buffers themselves). (defvar uniquify-after-kill-buffer-p nil (#$ . -1179)) #@180 *If non-nil, permit user to choose names for buffers with same base file. If the user chooses to name a buffer, uniquification is preempted and no other buffer names are changed. (defconst uniquify-ask-about-buffer-names-p nil (#$ . -1455)) #@59 *Minimum parts of directory name included in buffer name. (defvar uniquify-min-dir-content 0 (#$ . -1702)) #@274 *String separator for buffer name components. When `uniquify-buffer-name-style' is `post-forward', separates base file name from directory part in buffer names (default "|"). When `uniquify-buffer-name-style' is `reverse', separates all file name components (default "\"). (defvar uniquify-separator nil (#$ . -1816)) #@232 *If non-nil, add a file name separator to dired buffer names. If `uniquify-buffer-name-style' is `forward', add the separator at the end; if it is `reverse', add the separator at the beginning; otherwise, this variable is ignored. (defvar uniquify-trailing-separator-p nil (#$ . -2141)) (defalias 'uniquify-push '(macro . #[(item list) "À  EE‡" [setq list cons item] 5])) (defalias 'uniquify-fix-list-base '(macro . #[(a) "À D‡" [car a] 2])) (defalias 'uniquify-fix-list-filename '(macro . #[(a) "ÀÁ\nDD‡" [car cdr a] 3])) (defalias 'uniquify-fix-list-buffer '(macro . #[(a) "ÀÁ‰\nDDD‡" [car cdr a] 4])) (defalias 'uniquify-cadddr '(macro . #[(a) "ÀÁ‰‰\nDDDD‡" [car cdr a] 5])) (byte-code "ÀÁ!„ÂÁ BÀÄ!„ÂÄ B‡" [boundp uniquify-non-file-buffer-names nil current-load-list uniquify-possibly-resolvable] 2) #@202 Makes file buffer names unique by adding segments from file name. If `uniquify-min-dir-content' > 0, always pulls that many file name elements. Arguments cause only a subset of buffers to be renamed. (defalias 'uniquify-rationalize-file-buffer-names #[(&optional newbuffile newbuf) "À‰ Å ‰ƒm@‰=ƒ& …*Ê !‚*Ë!‰\f…4Í\f!‰…G ?†GÍ !š‰ƒ[\fÀF\fB‚cÐ!C B,A‰„)Ñ\fÒ\"Ó\f\n\"ˆÔÕ\f\"+‡" [nil uniquify-min-dir-content depth uniquify-non-file-buffer-names fix-list buffer-list buffers buffer newbuf newbuffile expand-file-name uniquify-buffer-file-name bfn file-name-nondirectory rawname deserving buffer-name sort uniquify-fix-list-filename-lessp uniquify-rationalize-a-list mapcar uniquify-unrationalized-buffer] 5 (#$ . 2962) nil]) #@123 Return name of file BUFFER is visiting, or nil if none. Works on dired buffers as well as ordinary file-visiting buffers. (defalias 'uniquify-buffer-file-name #[(buffer) "À !†\fŠ qˆ\n)‡" [buffer-file-name buffer list-buffers-directory] 2 (#$ . 3738)]) (defalias 'uniquify-fix-list-filename-lessp #[(fixlist1 fixlist2) "À A@\nA@\"‡" [uniquify-filename-lessp fixlist1 fixlist2] 3]) (defalias 'uniquify-filename-lessp #[(s1 s2) "À !À\n! Åš?…C\f ™†C\f š…CÆ !Æ\n!GÉX?…BGÉX†BÊËÌOËÌO\"**‡" [file-name-nondirectory s1 s2 s2f s1f "" file-name-directory s2d s1d 1 uniquify-filename-lessp 0 -1] 5]) (defalias 'uniquify-unrationalized-buffer #[(item) "AAA@‡" [item] 1]) (defalias 'uniquify-rationalize-a-list #[(fix-list depth) "ÀÁÀ‰ƒ9@È \"‰\fš„(Ê \f #ˆÀ B )A‰„ Ê \f #,‡" [nil "" uniquify-possibly-resolvable proposed-name old-name conflicting-sublist fix-list item uniquify-get-proposed-name depth uniquify-rationalize-conflicting-sublist] 5]) (defalias 'uniquify-get-proposed-name #[(item depth) "ÀÁ\n @ A@ÉVƒJÊËÌ!Ì !ÍR\f\"‰ƒJ\fÉUƒ6É‚9T\fG GZOS‰‚ÉUƒT΃ƒÑ\f!ƒƒ Á˜„ƒÓ=ƒs ÔP‚ƒÕ=ƒƒ†€× PÁ˜„£Ø=„˜Ù=ƒ£ÉGÚZOÁ˜ƒ® ‚ Á˜ƒ¹‚Ó=ƒÇ P‚Õ=ƒ× Û!P‚Ø=ƒë †åÜQ‚Ù=ƒû ÝÞR‚ßà\"-‡" [nil "" depth item fn base n extra-string index 0 string-match "\\(^\\|/[^/]*\\)/" regexp-quote "\\'" t uniquify-possibly-resolvable uniquify-trailing-separator-p file-directory-p uniquify-buffer-name-style forward "/" reverse uniquify-separator "\\" post-forward post-forward-angle-brackets 1 uniquify-reverse-components "|" "<" ">" error "Bad value for uniquify-buffer-name-style: %s"] 6]) (defalias 'uniquify-rationalize-conflicting-sublist #[(conflicting-sublist old-name depth) "?†,A„!Á\n \"„!\nĘ„Å@\n\"†,Ƈ…,È T\"‡" [conflicting-sublist assoc old-name uniquify-non-file-buffer-names "" uniquify-rename-buffer t uniquify-possibly-resolvable uniquify-rationalize-a-list depth] 3]) (defalias 'uniquify-rename-buffer #[(item newname) "AA@\nà !š„pÄ qˆÇ\n!ˆqˆ*)țɠ‡" [item buffer newname buffer-name nil uniquify-buffer-name-style unset rename-buffer 3 t] 3]) (defalias 'uniquify-reverse-components #[(instring) "ÀÁ\nG † ÄWƒP\nHÉUƒ0 BT‰‚ÊË\n#†;\f\n\fOB\f)‚ÍÎ\",‡" [nil 0 instring uniquify-separator "\\" sep len cursor sofar 47 string-match "/" first-slash apply concat] 5]) (byte-code "ÀÁÂÃÄ$ˆÅÁÄ\"ˆÀÆÇÃÄ$ˆÅÆÄ\"‡" [ad-add-advice rename-buffer (rename-buffer-uniquify nil t (advice lambda nil "Uniquify buffer names with parts of directory name." (if (and uniquify-buffer-name-style (ad-get-arg 1)) (progn (if uniquify-after-kill-buffer-p (uniquify-rationalize-file-buffer-names) (uniquify-rationalize-file-buffer-names (uniquify-buffer-file-name (current-buffer)) (current-buffer))) (setq ad-return-value (buffer-name (current-buffer))))))) after nil ad-activate-on create-file-buffer (create-file-buffer-uniquify nil t (advice lambda nil "Uniquify buffer names with parts of directory name." (if uniquify-buffer-name-style (uniquify-rationalize-file-buffer-names (ad-get-arg 0) ad-return-value))))] 5) #@154 Add `delayed-uniquify-rationalize-file-buffer-names' to `post-command-hook'. For use on, eg, `kill-buffer-hook', to rationalize *after* buffer deletion. (defalias 'delay-uniquify-rationalize-file-buffer-names #[nil "…\f …\fÂÃÄ\"‡" [uniquify-buffer-name-style uniquify-after-kill-buffer-p add-hook post-command-hook delayed-uniquify-rationalize-file-buffer-names] 3 (#$ . 6924)]) #@134 Rerationalize buffer names and remove self from `post-command-hook'. See also `delay-rationalize-file-buffer-names' for hook setter. (defalias 'delayed-uniquify-rationalize-file-buffer-names #[nil "À ˆÁÂÃ\"‡" [uniquify-rationalize-file-buffer-names remove-hook post-command-hook delayed-uniquify-rationalize-file-buffer-names] 3 (#$ . 7313)]) (add-hook (quote kill-buffer-hook) (quote delay-uniquify-rationalize-file-buffer-names))