annotate update-subdirs @ 107777:13c077500eb3

2010-04-04 John Wiegley <jwiegley@gmail.com> * ido.el (ido-use-virtual-buffers): New variable to indicate whether "virtual buffer" support is enabled for IDO. Essentially it works as follows: Say you are visiting a file and the buffer gets cleaned up by mignight.el. Later, you want to switch to that buffer, but find it's no longer open. With virtual buffers enabled, the buffer name stays in the buffer list (using the ido-virtual face, and always at the end), and if you select it, it opens the file back up again. This allows you to think less about whether recently opened files are still open or not. Most of the time you can quit Emacs, restart, and then switch to a file buffer that was previously open as if it still were. NOTE: This feature has been present in iswitchb for several years now, and I'm porting the same logic to IDO. (ido-virtual): Face used to indicate virtual buffers in the list. (ido-buffer-internal): If a buffer is chosen, and no such buffer exists, but a virtual buffer of that name does (which would be why it was in the list), recreate the buffer by reopening the file. (ido-make-buffer-list): If virtual buffers are being used, call `ido-add-virtual-buffers-to-list' before the make list hook. (ido-virtual-buffers): New variable which contains a copy of the current contents of the `recentf-list', albeit pared down for the sake of speed, and with proper faces applied. (ido-add-virtual-buffers-to-list): Using the `recentf-list', create a list of "virtual buffers" to present to the user in addition to the currently open set. Note that this logic could get rather slow if that list is too large. With the default `recentf-max-saved-items' of 200, there is little speed penalty.
author jwiegley@gmail.com
date Sun, 04 Apr 2010 02:55:19 -0400
parents 1d1d5d9bd884
children 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
1 #!/bin/sh
Dave Love <fx@gnu.org>
parents:
diff changeset
2 # Write into $1/subdirs.el a list of subdirs of directory $1.
36219
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
3
74370
7c327a7ce0e2 Add missing Copyright years.
Glenn Morris <rgm@gnu.org>
parents: 70121
diff changeset
4 # Copyright (C) 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004, 2005,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100959
diff changeset
5 # 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
94719
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
6
36219
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
7 # This file is part of GNU Emacs.
94719
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
8
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
9 # GNU Emacs is free software: you can redistribute it and/or modify
36219
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
10 # it under the terms of the GNU General Public License as published by
94719
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
11 # the Free Software Foundation, either version 3 of the License, or
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
12 # (at your option) any later version.
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
13
36219
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
14 # GNU Emacs is distributed in the hope that it will be useful,
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
17 # GNU General Public License for more details.
94719
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
18
36219
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
19 # You should have received a copy of the GNU General Public License
94719
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
20 # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
1a762a842f80 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
21
36219
f440b9766968 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25931
diff changeset
22
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
23 cd $1
Dave Love <fx@gnu.org>
parents:
diff changeset
24 for file in *; do
Dave Love <fx@gnu.org>
parents:
diff changeset
25 case $file in
25931
3ede6c50d7f5 also ignore CVS subdirs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25856
diff changeset
26 *.elc | *.el | term | RCS | CVS | Old | . | .. | =* | *~ | *.orig | *.rej)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47727
diff changeset
27 ;;
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
28 *)
Dave Love <fx@gnu.org>
parents:
diff changeset
29 if [ -d $file ]; then
99260
80b866cd08a3 Put obsolete directory last.
Chong Yidong <cyd@stupidchicken.com>
parents: 95369
diff changeset
30 if [ "$file" = "obsolete" ]; then
80b866cd08a3 Put obsolete directory last.
Chong Yidong <cyd@stupidchicken.com>
parents: 95369
diff changeset
31 subdirs="$subdirs \"$file\""
80b866cd08a3 Put obsolete directory last.
Chong Yidong <cyd@stupidchicken.com>
parents: 95369
diff changeset
32 else
80b866cd08a3 Put obsolete directory last.
Chong Yidong <cyd@stupidchicken.com>
parents: 95369
diff changeset
33 subdirs="\"$file\" $subdirs"
80b866cd08a3 Put obsolete directory last.
Chong Yidong <cyd@stupidchicken.com>
parents: 95369
diff changeset
34 fi
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
35 fi
99260
80b866cd08a3 Put obsolete directory last.
Chong Yidong <cyd@stupidchicken.com>
parents: 95369
diff changeset
36 ;;
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
37 esac
Dave Love <fx@gnu.org>
parents:
diff changeset
38 done
Dave Love <fx@gnu.org>
parents:
diff changeset
39
Dave Love <fx@gnu.org>
parents:
diff changeset
40 if [ "x$subdirs" = x ]; then
Dave Love <fx@gnu.org>
parents:
diff changeset
41 rm -f subdirs.el
Dave Love <fx@gnu.org>
parents:
diff changeset
42 else
86200
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
43 rm -f subdirs.el~
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
44 echo ";; -*- no-byte-compile: t -*-
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
45 ;; In load-path, after this directory should come
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
46 ;; certain of its subdirectories. Here we specify them.
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
47 (normal-top-level-add-to-load-path '($subdirs))
54489
fbc008c6f0cc Add local variables to prevent byte-compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
48 ;; Local" "Variables:
fbc008c6f0cc Add local variables to prevent byte-compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
49 ;; version-control: never
fbc008c6f0cc Add local variables to prevent byte-compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
50 ;; no-byte-compile: t
86200
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
51 ;; End:" > subdirs.el~
95369
d147ddeb05f9 Don't touch subdirs.el if it is unchanged.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94719
diff changeset
52 if cmp "subdirs.el" "subdirs.el~" >/dev/null 2>&1; then
d147ddeb05f9 Don't touch subdirs.el if it is unchanged.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94719
diff changeset
53 :; # echo "subdirs.el unchanged";
d147ddeb05f9 Don't touch subdirs.el if it is unchanged.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94719
diff changeset
54 else
86200
aa0de1ea4215 Atomically update subdirs.el.
Andreas Schwab <schwab@suse.de>
parents: 78277
diff changeset
55 mv subdirs.el~ subdirs.el
95369
d147ddeb05f9 Don't touch subdirs.el if it is unchanged.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94719
diff changeset
56 fi
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
57 fi
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
58
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
59 # arch-tag: 56ebcf1b-5c30-4934-b0b4-72d374064704