annotate lisp/uniquify.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents 435144eea4f4
children 465ff99f6dd2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1 ;;; uniquify.el --- unique buffer names dependent on file name
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2
17145
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
3 ;; Copyright (c) 1989, 1995, 1996, 1997 Free Software Foundation, Inc.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
4
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
5 ;; Author: Dick King <king@reasoning.com>
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
6 ;; Maintainer: Michael Ernst <mernst@alum.mit.edu>
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
7 ;; Created: 15 May 86
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
8
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
10
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14 ;; any later version.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14056
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14056
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14056
diff changeset
24 ;; Boston, MA 02111-1307, USA.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
25
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
27
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28 ;; Emacs's standard method for making buffer names unique adds <2>, <3>,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29 ;; etc. to the end of (all but one of) the buffers. This file replaces
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
30 ;; that behavior, for buffers visiting files and dired buffers, with a
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
31 ;; uniquification that adds parts of the file name until the buffer names
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
32 ;; are unique. For instance, buffers visiting /u/mernst/tmp/Makefile and
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
33 ;; /usr/projects/zaphod/Makefile would be named Makefile|tmp and
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
34 ;; Makefile|zaphod, respectively (instead of Makefile and Makefile<2>).
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
35 ;; Other buffer name styles are also available.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
36
18375
b547822f0a11 (delay-uniquify-rationalize-file-buffer-names): Remove this hook here,
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
37 ;; To use this file, do (require 'uniquify)
b547822f0a11 (delay-uniquify-rationalize-file-buffer-names): Remove this hook here,
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
38 ;; and set uniquify-buffer-name-style to one of its non-nil alternative values.
b547822f0a11 (delay-uniquify-rationalize-file-buffer-names): Remove this hook here,
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
39
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
40 ;; For other options, see "User-visible variables", below.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41
13851
922f62608a55 (uniquify-fix-list-filename-lessp): Renamed from uniquify-filename-sort.
Richard M. Stallman <rms@gnu.org>
parents: 13814
diff changeset
42 ;; A version of uniquify.el that works under Emacs 18, Emacs 19, XEmacs,
922f62608a55 (uniquify-fix-list-filename-lessp): Renamed from uniquify-filename-sort.
Richard M. Stallman <rms@gnu.org>
parents: 13814
diff changeset
43 ;; and InfoDock is available from the maintainer.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44
17145
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
45 ;; Doesn't work under NT when backslash is used as a path separator (forward
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
46 ;; slash path separator works fine). To fix, check system-type against
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
47 ;; 'windows-nt, write a routine that breaks paths down into components.
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
48 ;; (Surprisingly, there isn't one built in.)
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
49
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 ;;; Change Log:
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
52 ;; Originally by Dick King <king@reasoning.com> 15 May 86
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
53 ;; Converted for Emacs 18 by Stephen Gildea <gildea@lcs.mit.edu>
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
54 ;; Make uniquify-min-dir-content 0 truly non-invasive. gildea 23 May 89
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
55 ;; Some cleanup. uniquify-min-dir-content default 0. gildea 01 Jun 89
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56 ;; Don't rename to "". Michael Ernst <mernst@theory.lcs.mit.edu> 15 Jun 94
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
57 ;; Add kill-buffer-hook. Kenneth Manheimer <ken.manheimer@nist.gov> 09 May 95
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58 ;; Add advice for rename-buffer and create-file-buffer, handle dired buffers,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
59 ;; kill-buffer-rationalize-buffer-names-p, documentation. mernst 24 May 95
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
60 ;; Remove free variables, fix typos. mernst 5 Jun 95
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61 ;; Efficiently support Emacs 19.27 & earlier. ken.manheimer, mernst 10 Jun 95
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
62 ;; Rename user options to "uniquify-...", add uniquify-reverse-dir-content-p,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
63 ;; add uniquify-ask-about-buffer-names-p. king, mernst 13 Jun 95
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
64 ;; Prefix functions by "uniquify-..."; rename mnemonic-buffer-names to
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
65 ;; uniquify-buffer-name-style; add 'forward and 'post-forward-angle-brackets
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
66 ;; styles; remove uniquify-reverse-dir-content-p; add
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
67 ;; uniquify-trailing-separator-p. mernst 4 Aug 95
17145
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
68 ;; Don't call expand-file-name on nil. mernst 7 Jan 96
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
69 ;; Check whether list-buffers-directory is bound. mernst 11 Oct 96
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
70 ;; Ignore non-file non-dired buffers. Colin Rafferty <craffert@ml.com> 3 Mar 97
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
71 ;; Use last component, not "", for file name of directories. mernst 27 Jun 97
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
72 ;; Use directory-file-name; code cleanup. mernst 6 Sep 97
22140
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
73 ;; Add uniquify-ignore-buffers-re.
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
74 ;; Andre Srinivasan <andre@visigenic.com> 9 Sep 97
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
75
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
76 ;; Valuable feedback was provided by
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
77 ;; Paul Smith <psmith@baynetworks.com>,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
78 ;; Alastair Burt <burt@dfki.uni-kl.de>,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
79 ;; Bob Weiner <weiner@footloose.sps.mot.com>,
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
80 ;; Albert L. Ting <alt@vlibs.com>,
17145
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
81 ;; gyro@reasoning.com,
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
82 ;; Bryan O'Sullivan <bos@eng.sun.com>.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
83
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
84
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
85 ;;; Code:
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
86
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 (provide 'uniquify)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
88
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
89 ;;; User-visible variables
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
90
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
91 (defgroup uniquify nil
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
92 "Unique buffer names dependent on file name"
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
93 :group 'applications)
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
94
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
95
18375
b547822f0a11 (delay-uniquify-rationalize-file-buffer-names): Remove this hook here,
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
96 (defcustom uniquify-buffer-name-style nil
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
97 "*If non-nil, buffer names are uniquified with parts of directory name.
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
98 The value determines the buffer name style and is one of `forward',
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
99 `reverse', `post-forward' (the default), or `post-forward-angle-brackets'.
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
100 For example, files `/foo/bar/mumble/name' and `/baz/quux/mumble/name'
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
101 would have the following buffer names in the various styles:
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
102 forward bar/mumble/name quux/mumble/name
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
103 reverse name\\mumble\\bar name\\mumble\\quux
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
104 post-forward name|bar/mumble name|quux/mumble
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
105 post-forward-angle-brackets name<bar/mumble> name<quux/mumble>
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
106 nil name name<2>"
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
107 :type '(radio (const forward)
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
108 (const reverse)
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
109 (const post-forward)
19044
192305191a1f (uniquify-buffer-name-style): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 18876
diff changeset
110 (const post-forward-angle-brackets)
18375
b547822f0a11 (delay-uniquify-rationalize-file-buffer-names): Remove this hook here,
Richard M. Stallman <rms@gnu.org>
parents: 17414
diff changeset
111 (const :tag "standard Emacs behavior (nil)" nil))
20065
34f94bc812c3 (uniquify-buffer-name-style): Add :require.
Karl Heuer <kwzh@gnu.org>
parents: 19840
diff changeset
112 :require 'uniquify
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
113 :group 'uniquify)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
114
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
115 (defcustom uniquify-after-kill-buffer-p nil
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
116 "*If non-nil, rerationalize buffer names after a buffer has been killed.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
117 This can be dangerous if Emacs Lisp code is keeping track of buffers by their
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
118 names (rather than keeping pointers to the buffers themselves)."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
119 :type 'boolean
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
120 :group 'uniquify)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
121
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
122 (defcustom uniquify-ask-about-buffer-names-p nil
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
123 "*If non-nil, permit user to choose names for buffers with same base file.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
124 If the user chooses to name a buffer, uniquification is preempted and no
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
125 other buffer names are changed."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
126 :type 'boolean
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
127 :group 'uniquify)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
128
22140
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
129 (defcustom uniquify-ignore-buffers-re nil
22808
435144eea4f4 (uniquify-ignore-buffers-re): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 22140
diff changeset
130 "*Regular expression matching buffer names that should not be uniquified.
22140
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
131 For instance, set this to \"^draft-[0-9]+$\" to avoid having uniquify rename
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
132 draft buffers even if `uniquify-after-kill-buffer-p' is non-nil and the
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
133 visited file name isn't the same as that of the buffer."
22808
435144eea4f4 (uniquify-ignore-buffers-re): Fix custom type.
Richard M. Stallman <rms@gnu.org>
parents: 22140
diff changeset
134 :type '(choice (const :tag "Uniquify all buffers" nil) regexp)
22140
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
135 :group 'uniquify)
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
136
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
137 (defcustom uniquify-min-dir-content 0
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
138 "*Minimum number of directory name components included in buffer name."
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
139 :type 'integer
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
140 :group 'uniquify)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
141
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
142 (defcustom uniquify-separator nil
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
143 "*String separator for buffer name components.
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
144 When `uniquify-buffer-name-style' is `post-forward', separates
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
145 base file name from directory part in buffer names (default \"|\").
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
146 When `uniquify-buffer-name-style' is `reverse', separates all
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
147 file name components (default \"\\\")."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
148 :type '(choice (const nil) string)
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
149 :group 'uniquify)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
150
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
151 (defcustom uniquify-trailing-separator-p nil
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
152 "*If non-nil, add a file name separator to dired buffer names.
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
153 If `uniquify-buffer-name-style' is `forward', add the separator at the end;
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
154 if it is `reverse', add the separator at the beginning; otherwise, this
17414
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
155 variable is ignored."
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
156 :type 'boolean
f967f12c8ec8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17145
diff changeset
157 :group 'uniquify)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
158
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
159
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
160 ;;; Utilities
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
161
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162 (defmacro uniquify-push (item list)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 (` (setq (, list) (cons (, item) (, list)))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
165 ;; For directories, return the last component, not the empty string.
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
166 (defun uniquify-file-name-nondirectory (file-name)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
167 (file-name-nondirectory (directory-file-name file-name)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
168
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
169 ;; uniquify-fix-list data structure
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
170 (defmacro uniquify-fix-item-base (a)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
171 (` (car (, a))))
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
172 (defmacro uniquify-fix-item-filename (a)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
173 (` (car (cdr (, a)))))
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
174 (defmacro uniquify-fix-item-buffer (a)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
175 (` (car (cdr (cdr (, a))))))
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
176 ;; Not a macro: passed to mapcar.
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
177 (defun uniquify-fix-item-unrationalized-buffer (item)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
178 (or (car (cdr (cdr (cdr item)))) nil)) ;maybe better in the future
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
179
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
180 (defun uniquify-fix-item-filename-lessp (fixlist1 fixlist2)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
181 (uniquify-filename-lessp (uniquify-fix-item-filename fixlist1)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
182 (uniquify-fix-item-filename fixlist2)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
183
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
184 ;; Internal variables used free
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185 (defvar uniquify-non-file-buffer-names nil)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186 (defvar uniquify-possibly-resolvable nil)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
187
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188 ;;; Main entry point.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
189
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
190 (defun uniquify-rationalize-file-buffer-names (&optional newbuffile newbuf)
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
191 "Makes file buffer names unique by adding segments from file name.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192 If `uniquify-min-dir-content' > 0, always pulls that many
14295
ca40593f8933 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
193 file name elements. Arguments cause only a subset of buffers to be renamed."
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
194 (interactive)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
195 (let (fix-list
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
196 uniquify-non-file-buffer-names)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
197 (let ((buffers (buffer-list)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
198 (while buffers
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
199 (let* ((buffer (car buffers))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
200 (bfn (if (eq buffer newbuf)
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
201 (and newbuffile
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
202 (expand-file-name
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
203 (if (file-directory-p newbuffile)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
204 (directory-file-name newbuffile)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
205 newbuffile)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
206 (uniquify-buffer-file-name buffer)))
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
207 (rawname (and bfn (uniquify-file-name-nondirectory bfn)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208 (deserving (and rawname
22140
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
209 (not (and uniquify-ignore-buffers-re
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
210 (string-match uniquify-ignore-buffers-re
26e470569368 (uniquify-ignore-buffers-re): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20065
diff changeset
211 (buffer-name buffer))))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
212 (or (not newbuffile)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
213 (equal rawname
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
214 (uniquify-file-name-nondirectory newbuffile))))))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
215 (if deserving
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
216 (uniquify-push (list rawname bfn buffer nil) fix-list)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
217 (uniquify-push (list (buffer-name buffer))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
218 uniquify-non-file-buffer-names)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
219 (setq buffers (cdr buffers))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
220 ;; selects buffers whose names may need changing, and others that
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
221 ;; may conflict.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
222 (setq fix-list
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
223 (sort fix-list 'uniquify-fix-item-filename-lessp))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
224 ;; bringing conflicting names together
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
225 (uniquify-rationalize-a-list fix-list uniquify-min-dir-content)
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
226 (mapcar 'uniquify-fix-item-unrationalized-buffer fix-list)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
227
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
228 ;; uniquify's version of buffer-file-name; result never contains trailing slash
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
229 (defun uniquify-buffer-file-name (buffer)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
230 "Return name of file BUFFER is visiting, or nil if none.
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
231 Works on dired buffers and ordinary file-visiting buffers, but no others."
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
232 (or (buffer-file-name buffer)
17145
d342009009c7 (uniquify-buffer-file-name): Don't call
Karl Heuer <kwzh@gnu.org>
parents: 14295
diff changeset
233 (and (featurep 'dired)
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
234 (save-excursion
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
235 (set-buffer buffer)
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
236 (and
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
237 (eq major-mode 'dired-mode) ; do nothing if not a dired buffer
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
238 (if (boundp 'list-buffers-directory) ; XEmacs mightn't define this
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
239 (and list-buffers-directory
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
240 (directory-file-name list-buffers-directory))
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
241 ;; don't use default-directory if dired-directory is nil
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
242 (and dired-directory
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
243 (expand-file-name
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
244 (directory-file-name
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
245 (if (consp dired-directory)
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
246 (car dired-directory)
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
247 dired-directory))))))))))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
248
13851
922f62608a55 (uniquify-fix-list-filename-lessp): Renamed from uniquify-filename-sort.
Richard M. Stallman <rms@gnu.org>
parents: 13814
diff changeset
249 ;; This examines the filename components in reverse order.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
250 (defun uniquify-filename-lessp (s1 s2)
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
251 (let ((s1f (uniquify-file-name-nondirectory s1))
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
252 (s2f (uniquify-file-name-nondirectory s2)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
253 (and (not (equal s2f ""))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
254 (or (string-lessp s1f s2f)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
255 (and (equal s1f s2f)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
256 (let ((s1d (file-name-directory s1))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
257 (s2d (file-name-directory s2)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
258 (and (not (<= (length s2d) 1))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
259 (or (<= (length s1d) 1)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
260 (uniquify-filename-lessp
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
261 (substring s1d 0 -1)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
262 (substring s2d 0 -1))))))))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
263
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
264 (defun uniquify-rationalize-a-list (fix-list depth)
19840
f66b5085a537 Use uniquify-file-name-nondirectory throughout; documentation tweaks.
Richard M. Stallman <rms@gnu.org>
parents: 19797
diff changeset
265 (let (conflicting-sublist ; all elements have the same proposed name
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
266 (old-name "")
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
267 proposed-name uniquify-possibly-resolvable)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268 (while fix-list
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
269 (let ((item (car fix-list)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
270 (setq proposed-name (uniquify-get-proposed-name item depth))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
271 (if (not (equal proposed-name old-name))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
272 (progn
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 (uniquify-rationalize-conflicting-sublist
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
274 conflicting-sublist old-name depth)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
275 (setq conflicting-sublist nil)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
276 (uniquify-push item conflicting-sublist)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
277 (setq old-name proposed-name))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
278 (setq fix-list (cdr fix-list)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
279 (uniquify-rationalize-conflicting-sublist
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
280 conflicting-sublist old-name depth)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
281
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
282 (defun uniquify-get-proposed-name (item depth)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
283 (let (index
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
284 (extra-string "")
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
285 (n depth)
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
286 (base (uniquify-fix-item-base item))
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
287 (fn (uniquify-fix-item-filename item)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
288 (while (and (> n 0)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
289 (setq index (string-match
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
290 (concat "\\(^\\|/[^/]*\\)/"
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
291 (regexp-quote extra-string)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
292 (regexp-quote base)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
293 "\\'")
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
294 fn)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
295 (setq extra-string (substring fn
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
296 (if (zerop index) 0 (1+ index))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
297 ;; (- (length base)) fails for base = "".
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
298 ;; Equivalently, we could have used
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
299 ;; (apply 'substring ...
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
300 ;; (and (not (string= "" base))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
301 ;; (list (- (length base)))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
302 (- (length fn) (length base)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
303 n (1- n)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
304 (if (zerop n) (setq uniquify-possibly-resolvable t))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
305
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
306
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
307 ;; Distinguish directories by adding extra separator.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
308 (if (and uniquify-trailing-separator-p
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
309 (file-directory-p fn)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
310 (not (string-equal base "")))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
311 (cond ((eq uniquify-buffer-name-style 'forward)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
312 (setq base (concat base "/")))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
313 ((eq uniquify-buffer-name-style 'reverse)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
314 (setq base (concat (or uniquify-separator "\\") base)))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
315
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
316 ;; Trim trailing separator on directory part
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
317 (if (and (not (string-equal extra-string ""))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
318 (or (eq uniquify-buffer-name-style 'post-forward)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
319 (eq uniquify-buffer-name-style 'post-forward-angle-brackets)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
320 (setq extra-string (substring extra-string 0
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
321 (- (length extra-string) 1))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
322
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
323 (cond ((string-equal extra-string "")
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
324 base)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 ((string-equal base "")
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
326 extra-string)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
327 ((eq uniquify-buffer-name-style 'forward)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
328 (concat extra-string base))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
329 ((eq uniquify-buffer-name-style 'reverse)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
330 (concat base (uniquify-reverse-components extra-string)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
331 ((eq uniquify-buffer-name-style 'post-forward)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
332 (concat base (or uniquify-separator "|") extra-string))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
333 ((eq uniquify-buffer-name-style 'post-forward-angle-brackets)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
334 (concat base "<" extra-string ">"))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
335 (t (error "Bad value for uniquify-buffer-name-style: %s"
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
336 uniquify-buffer-name-style)))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
337
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
338
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
339 ;; Deal with conflicting-sublist, all of whose elements have identical
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
340 ;; "base" components.
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
341 (defun uniquify-rationalize-conflicting-sublist (conflicting-sublist old-name depth)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
342 (or (null conflicting-sublist)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
343 (and (null (cdr conflicting-sublist))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
344 (not (assoc old-name uniquify-non-file-buffer-names))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
345 (or (and (not (string= old-name ""))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
346 (uniquify-rename-buffer (car conflicting-sublist) old-name))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
347 t))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
348 (if uniquify-possibly-resolvable
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
349 (uniquify-rationalize-a-list conflicting-sublist (1+ depth)))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
350
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
351 (defun uniquify-rename-buffer (item newname)
19797
646589bc370b Rename uniquify-fix-list-* to uniquify-fix-item-*.
Richard M. Stallman <rms@gnu.org>
parents: 19755
diff changeset
352 (let ((buffer (uniquify-fix-item-buffer item)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
353 (if (not (equal newname (buffer-name buffer)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
354 (let ((unset (current-buffer))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
355 ;; avoid hooks on rename-buffer
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
356 (uniquify-buffer-name-style nil))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
357 (set-buffer buffer)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
358 (rename-buffer newname)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
359 (set-buffer unset))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
360 (rplaca (nthcdr 3 item) t))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
361
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
362 (defun uniquify-reverse-components (instring)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
363 (let ((sofar '())
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
364 (cursor 0)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
365 (len (length instring))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
366 (sep (or uniquify-separator "\\")))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
367 (while (< cursor len)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
368 (if (= (aref instring cursor) ?/)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
369 (setq sofar (cons sep sofar)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
370 cursor (1+ cursor))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
371 (let ((first-slash (or (string-match "/" instring cursor) len)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
372 (setq sofar (cons (substring instring cursor first-slash) sofar)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
373 cursor first-slash))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
374 (apply (function concat) sofar)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
375
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
376
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
377 ;;; Hooks from the rest of Emacs
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
378
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
379 ;; The logical place to put all this code is in generate-new-buffer-name.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
380 ;; It's written in C, so we would add a generate-new-buffer-name-function
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
381 ;; which, if non-nil, would be called instead of the C. One problem with
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
382 ;; that is that generate-new-buffer-name takes a potential buffer name as
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
383 ;; its argument -- not other information, such as what file the buffer will
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
384 ;; visit.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
385
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
386 ;; The below solution works because generate-new-buffer-name is called
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
387 ;; only by rename-buffer (which, as of 19.29, is never called from C) and
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
388 ;; generate-new-buffer, which is called only by Lisp functions
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
389 ;; create-file-buffer and rename-uniquely. Rename-uniquely generally
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
390 ;; isn't used for buffers visiting files, so it's sufficient to hook
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
391 ;; rename-buffer and create-file-buffer. (Setting find-file-hooks isn't
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
392 ;; sufficient.)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
393
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
394 (defadvice rename-buffer (after rename-buffer-uniquify activate)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
395 "Uniquify buffer names with parts of directory name."
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
396 (if (and uniquify-buffer-name-style
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
397 ;; UNIQUE argument
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
398 (ad-get-arg 1))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
399 (progn
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
400 (if uniquify-after-kill-buffer-p
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
401 ;; call with no argument; rationalize vs. old name as well as new
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
402 (uniquify-rationalize-file-buffer-names)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
403 ;; call with argument: rationalize vs. new name only
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
404 (uniquify-rationalize-file-buffer-names
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
405 (uniquify-buffer-file-name (current-buffer)) (current-buffer)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
406 (setq ad-return-value (buffer-name (current-buffer))))))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
407
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
408 (defadvice create-file-buffer (after create-file-buffer-uniquify activate)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
409 "Uniquify buffer names with parts of directory name."
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
410 (if uniquify-buffer-name-style
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
411 (uniquify-rationalize-file-buffer-names (ad-get-arg 0) ad-return-value)))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
412
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
413 ;; Buffer deletion
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
414 ;; Rerationalize after a buffer is killed, to reduce coinciding buffer names.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
415 ;; This mechanism uses `kill-buffer-hook', which runs *before* deletion.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
416 ;; That means that the kill-buffer-hook function cannot just delete the
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
417 ;; buffer -- it has to set something to do the rationalization *later*.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
418 ;; It actually puts another function on `post-command-hook'. This other
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
419 ;; function runs the rationalization and then removes itself from the hook.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
420 ;; Is there a better way to accomplish this?
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
421 ;; (This ought to set some global variables so the work is done only for
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
422 ;; buffers with names similar to the deleted buffer. -MDE)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
423
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
424 (defun delay-uniquify-rationalize-file-buffer-names ()
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
425 "Add `delayed-uniquify-rationalize-file-buffer-names' to `post-command-hook'.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
426 For use on, eg, `kill-buffer-hook', to rationalize *after* buffer deletion."
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
427 (if (and uniquify-buffer-name-style
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
428 uniquify-after-kill-buffer-p)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
429 (add-hook 'post-command-hook
19123
056324b1fa58 (delay-uniquify-rationalize-file-buffer-names):
Richard M. Stallman <rms@gnu.org>
parents: 19044
diff changeset
430 'delayed-uniquify-rationalize-file-buffer-names)))
13814
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
431
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
432 (defun delayed-uniquify-rationalize-file-buffer-names ()
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
433 "Rerationalize buffer names and remove self from `post-command-hook'.
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
434 See also `delay-rationalize-file-buffer-names' for hook setter."
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
435 (uniquify-rationalize-file-buffer-names)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
436 (remove-hook 'post-command-hook
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
437 'delayed-uniquify-rationalize-file-buffer-names))
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
438
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
439 (add-hook 'kill-buffer-hook 'delay-uniquify-rationalize-file-buffer-names)
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
440
f683f93b94e9 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
441 ;;; uniquify.el ends here