;ELC   
;;; Compiled by handa@melange.gnu.org on Fri Jul 24 21:49:52 1998
;;; from file /fs/gd/1/gnu/emacs/lisp/uniquify.el
;;; in Emacs version 20.2.97.10
;;; with bytecomp version 2.48
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`uniquify.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\301\302!\210\303\302\304\305\306%\207" [:group provide uniquify custom-declare-group nil "Unique buffer names dependent on file name" applications] 6)
#@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<bar/mumble>  name<quux/mumble>
  nil            name  name<2>
(custom-declare-variable 'uniquify-buffer-name-style 'nil '(#$ . -774) :type '(radio (const forward) (const reverse) (const post-forward) (const post-forward-angle-brackets) (const :tag "standard Emacs behavior (nil)" nil)) :require 'uniquify :group 'uniquify)
#@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).
(custom-declare-variable 'uniquify-after-kill-buffer-p 'nil '(#$ . -1639) :type 'boolean :group 'uniquify)
#@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.
(custom-declare-variable 'uniquify-ask-about-buffer-names-p 'nil '(#$ . -1967) :type 'boolean :group 'uniquify)
#@277 *Regular expression matching buffer names that should not be uniquified.
For instance, set this to "^draft-[0-9]+$" to avoid having uniquify rename
draft buffers even if `uniquify-after-kill-buffer-p' is non-nil and the
visited file name isn't the same as that of the buffer.
(custom-declare-variable 'uniquify-ignore-buffers-re 'nil '(#$ . -2265) :type '(choice (const :tag "Uniquify all buffers" nil) regexp) :group 'uniquify)
#@71 *Minimum number of directory name components included in buffer name.
(custom-declare-variable 'uniquify-min-dir-content '0 '(#$ . -2700) :type 'integer :group 'uniquify)
#@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 "\").
(custom-declare-variable 'uniquify-separator 'nil '(#$ . -2878) :type '(choice (const nil) string) :group 'uniquify)
#@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.
(custom-declare-variable 'uniquify-trailing-separator-p 'nil '(#$ . -3275) :type 'boolean :group 'uniquify)
(defalias 'uniquify-push '(macro . #[(item list) "\302\303	EE\207" [list item setq cons] 5]))
(defalias 'uniquify-file-name-nondirectory #[(file-name) "\301\302!!\207" [file-name file-name-nondirectory directory-file-name] 3])
(defalias 'uniquify-fix-item-base '(macro . #[(a) "\301D\207" [a car] 2]))
(defalias 'uniquify-fix-item-filename '(macro . #[(a) "\301\302DD\207" [a car cdr] 3]))
(defalias 'uniquify-fix-item-buffer '(macro . #[(a) "\301\302\211DDD\207" [a car cdr] 4]))
(defalias 'uniquify-fix-item-unrationalized-buffer #[(item) "AAA@\207" [item] 1])
(defalias 'uniquify-fix-item-filename-lessp #[(fixlist1 fixlist2) "\302A@	A@\"\207" [fixlist1 fixlist2 uniquify-filename-lessp] 3])
(byte-code "\303\300!\204 \304\300	B\303\302!\204 \304\302	B\304\207" [uniquify-non-file-buffer-names current-load-list uniquify-possibly-resolvable boundp nil] 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) "\306\211\307 \211\203z \n@\211\f=\203* \205- \310\311!\203% \312!\202& !\202- \313!\211\2057 \314!\211\205X \205I \315\316!\"?\205X ?\206X \314!\232\211\203k \306F	B\202r \316!CB,\nA\211\204 )\317	\320\"\321	\"\210\322\323	\"*\207" [uniquify-non-file-buffer-names fix-list buffers buffer newbuf newbuffile nil buffer-list expand-file-name file-directory-p directory-file-name uniquify-buffer-file-name uniquify-file-name-nondirectory string-match buffer-name sort uniquify-fix-item-filename-lessp uniquify-rationalize-a-list mapcar uniquify-fix-item-unrationalized-buffer bfn rawname uniquify-ignore-buffers-re deserving uniquify-min-dir-content] 5 (#$ . 4494) nil])
#@131 Return name of file BUFFER is visiting, or nil if none.
Works on dired buffers and ordinary file-visiting buffers, but no others.
(defalias 'uniquify-buffer-file-name #[(buffer) "\304!\206: \305\306!\205: \212q\210	\307=\2059 \310\302!\203& \n\2059 \311\n!\2029 \2059 \312\311:\2036 @\2027 !!)\207" [buffer major-mode list-buffers-directory dired-directory buffer-file-name featurep dired dired-mode boundp directory-file-name expand-file-name] 3 (#$ . 5492)])
(defalias 'uniquify-filename-lessp #[(s1 s2) "\306!\306	!\n\307\232?\205= \n\231\206= \n\232\205= \310!\310	!\fG\311X?\205< G\311X\206< \312\313\314O\f\313\314O\"**\207" [s1 s2 s2f s1f s2d s1d uniquify-file-name-nondirectory "" file-name-directory 1 uniquify-filename-lessp 0 -1] 5])
(defalias 'uniquify-rationalize-a-list #[(fix-list depth) "\306\307\306\211\f\2032 \f@\310\n\"\211\n\232\204$ \311\n\n#\210\306B	)\fA\211\204\f \311\n\n#,\207" [uniquify-possibly-resolvable proposed-name old-name conflicting-sublist fix-list item nil "" uniquify-get-proposed-name uniquify-rationalize-conflicting-sublist depth] 5])
(defalias 'uniquify-get-proposed-name #[(item depth) "\306\307	@	A@\f\310V\203C \311\312\313!\313!\314R\n\"\211\203C \n\310U\2032 \310\2025 T\nGGZO\fS\211\202 \f\310U\203L \315\203{ \316\n!\203{ \307\230\204{ \317=\203k \320P\202{ \321=\203{ \206x \322P\307\230\204\226 \323=\204\217 \324=\203\226 \310GSO\307\230\203\240 \202\355 \307\230\203\252 \202\355 \317=\203\267 P\202\355 \321=\203\306 \325!P\202\355 \323=\203\331 \206\324 \326Q\202\355 \324=\203\350 \327\330R\202\355 \331\332\"-\207" [depth item fn base n extra-string nil "" 0 string-match "\\(^\\|/[^/]*\\)/" regexp-quote "\\'" t file-directory-p forward "/" reverse "\\" post-forward post-forward-angle-brackets uniquify-reverse-components "|" "<" ">" error "Bad value for uniquify-buffer-name-style: %s" index uniquify-possibly-resolvable uniquify-trailing-separator-p uniquify-buffer-name-style uniquify-separator] 6])
(defalias 'uniquify-rationalize-conflicting-sublist #[(conflicting-sublist old-name depth) "?\206* A\204! \305	\n\"\204! 	\306\230\204 \307@	\"\206* \310\207\205* \311\fT\"\207" [conflicting-sublist old-name uniquify-non-file-buffer-names uniquify-possibly-resolvable depth assoc "" uniquify-rename-buffer t uniquify-rationalize-a-list] 3])
(defalias 'uniquify-rename-buffer #[(item newname) "AA@\n\305	!\232\204 p\306	q\210\307\n!\210\fq\210*)\310\233\311\240\207" [item buffer newname uniquify-buffer-name-style unset buffer-name nil rename-buffer 3 t] 3])
(defalias 'uniquify-reverse-components #[(instring) "\306\307G	\206	 \310\fW\203@ \fH\311U\203& \nB\fT\211\202 \312\313\f#\206/ \fOB)\202 \314\315\",\207" [instring uniquify-separator sep len cursor sofar nil 0 "\\" 47 string-match "/" apply concat first-slash] 5])
(byte-code "\300\301\302\303\304$\210\305\301\304\"\210\300\306\307\303\304$\210\305\306\304\"\207" [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 "\205\f 	\205\f \302\303\304\"\207" [uniquify-buffer-name-style uniquify-after-kill-buffer-p add-hook post-command-hook delayed-uniquify-rationalize-file-buffer-names] 3 (#$ . 9214)])
#@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 "\300 \210\301\302\303\"\207" [uniquify-rationalize-file-buffer-names remove-hook post-command-hook delayed-uniquify-rationalize-file-buffer-names] 3 (#$ . 9621)])
(add-hook 'kill-buffer-hook 'delay-uniquify-rationalize-file-buffer-names)
