annotate lisp/ido.el @ 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 ee670d4f8293
children 3de4f4f86a82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1 ;;; ido.el --- interactively do things with buffers and files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64409
diff changeset
3 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106366
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
5
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
6 ;; Author: Kim F. Storm <storm@cua.dk>
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
7 ;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
8 ;; Keywords: extensions convenience
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
9
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91509
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91509
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91509
diff changeset
15 ;; (at your option) any later version.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
16
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
20 ;; GNU General Public License for more details.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
21
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91509
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
24
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
25
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
26 ;;; Commentary:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
27
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
28 ;; Ido - interactive do - switches between buffers and opens files and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
29 ;; directories with a minimum of keystrokes. It is a superset of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
30 ;; iswitchb, the interactive buffer switching package by Stephen Eglen.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
31
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
32 ;; Interactive substring matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
33 ;; ------------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
34 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
35 ;; As you type in a substring, the list of buffers or files currently
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
36 ;; matching the substring are displayed as you type. The list is
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
37 ;; ordered so that the most recent buffers or files visited come at
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
38 ;; the start of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
39 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
40 ;; The buffer or file at the start of the list will be the one visited
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
41 ;; when you press RETURN. By typing more of the substring, the list is
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
42 ;; narrowed down so that gradually the buffer or file you want will be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
43 ;; at the top of the list. Alternatively, you can use C-s and C-r (or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
44 ;; the right and left arrow keys) to rotate buffer or file names in the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
45 ;; list until the one you want is at the top of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
46 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
47 ;; Completion is also available so that you can see what is common to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
48 ;; all of the matching buffers or files as you type.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
49 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
50 ;; Example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
51 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
52 ;; If I have two buffers called "123456" and "123", with "123456" the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
53 ;; most recent, when I use ido-switch-buffer, I first of all get
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
54 ;; presented with the list of all the buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
55 ;;
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
56 ;; Buffer: {123456 | 123}
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
57 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
58 ;; If I then press 2:
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
59 ;; Buffer: 2[3]{123456 | 123}
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
60 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
61 ;; The list in {...} are the matching buffers, most recent first
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
62 ;; (buffers visible in the current frame are put at the end of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
63 ;; list by default). At any time I can select the item at the head of
64341
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
64 ;; the list by pressing RET. I can also put the first element at the
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
65 ;; end of the list by pressing C-s or [right], or bring the last
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
66 ;; element to the head of the list by pressing C-r or [left].
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
67 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
68 ;; The item in [...] indicates what can be added to my input by
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
69 ;; pressing TAB. In this case, I will get "3" added to my input.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
70
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
71 ;; So, I press TAB:
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
72 ;; Buffer: 23{123456 | 123}
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
73 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
74 ;; At this point, I still have two matching buffers.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
75 ;; If I want the first buffer in the list, I simply press RET. If I
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
76 ;; wanted the second in the list, I could press C-s to move it to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
77 ;; top of the list and then RET to select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
78 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
79 ;; However, if I type 4, I only have one match left:
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
80 ;; Buffer: 234[123456]
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
81 ;;
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
82 ;; Since there is only one matching buffer left, it is given in [] and
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
83 ;; it is shown in the `ido-only-match' face (ForestGreen). I can now
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
84 ;; press TAB or RET to go to that buffer.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
85 ;;
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
86 ;; If I want to create a new buffer named "234", I press C-j instead of
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
87 ;; TAB or RET.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
88 ;;
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
89 ;; If instead, I type "a":
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
90 ;; Buffer: 234a [No match]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
91 ;; There are no matching buffers. If I press RET or TAB, I can be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
92 ;; prompted to create a new buffer called "234a".
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
93 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
94 ;; Of course, where this function comes in really useful is when you
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
95 ;; can specify the buffer using only a few keystrokes. In the above
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
96 ;; example, the quickest way to get to the "123456" file would be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
97 ;; just to type 4 and then RET (assuming there isn't any newer buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
98 ;; with 4 in its name).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
99
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
100 ;; Likewise, if you use C-x C-f (ido-find-file), the list of files and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
101 ;; directories in the current directory is provided in the same
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
102 ;; fashion as the buffers above. The files and directories are
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
103 ;; normally sorted in alphabetical order, but the most recently
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
104 ;; visited directory is placed first to speed up navigating to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
105 ;; directories that you have visited recently.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
106 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
107 ;; In addition to scrolling through the list using [right] and [left],
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
108 ;; you can use [up] and [down] to quickly scroll the list to the next
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
109 ;; or previous subdirectory.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
110 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
111 ;; To go down into a subdirectory, and continue the file selection on
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
112 ;; the files in that directory, simply move the directory to the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
113 ;; of the list and hit RET.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
114 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
115 ;; To go up to the parent directory, delete any partial file name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
116 ;; already specified (e.g. using [backspace]) and hit [backspace].
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
117 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
118 ;; To go to the root directory (on the current drive), enter two
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
119 ;; slashes. On MS-DOS or Windows, to select the root of another
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
120 ;; drive, enter X:/ where X is the drive letter. You can also visit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
121 ;; files on other hosts using the ange-ftp notations `/host:' and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
122 ;; `/user@host:'. See the variable `ido-slow-ftp-hosts' if you want
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
123 ;; to inhibit the ido substring matching for ftp access.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
124 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
125 ;; If for some reason you cannot specify the proper file using
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
126 ;; ido-find-file, you can press C-f to enter the normal find-file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
127 ;; You can also press C-b to drop into ido-switch-buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
128
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
129 ;; See the doc string of ido-switch-buffer and ido-find-file for full
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
130 ;; keybindings and features.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
131 ;; (describe-function 'ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
132
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
133 ;; Hidden buffers and files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
134 ;; ------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
135 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
136 ;; Normally, ido does not include hidden buffers (whose name starts
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
137 ;; with a space) and hidden files and directories (whose name starts
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
138 ;; with `.') in the list of possible completions. However, if the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
139 ;; substring you enter does not match any of the visible buffers or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
140 ;; files, ido will automatically look for completions among the hidden
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
141 ;; buffers or files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
142 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
143 ;; You can toggle display of the hidden buffers and files with C-a.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
144
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
145 ;; Additional functionality
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
146 ;; ------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
147 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
148 ;; After C-x b, the buffer at the head of the list can be killed by
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
149 ;; pressing C-k. If the buffer needs saving, you will be queried
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
150 ;; before the buffer is killed.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
151 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
152 ;; Likewise, after C-x C-f, you can delete (i.e. physically remove)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
153 ;; the file at the head of the list with C-k. You will always be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
154 ;; asked for confirmation before the file is deleted.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
155 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
156 ;; If you enter C-x b to switch to a buffer visiting a given file, and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
157 ;; you find that the file you are after is not in any buffer, you can
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
158 ;; press C-f to immediately drop into ido-find-file. And you can
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
159 ;; switch back to buffer selection with C-b.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
160
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
161 ;; Prefix matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
162 ;; ---------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
163 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
164 ;; The standard way of completion with Unix-shells and Emacs is to insert a
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
165 ;; PREFIX and then hitting TAB (or another completion key). Cause of this
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
166 ;; behavior has become second nature to a lot of emacs users `ido' offers in
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
167 ;; addition to the default substring-matching-method (look above) also the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
168 ;; prefix-matching-method. The kind of matching is the only difference to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
169 ;; the description of the substring-matching above.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
170 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
171 ;; You can toggle prefix matching with C-p.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
172 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
173 ;; Example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
174 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
175 ;; If you have again two Buffers "123456" and "123" then hitting "2" does
64341
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
176 ;; not match because "2" is not a PREFIX in any of the buffer-names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
177
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
178 ;; Flexible matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
179 ;; -----------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
180 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
181 ;; If you set ido-enable-flex-matching, ido will do a more flexible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
182 ;; matching (unless regexp matching is active) to find possible matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
183 ;; among the available buffer or file names if no matches are found using
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
184 ;; the normal prefix or substring matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
185 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
186 ;; The flexible matching implies that any item which simply contains all
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
187 ;; of the entered characters in the specified sequence will match.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
188 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
189 ;; Example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
190 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
191 ;; If you have four files "alpha", "beta", "gamma", and "delta",
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
192 ;; entering "aa" will match "alpha" and "gamma", while "ea" matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
193 ;; "beta" and "delta". If prefix matching is also active, "aa" only
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
194 ;; matches "alpha", while "ea" does not match any files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
195
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
196 ;; Regexp matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
197 ;; ---------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
198 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
199 ;; There is limited provision for regexp matching within ido,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
200 ;; enabled through `ido-enable-regexp' (toggle with C-t).
64341
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
201 ;; This allows you to type `[ch]$' for example and see all file names
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
202 ;; ending in `c' or `h'.
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
203 ;;
e461e45e6f66 Fix commentary.
Kim F. Storm <storm@cua.dk>
parents: 64336
diff changeset
204 ;; Note: ido-style completion is inhibited when you enable regexp matching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
205
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
206
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
207 ;; Customization
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
208 ;; -------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
209 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
210 ;; Customize the `ido' group to change the `ido' functionality.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
211 ;;
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
212 ;; To modify the keybindings, use the ido-setup-hook. For example:
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
213 ;;(add-hook 'ido-setup-hook 'ido-my-keys)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
214 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
215 ;;(defun ido-my-keys ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
216 ;; "Add my keybindings for ido."
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
217 ;; (define-key ido-completion-map " " 'ido-next-match)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
218 ;; )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
219
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
220 ;; Seeing all the matching buffers or files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
221 ;; ----------------------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
222 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
223 ;; If you have many matching files, they may not all fit onto one
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
224 ;; line of the minibuffer. Normally, the minibuffer window will grow
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
225 ;; to show you more of the matching files (depending on the setting
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
226 ;; of the variables `resize-mini-windows' and `max-mini-window-height').
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
227 ;; If you want ido to behave differently from the default minibuffer
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 95057
diff changeset
228 ;; resizing behavior, set the variable `ido-max-window-height'.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
229 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
230 ;; Also, to improve the responsiveness of ido, the maximum number of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
231 ;; matching items is limited to 12, but you can increase or removed
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
232 ;; this limit via the `ido-max-prospects' variable.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
233
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
234 ;; To see a full list of all matching buffers in a separate buffer,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
235 ;; hit ? or press TAB when there are no further completions to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
236 ;; substring. Repeated TAB presses will scroll you through this
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
237 ;; separate buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
238
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
239 ;; Changing the list of files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
240 ;; --------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
241
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
242 ;; By default, the list of current files is most recent first,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
243 ;; oldest last, with the exception that the files visible in the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
244 ;; current frame are put at the end of the list. A hook exists to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
245 ;; allow other functions to order the list. For example, if you add:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
246 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
247 ;; (add-hook 'ido-make-buffer-list-hook 'ido-summary-buffers-to-end)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
248 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
249 ;; then all files matching "Summary" are moved to the end of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
250 ;; list. (I find this handy for keeping the INBOX Summary and so on
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
251 ;; out of the way.) It also moves files matching "output\*$" to the
56754
5ea587a67aae Update AUCTeX information.
David Kastrup <dak@gnu.org>
parents: 55362
diff changeset
252 ;; end of the list (these are created by AUCTeX when compiling.)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
253 ;; Other functions could be made available which alter the list of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
254 ;; matching files (either deleting or rearranging elements.)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
255
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
256 ;; Highlighting
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
257 ;; ------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
258
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
259 ;; The highlighting of matching items is controlled via ido-use-faces.
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
260 ;; The faces used are ido-first-match, ido-only-match and
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
261 ;; ido-subdir.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
262 ;; Colouring of the matching item was suggested by
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
263 ;; Carsten Dominik (dominik@strw.leidenuniv.nl).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
264
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
265 ;; Replacement for read-buffer and read-file-name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
266 ;; ----------------------------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
267
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
268 ;; ido-read-buffer and ido-read-file-name have been written to be drop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
269 ;; in replacements for the normal buffer and file name reading
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
270 ;; functions `read-buffer' and `read-file-name'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
271
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
272 ;; To use ido for all buffer and file selections in Emacs, customize the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
273 ;; variable `ido-everywhere'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
274
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 95057
diff changeset
275 ;; Using ido-like behavior in other lisp packages
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
276 ;; -----------------------------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
277
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
278 ;; If you don't want to rely on the `ido-everywhere' functionality,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
279 ;; ido-read-buffer, ido-read-file-name, and ido-read-directory-name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
280 ;; can be used by other packages to read a buffer name, a file name,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
281 ;; or a directory name in the `ido' way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
282
67390
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
283 ;;; Acknowledgements
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
284
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
285 ;; Infinite amounts of gratitude goes to Stephen Eglen <stephen@cns.ed.ac.uk>
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
286 ;; who wrote iswitch-buffer mode - from which I ripped off 99% of the code
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
287 ;; for ido-switch-buffer and found the inspiration for ido-find-file.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
288 ;; The ido package would never have existed without his work.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
289
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
290 ;; Also thanks to Klaus Berndl, Rohit Namjoshi, Robert Fenk, Alex
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
291 ;; Schroeder, Bill Benedetto, Stephen Eglen, and many others for bug
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
292 ;; fixes and improvements.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
293
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
294 ;;; History
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
295
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
296 ;; Since I discovered Stephen Eglen's excellent iswitchb package, I just
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
297 ;; couldn't live without it, but once being addicted to switching buffers
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
298 ;; with a minimum of keystrokes, I soon found that opening files in the
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
299 ;; old-fashioned way was just too slow - so I decided to write a package
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
300 ;; which could open files with the same speed and ease as iswitchb could
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
301 ;; switch buffers.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
302
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
303 ;; I originally wrote a separate ifindf.el package based on a copy of
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
304 ;; iswitchb.el, which did for opening files what iswitchb did for
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
305 ;; switching buffers. Along the way, I corrected a few errors in
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
306 ;; ifindf which could have found its way back into iswitchb, but since
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
307 ;; most of the functionality of the two package was practically
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
308 ;; identical, I decided that the proper thing to do was to merge my
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
309 ;; ifindf package back into iswitchb.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
310 ;;
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
311 ;; This is basically what ido (interactively do) is all about; but I
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
312 ;; found it ackward to merge my changes into the "iswitchb-" namespace,
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
313 ;; so I invented a common "ido-" namespace for the merged packages.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
314 ;;
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
315 ;; This version is based on ido.el version 1.57 released on
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
316 ;; gnu.emacs.sources adapted for emacs 22.1 to use command remapping
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
317 ;; and optionally hooking the read-buffer and read-file-name functions.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
318 ;;
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
319 ;; Prefix matching was added by Klaus Berndl <klaus.berndl@sdm.de> based on
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
320 ;; an idea of Yuji Minejima <ggb01164@nifty.ne.jp> and his mcomplete-package.
d90725ea1fdb Move Acknowledgements and History after Commentary.
Kim F. Storm <storm@cua.dk>
parents: 67362
diff changeset
321
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
322
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
323 ;;; Code:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
324
65292
772a2f08bdbd (cua-inhibit-cua-keys): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 65064
diff changeset
325 (defvar cua-inhibit-cua-keys)
772a2f08bdbd (cua-inhibit-cua-keys): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 65064
diff changeset
326
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
327 ;;; User Variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
328 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
329 ;; These are some things you might want to change.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
330
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
331 (defun ido-fractionp (n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
332 (and (numberp n) (> n 0.0) (<= n 1.0)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
333
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
334 (defgroup ido nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
335 "Switch between files using substrings."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
336 :group 'extensions
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
337 :group 'convenience
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59995
diff changeset
338 :version "22.1"
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
339 :link '(emacs-commentary-link :tag "Commentary" "ido.el")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
340 :link '(emacs-library-link :tag "Lisp File" "ido.el"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
341
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
342 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
343 (defcustom ido-mode nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
344 "Determines for which functional group \(buffer and files) ido behavior
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
345 should be enabled. The following values are possible:
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
346 - `buffer': Turn only on ido buffer behavior \(switching, killing,
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
347 displaying...)
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
348 - `file': Turn only on ido file behavior \(finding, writing, inserting...)
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
349 - `both': Turn on ido buffer and file behavior.
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
350 - `nil': Turn off any ido switching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
351
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
352 Setting this variable directly does not take effect;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
353 use either \\[customize] or the function `ido-mode'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
354 :set #'(lambda (symbol value)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
355 (ido-mode value))
98136
9f49cfff88dd (ido-mode): Initialize with custom-initialize-default. (Bug#947).
Glenn Morris <rgm@gnu.org>
parents: 98110
diff changeset
356 :initialize 'custom-initialize-default
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
357 :require 'ido
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
358 :link '(emacs-commentary-link "ido.el")
69809
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
359 :set-after '(ido-save-directory-list-file
69817
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
360 ;; This will clear ido-unc-hosts-cache, so set it
69809
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
361 ;; before loading history file.
69817
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
362 ido-unc-hosts)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
363 :type '(choice (const :tag "Turn on only buffer" buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
364 (const :tag "Turn on only file" file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
365 (const :tag "Turn on both buffer and file" both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
366 (const :tag "Switch off all" nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
367 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
368
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
369 (defcustom ido-case-fold case-fold-search
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
370 "Non-nil if searching of buffer and file names should ignore case."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
371 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
372 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
373
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
374 (defcustom ido-ignore-buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
375 '("\\` ")
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
376 "List of regexps or functions matching buffer names to ignore.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
377 For example, traditional behavior is not to list buffers whose names begin
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
378 with a space, for which the regexp is `\\` '. See the source file for
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
379 example functions that filter buffer names."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
380 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
381 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
382
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
383 (defcustom ido-ignore-files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
384 '("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./")
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
385 "List of regexps or functions matching file names to ignore.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
386 For example, traditional behavior is not to list files whose names begin
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
387 with a #, for which the regexp is `\\`#'. See the source file for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
388 example functions that filter filenames."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
389 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
390 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
391
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
392 (defcustom ido-ignore-extensions t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
393 "Non-nil means ignore files in `completion-ignored-extensions' list."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
394 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
395 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
396
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
397 (defcustom ido-show-dot-for-dired nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
398 "Non-nil means to always put . as the first item in file name lists.
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
399 This allows the current directory to be opened immediately with `dired'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
400 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
401 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
402
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
403 (defcustom ido-file-extensions-order nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
404 "List of file extensions specifying preferred order of file selections.
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
405 Each element is either a string with `.' as the first char, an empty
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
406 string matching files without extension, or t which is the default order
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
407 for files with an unlisted file extension."
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
408 :type '(repeat (choice string
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
409 (const :tag "Default order" t)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
410 :group 'ido)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
411
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
412 (defcustom ido-ignore-directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
413 '("\\`CVS/" "\\`\\.\\./" "\\`\\./")
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
414 "List of regexps or functions matching sub-directory names to ignore."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
415 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
416 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
417
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
418 (defcustom ido-ignore-directories-merge nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
419 "List of regexps or functions matching directory names to ignore during merge.
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
420 Directory names matched by one of the regexps in this list are not inserted
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
421 in merged file and directory lists."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
422 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
423 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
424
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
425 ;; Examples for setting the value of ido-ignore-buffers
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
426 ;;(defun ido-ignore-c-mode (name)
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
427 ;; "Ignore all c mode buffers -- example function for ido."
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
428 ;; (with-current-buffer name
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
429 ;; (derived-mode-p 'c-mode)))
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
430 ;;
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
431 ;;(setq ido-ignore-buffers '("^ " ido-ignore-c-mode))
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
432
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
433 ;; Examples for setting the value of ido-ignore-files
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
434 ;;(setq ido-ignore-files '("^ " "\\.c\\'" "\\.h\\'"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
435
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
436 (defcustom ido-default-file-method 'raise-frame
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
437 "How to visit a new file when using `ido-find-file'.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
438 Possible values:
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
439 `selected-window' Show new file in selected window
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
440 `other-window' Show new file in another window (same frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
441 `display' Display file in another window without selecting to it
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
442 `other-frame' Show new file in another frame
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
443 `maybe-frame' If a file is visible in another frame, prompt to ask if you
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
444 you want to see the file in the same window of the current
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
445 frame or in the other frame
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
446 `raise-frame' If a file is visible in another frame, raise that
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
447 frame; otherwise, visit the file in the same window"
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
448 :type '(choice (const :tag "Visit in selected window" selected-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
449 (const :tag "Visit in other window" other-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
450 (const :tag "Display (no select) in other window" display)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
451 (const :tag "Visit in other frame" other-frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
452 (const :tag "Ask to visit in other frame" maybe-frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
453 (const :tag "Raise frame if already visited" raise-frame))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
454 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
455
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
456 (defcustom ido-default-buffer-method 'raise-frame
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
457 "How to switch to new buffer when using `ido-switch-buffer'.
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
458 See `ido-default-file-method' for details."
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
459 :type '(choice (const :tag "Show in selected window" selected-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
460 (const :tag "Show in other window" other-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
461 (const :tag "Display (no select) in other window" display)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
462 (const :tag "Show in other frame" other-frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
463 (const :tag "Ask to show in other frame" maybe-frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
464 (const :tag "Raise frame if already shown" raise-frame))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
465 :type '(choice (const selected-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
466 (const other-window)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
467 (const display)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
468 (const other-frame)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
469 (const maybe-frame)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
470 (const raise-frame))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
471 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
472
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
473 (defcustom ido-enable-flex-matching nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
474 "Non-nil means that `ido' will do flexible string matching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
475 Flexible matching means that if the entered string does not
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
476 match any item, any item containing the entered characters
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
477 in the given sequence will match."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
478 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
479 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
480
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
481
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
482 (defcustom ido-enable-regexp nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
483 "Non-nil means that `ido' will do regexp matching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
484 Value can be toggled within `ido' using `ido-toggle-regexp'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
485 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
486 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
487
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
488 (defcustom ido-enable-prefix nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
489 "Non-nil means only match if the entered text is a prefix of file name.
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
490 This behavior is like the standard Emacs completion.
73909
9a271b9a8284 (ido-enable-prefix): Improve previous doc fix.
Glenn Morris <rgm@gnu.org>
parents: 73877
diff changeset
491 If nil, match if the entered text is an arbitrary substring.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
492 Value can be toggled within `ido' using `ido-toggle-prefix'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
493 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
494 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
495
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
496 (defcustom ido-enable-dot-prefix nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
497 "Non-nil means to match leading dot as prefix.
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
498 I.e. hidden files and buffers will match only if you type a dot
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
499 as first char even if `ido-enable-prefix' is nil."
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
500 :type 'boolean
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
501 :group 'ido)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
502
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
503 (defcustom ido-confirm-unique-completion nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
504 "Non-nil means that even a unique completion must be confirmed.
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
505 This means that \\[ido-complete] must always be followed by \\[ido-exit-minibuffer]
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
506 even when there is only one unique completion."
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
507 :type 'boolean
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
508 :group 'ido)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
509
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
510 (defcustom ido-cannot-complete-command 'ido-completion-help
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
511 "Command run when `ido-complete' can't complete any more.
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
512 The most useful values are `ido-completion-help', which pops up a
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
513 window with completion alternatives, or `ido-next-match' or
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
514 `ido-prev-match', which cycle the buffer list."
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
515 :type 'function
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
516 :group 'ido)
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
517
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
518
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
519 (defcustom ido-record-commands t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
520 "Non-nil means that `ido' will record commands in command history.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
521 Note that the non-ido equivalent command is recorded."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
522 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
523 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
524
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
525 (defcustom ido-max-prospects 12
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
526 "Non-zero means that the prospect list will be limited to that number of items.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
527 For a long list of prospects, building the full list for the minibuffer can take a
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
528 non-negligible amount of time; setting this variable reduces that time."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
529 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
530 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
531
49211
93a6625a2ef3 Rename ido-max-prompt-width to ido-max-file-prompt-width for consistency.
Kim F. Storm <storm@cua.dk>
parents: 49208
diff changeset
532 (defcustom ido-max-file-prompt-width 0.35
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
533 "Non-zero means that the prompt string be limited to that number of characters.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
534 If value is a floating point number, it specifies a fraction of the frame width."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
535 :type '(choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
536 (integer :tag "Characters" :value 20)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
537 (restricted-sexp :tag "Fraction of frame width"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
538 :value 0.35
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
539 :match-alternatives (ido-fractionp)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
540 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
541
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
542 (defcustom ido-max-window-height nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
543 "Non-nil specifies a value to override `max-mini-window-height'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
544 :type '(choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
545 (const :tag "Don't override" nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
546 (integer :tag "Number of lines" :value 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
547 (restricted-sexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
548 :tag "Fraction of window height"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
549 :value 0.25
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
550 :match-alternatives (ido-fractionp)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
551 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
552
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
553 (defcustom ido-enable-last-directory-history t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
554 "Non-nil means that `ido' will remember latest selected directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
555 See `ido-last-directory-list' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
556 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
557 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
558
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
559 (defcustom ido-max-work-directory-list 50
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
560 "Maximum number of working directories to record.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
561 This is the list of directories where files have most recently been opened.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
562 See `ido-work-directory-list' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
563 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
564 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
565
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
566 (defcustom ido-work-directory-list-ignore-regexps nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
567 "List of regexps matching directories which should not be recorded.
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
568 Directory names matched by one of the regexps in this list are not inserted in
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
569 the `ido-work-directory-list' list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
570 :type '(repeat regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
571 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
572
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
573
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
574 (defcustom ido-use-filename-at-point nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
575 "Non-nil means that ido shall look for a filename at point.
64168
f7e7dd269327 * ido.el (ido-use-filename-at-point): New choice `guess'.
Kim F. Storm <storm@cua.dk>
parents: 64166
diff changeset
576 May use `ffap-guesser' to guess whether text at point is a filename.
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
577 If found, use that as the starting point for filename selection."
64168
f7e7dd269327 * ido.el (ido-use-filename-at-point): New choice `guess'.
Kim F. Storm <storm@cua.dk>
parents: 64166
diff changeset
578 :type '(choice
f7e7dd269327 * ido.el (ido-use-filename-at-point): New choice `guess'.
Kim F. Storm <storm@cua.dk>
parents: 64166
diff changeset
579 (const :tag "Disabled" nil)
f7e7dd269327 * ido.el (ido-use-filename-at-point): New choice `guess'.
Kim F. Storm <storm@cua.dk>
parents: 64166
diff changeset
580 (const :tag "Guess filename" guess)
f7e7dd269327 * ido.el (ido-use-filename-at-point): New choice `guess'.
Kim F. Storm <storm@cua.dk>
parents: 64166
diff changeset
581 (other :tag "Use literal filename" t))
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
582 :group 'ido)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
583
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
584
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
585 (defcustom ido-use-url-at-point nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
586 "Non-nil means that ido shall look for a URL at point.
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
587 If found, call `find-file-at-point' to visit it."
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
588 :type 'boolean
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
589 :group 'ido)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
590
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
591
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
592 (defcustom ido-enable-tramp-completion t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
593 "Non-nil means that ido shall perform tramp method and server name completion.
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
594 A tramp file name uses the following syntax: /method:user@host:filename."
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
595 :type 'boolean
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
596 :group 'ido)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
597
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
598 (defcustom ido-record-ftp-work-directories t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
599 "Non-nil means record ftp file names in the work directory list."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
600 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
601 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
602
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
603 (defcustom ido-merge-ftp-work-directories nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
604 "If nil, merging ignores ftp file names in the work directory list."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
605 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
606 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
607
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
608 (defcustom ido-cache-ftp-work-directory-time 1.0
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
609 "Maximum time to cache contents of an ftp directory (in hours).
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
610 Use C-l in prompt to refresh list.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
611 If zero, ftp directories are not cached."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
612 :type 'number
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
613 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
614
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
615 (defcustom ido-slow-ftp-hosts nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
616 "List of slow ftp hosts where ido prompting should not be used.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
617 If an ftp host is on this list, ido automatically switches to the non-ido
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
618 equivalent function, e.g. `find-file' rather than `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
619 :type '(repeat string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
620 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
621
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
622 (defcustom ido-slow-ftp-host-regexps nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
623 "List of regexps matching slow ftp hosts (see `ido-slow-ftp-hosts')."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
624 :type '(repeat regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
625 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
626
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
627 (defvar ido-unc-hosts-cache t
69814
7512e19cdda7 (ido-unc-hosts-cache): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 69809
diff changeset
628 "Cached value from `ido-unc-hosts' function.")
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
629
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
630 (defcustom ido-unc-hosts nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
631 "List of known UNC host names to complete after initial //.
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
632 If value is a function, that function is called to search network for
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
633 hosts on first use of UNC path."
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
634 :type '(choice (repeat :tag "List of UNC host names" string)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
635 (function-item :tag "Use `NET VIEW'"
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
636 :value ido-unc-hosts-net-view)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
637 (function :tag "Your own function"))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
638 :set #'(lambda (symbol value)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
639 (set symbol value)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
640 (setq ido-unc-hosts-cache t))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
641 :group 'ido)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
642
69817
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
643 (defcustom ido-downcase-unc-hosts t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
644 "Non-nil if UNC host names should be downcased."
69817
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
645 :type 'boolean
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
646 :group 'ido)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
647
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
648 (defcustom ido-ignore-unc-host-regexps nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
649 "List of regexps matching UNC hosts to ignore.
69817
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
650 Case is ignored if `ido-downcase-unc-hosts' is set."
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
651 :type '(repeat regexp)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
652 :group 'ido)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
653
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
654 (defcustom ido-cache-unc-host-shares-time 8.0
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
655 "Maximum time to cache shares of an UNC host (in hours).
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
656 Use C-l in prompt to refresh list.
69733
156c18d0fca4 (ido-cache-unc-host-shares-time, ido-max-work-file-list, ido-switch-buffer):
Juanma Barranquero <lekktu@gmail.com>
parents: 69542
diff changeset
657 If zero, UNC host shares are not cached."
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
658 :type 'number
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
659 :group 'ido)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
660
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
661 (defcustom ido-max-work-file-list 10
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
662 "Maximum number of names of recently opened files to record.
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
663 This is the list of the file names (sans directory) which have most recently
69733
156c18d0fca4 (ido-cache-unc-host-shares-time, ido-max-work-file-list, ido-switch-buffer):
Juanma Barranquero <lekktu@gmail.com>
parents: 69542
diff changeset
664 been opened. See `ido-work-file-list' and `ido-save-directory-list-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
665 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
666 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
667
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
668 (defcustom ido-work-directory-match-only t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
669 "Non-nil means to skip non-matching directories in the directory history.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
670 When some text is already entered at the `ido-find-file' prompt, using
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
671 \\[ido-prev-work-directory] or \\[ido-next-work-directory] will skip directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
672 without any matching entries."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
673 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
674 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
675
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
676 (defcustom ido-auto-merge-work-directories-length 0
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
677 "Automatically switch to merged work directories during file name input.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
678 The value is number of characters to type before switching to merged mode.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
679 If zero, the switch happens when no matches are found in the current directory.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
680 Automatic merging is disabled if the value is negative."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
681 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
682 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
683
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
684 (defcustom ido-auto-merge-delay-time 0.70
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
685 "Delay in seconds to wait for more input before doing auto merge."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
686 :type 'number
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
687 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
688
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
689 (defcustom ido-auto-merge-inhibit-characters-regexp "[][*?~]"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
690 "Regexp matching characters which should inhibit automatic merging.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
691 When a (partial) file name matches this regexp, merging is inhibited."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
692 :type 'regexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
693 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
694
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
695 (defcustom ido-merged-indicator "^"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
696 "The string appended to first choice if it has multiple directory choices."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
697 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
698 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
699
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
700 (defcustom ido-max-dir-file-cache 100
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
701 "Maximum number of working directories to be cached.
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
702 This is the size of the cache of `file-name-all-completions' results.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
703 Each cache entry is time stamped with the modification time of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
704 directory. Some systems, like Windows, have unreliable directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
705 modification times, so you may choose to disable caching on such
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
706 systems, or explicitly refresh the cache contents using the command
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
707 `ido-reread-directory' command (C-l) in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
708 See also `ido-dir-file-cache' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
709 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
710 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
711
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
712 (defcustom ido-max-directory-size 30000
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
713 "Maximum size (in bytes) for directories to use ido completion.
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
714 If you enter a directory with a size larger than this size, ido will
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
715 not provide the normal completion. To show the completions, use C-a."
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
716 :type '(choice (const :tag "No limit" nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
717 (integer :tag "Size in bytes" 30000))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
718 :group 'ido)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
719
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
720 (defcustom ido-rotate-file-list-default nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
721 "Non-nil means that `ido' will always rotate file list to get default in front."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
722 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
723 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
724
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
725 (defcustom ido-enter-matching-directory 'only
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
726 "Additional methods to enter sub-directory of first/only matching item.
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
727 If value is 'first, enter first matching sub-directory when typing a slash.
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
728 If value is 'only, typing a slash only enters the sub-directory if it is
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
729 the only matching item.
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
730 If value is t, automatically enter a sub-directory when it is the only
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
731 matching item, even without typing a slash."
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
732 :type '(choice (const :tag "Never" nil)
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
733 (const :tag "Slash enters first directory" first)
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
734 (const :tag "Slash enters first and only directory" only)
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
735 (other :tag "Always enter unique directory" t))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
736 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
737
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
738 (defcustom ido-create-new-buffer 'prompt
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
739 "Specify whether a new buffer is created if no buffer matches substring.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
740 Choices are 'always to create new buffers unconditionally, 'prompt to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
741 ask user whether to create buffer, or 'never to never create new buffer."
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
742 :type '(choice (const always)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
743 (const prompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
744 (const never))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
745 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
746
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
747 (defcustom ido-setup-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
748 "Hook run after the ido variables and keymap have been setup.
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
749 The dynamic variable `ido-cur-item' contains the current type of item that
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
750 is read by ido; possible values are file, dir, buffer, and list.
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
751 Additional keys can be defined in `ido-completion-map'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
752 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
753 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
754
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
755 (defcustom ido-separator nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
756 "String used by ido to separate the alternatives in the minibuffer.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
757 Obsolete. Set 3rd element of `ido-decorations' instead."
46631
527b6139edd2 (ido-separator): Fix type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 46333
diff changeset
758 :type '(choice string (const nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
759 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
760
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
761 (defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]" " [Confirm]")
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
762 "List of strings used by ido to display the alternatives in the minibuffer.
103193
5e04d99c2e49 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 103191
diff changeset
763 There are 11 elements in this list:
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
764 1st and 2nd elements are used as brackets around the prospect list,
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
765 3rd element is the separator between prospects (ignored if `ido-separator' is set),
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
766 4th element is the string inserted at the end of a truncated list of prospects,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
767 5th and 6th elements are used as brackets around the common match string which
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
768 can be completed using TAB,
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
769 7th element is the string displayed when there are no matches, and
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
770 8th element is displayed if there is a single match (and faces are not used),
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
771 9th element is displayed when the current directory is non-readable,
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
772 10th element is displayed when directory exceeds `ido-max-directory-size',
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
773 11th element is displayed to confirm creating new file or buffer."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
774 :type '(repeat string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
775 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
776
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
777 (defcustom ido-use-virtual-buffers nil
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
778 "If non-nil, refer to past buffers as well as existing ones.
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
779 This feature relies upon the `recentf' package, which will be
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
780 enabled if this variable is configured to a non-nil value."
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
781 :type 'boolean
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
782 :group 'ido)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
783
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
784 (defcustom ido-use-faces t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
785 "Non-nil means use ido faces to highlighting first match, only match and
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
786 subdirs in the alternatives."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
787 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
788 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
789
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
790 (defface ido-first-match '((t (:bold t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
791 "Face used by ido for highlighting first match."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
792 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
793
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
794 (defface ido-only-match '((((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
795 (:foreground "ForestGreen"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
796 (t (:italic t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
797 "Face used by ido for highlighting only match."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
798 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
799
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
800 (defface ido-subdir '((((min-colors 88) (class color))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
801 (:foreground "red1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
802 (((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
803 (:foreground "red"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
804 (t (:underline t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
805 "Face used by ido for highlighting subdirs in the alternatives."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
806 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
807
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
808 (defface ido-virtual '((t (:inherit font-lock-builtin-face)))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
809 "Face used by ido for matching virtual buffer names."
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
810 :group 'ido)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
811
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
812 (defface ido-indicator '((((min-colors 88) (class color))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
813 (:foreground "yellow1"
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
814 :background "red1"
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
815 :width condensed))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
816 (((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
817 (:foreground "yellow"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
818 :background "red"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
819 :width condensed))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
820 (t (:inverse-video t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
821 "Face used by ido for highlighting its indicators."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
822 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
823
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
824 (defface ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
825 '((t
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
826 (:inherit font-lock-warning-face)))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
827 "Ido face for indicating incomplete regexps."
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
828 :group 'ido)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
829
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
830 (defcustom ido-make-file-list-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
831 "List of functions to run when the list of matching files is created.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
832 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
833 `ido-temp-list' which contains the current list of matching files."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
834 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
835 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
836
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
837 (defcustom ido-make-dir-list-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
838 "List of functions to run when the list of matching directories is created.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
839 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
840 `ido-temp-list' which contains the current list of matching directories."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
841 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
842 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
843
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
844 (defcustom ido-make-buffer-list-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
845 "List of functions to run when the list of matching buffers is created.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
846 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
847 `ido-temp-list' which contains the current list of matching buffer names."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
848 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
849 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
850
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
851 (defcustom ido-rewrite-file-prompt-functions nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
852 "List of functions to run when the find-file prompt is created.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
853 Each function on the list may modify the following dynamically bound
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
854 variables:
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
855 dirname - the (abbreviated) directory name
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
856 to be modified by the hook functions
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
857 max-width - the max width of the resulting dirname; nil means no limit
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
858 prompt - the basic prompt (e.g. \"Find File: \")
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
859 literal - the string shown if doing \"literal\" find; set to nil to omit
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
860 vc-off - the string shown if version control is inhibited; set to nil to omit
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
861 prefix - either nil or a fixed prefix for the dirname
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
862
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
863 The following variables are available, but should not be changed:
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
864 `ido-current-directory' - the unabbreviated directory name
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
865 item - equals `file' or `dir' depending on the current mode."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
866 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
867 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
868
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
869 (defvar ido-rewrite-file-prompt-rules nil
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
870 "*Alist of rewriting rules for directory names in ido prompts.
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
871 A list of elements of the form (FROM . TO) or (FROM . FUNC), each
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
872 meaning to rewrite the directory name if matched by FROM by either
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
873 substituting the matched string by TO or calling the function FUNC
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
874 with the current directory name as its only argument and using the
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
875 return value as the new directory name. In addition, each FUNC may
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
876 also modify the dynamic variables described for the variable
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
877 `ido-rewrite-file-prompt-functions'.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
878
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
879 (defcustom ido-completion-buffer "*Ido Completions*"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
880 "Name of completion buffer used by ido.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
881 Set to nil to disable completion buffers popping up."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
882 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
883 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
884
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
885 (defcustom ido-completion-buffer-all-completions nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
886 "Non-nil means to show all completions in completion buffer.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
887 Otherwise, only the current list of matches is shown."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
888 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
889 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
890
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
891 (defvar ido-all-frames 'visible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
892 "*Argument to pass to `walk-windows' when finding visible files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
893 See documentation of `walk-windows' for useful values.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
894
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
895 (defcustom ido-minibuffer-setup-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
896 "Ido-specific customization of minibuffer setup.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
897
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
898 This hook is run during minibuffer setup if `ido' is active.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
899 It is intended for use in customizing ido for interoperation
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
900 with other packages. For instance:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
901
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
902 \(add-hook 'ido-minibuffer-setup-hook
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
903 \(function
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
904 \(lambda ()
46118
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
905 \(make-local-variable 'max-mini-window-height)
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
906 \(setq max-mini-window-height 3))))
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
907
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
908 will constrain Emacs to a maximum minibuffer height of 3 lines when
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
909 ido is running. Copied from `icomplete-minibuffer-setup-hook'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
910 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
911 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
912
98862
ee5b67d5228f (ido-save-directory-list-file): Run file names that begin with a period thru
Eli Zaretskii <eliz@gnu.org>
parents: 98136
diff changeset
913 (defcustom ido-save-directory-list-file (convert-standard-filename "~/.ido.last")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
914 "File in which the ido state is saved between invocations.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
915 Variables stored are: `ido-last-directory-list', `ido-work-directory-list',
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
916 `ido-work-file-list', and `ido-dir-file-cache'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
917 Must be set before enabling ido mode."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
918 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
919 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
920
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
921 (defcustom ido-read-file-name-as-directory-commands '()
69738
0bfe57fe99ed (ido-report-no-match, ido-switch-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 69733
diff changeset
922 "List of commands which uses `read-file-name' to read a directory name.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
923 When `ido-everywhere' is non-nil, the commands in this list will read
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
924 the directory using `ido-read-directory-name'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
925 :type '(repeat symbol)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
926 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
927
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
928 (defcustom ido-read-file-name-non-ido '()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
929 "List of commands which shall not read file names the ido way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
930 When `ido-everywhere' is non-nil, the commands in this list will read
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
931 the file name using normal `read-file-name' style."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
932 :type '(repeat symbol)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
933 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
934
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
935 (defcustom ido-before-fallback-functions '()
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
936 "List of functions to call before calling a fallback command.
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
937 The fallback command is passed as an argument to the functions."
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
938 :type 'hook
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
939 :group 'ido)
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
940
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
941 ;;; Internal Variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
942
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
943 ;; Persistent variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
944
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
945 (defvar ido-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
946 "Currently active keymap for ido commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
947
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
948 (defvar ido-common-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
949 "Keymap for all ido commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
950
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
951 (defvar ido-file-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
952 "Keymap for ido file commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
953
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
954 (defvar ido-file-dir-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
955 "Keymap for ido file and directory commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
956
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
957 (defvar ido-buffer-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
958 "Keymap for ido buffer commands.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
959
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
960 (defvar ido-file-history nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
961 "History of files selected using `ido-find-file'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
962
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
963 (defvar ido-buffer-history nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
964 "History of buffers selected using `ido-switch-buffer'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
965
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
966 (defvar ido-last-directory-list nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
967 "List of last selected directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
968 See `ido-enable-last-directory-history' for details.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
969
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
970 (defvar ido-work-directory-list nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
971 "List of actual working directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
972 The current directory is inserted at the front of this list whenever a
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
973 file is opened with `ido-find-file' and family.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
974
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
975 (defvar ido-work-file-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
976 "List of actual work file names.
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
977 Opening a file with `ido-find-file' and similar functions
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
978 inserts the current file name (relative to its containing directory)
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
979 at the front of this list.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
980
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
981 (defvar ido-dir-file-cache nil
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
982 "List of `file-name-all-completions' results.
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
983 Each element in the list is of the form (DIR (MTIME) FILE...).")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
984
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
985 (defvar ido-ignore-item-temp-list nil
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
986 "List of items to ignore in current ido invocation.
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
987 Intended to be let-bound by functions which call ido repeatedly.
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
988 Should never be set permanently.")
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
989
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
990 ;; Temporary storage
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
991
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
992 (defvar ido-eoinput 1
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
993 "Point where minibuffer input ends and completion info begins.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
994 Copied from `icomplete-eoinput'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
995 (make-variable-buffer-local 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
996
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
997 (defvar ido-common-match-string nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
998 "Stores the string that is common to all matching files.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
999
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1000 (defvar ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1001 "Non-nil means we need to regenerate the list of matching items.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1002
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1003 (defvar ido-rotate nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1004 "Non-nil means we are rotating list of matches.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1005
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1006 (defvar ido-text nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1007 "Stores the users string as it is typed in.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1008
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1009 (defvar ido-text-init nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1010 "The initial string for the users string it is typed in.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1011
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1012 (defvar ido-input-stack nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1013 "Stores the users strings when user hits M-b/M-f.")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1014
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1015 (defvar ido-matches nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1016 "List of files currently matching `ido-text'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1017
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1018 (defvar ido-report-no-match t
69738
0bfe57fe99ed (ido-report-no-match, ido-switch-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 69733
diff changeset
1019 "Report [No Match] when no completions matches `ido-text'.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1020
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1021 (defvar ido-exit nil
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1022 "Flag to monitor how `ido-find-file' exits.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1023 If equal to `takeprompt', we use the prompt as the file name to be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1024 selected.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1025
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1026 (defvar ido-current-directory nil
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
1027 "Current directory for `ido-find-file'.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1028
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1029 (defvar ido-auto-merge-timer nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1030 "Delay timer for auto merge.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1031
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1032 (defvar ido-use-mycompletion-depth 0
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1033 "Non-nil means use `ido' completion feedback.
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
1034 Is set by ido functions to the current `minibuffer-depth',
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
1035 so that it doesn't interfere with other minibuffer usage.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1036
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
1037 (defvar ido-incomplete-regexp nil
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
1038 "Non-nil if an incomplete regexp is entered.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1039
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1040 (defvar ido-initial-position nil
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1041 "Non-nil means to explicitly cursor on entry to minibuffer.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1042 Value is an integer which is number of chars to right of prompt.")
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1043
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1044 ;;; Variables with dynamic bindings.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1045 ;;; Declared here to keep the byte compiler quiet.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1046
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1047 ;; Stores the current ido item type ('file, 'dir, 'buffer, or 'list).
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1048 (defvar ido-cur-item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1049
74930
2de62cd68677 (ido-set-matches-1): Fix last change. If default item is
Kim F. Storm <storm@cua.dk>
parents: 74926
diff changeset
1050 ;;; Stores the current default item
2de62cd68677 (ido-set-matches-1): Fix last change. If default item is
Kim F. Storm <storm@cua.dk>
parents: 74926
diff changeset
1051 (defvar ido-default-item)
2de62cd68677 (ido-set-matches-1): Fix last change. If default item is
Kim F. Storm <storm@cua.dk>
parents: 74926
diff changeset
1052
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1053 ;; Stores the current list of items that will be searched through.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1054 ;; The list is ordered, so that the most interesting item comes first,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1055 ;; although by default, the files visible in the current frame are put
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
1056 ;; at the end of the list.
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
1057 (defvar ido-cur-list nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1058
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1059 ;; Stores the choice list for ido-completing-read
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
1060 (defvar ido-choice-list nil)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1061
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1062 ;; Stores the list of items which are ignored when building
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1063 ;; `ido-cur-list'. It is in no specific order.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1064 (defvar ido-ignored-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1065
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1066 ;; Remember if current directory is non-readable (so we cannot do completion).
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1067 (defvar ido-directory-nonreadable)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1068
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1069 ;; Remember if current directory is 'huge' (so we don't want to do completion).
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1070 (defvar ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1071
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1072 ;; Keep current item list if non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1073 (defvar ido-keep-item-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1074
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1075 ;; Process ido-ignore-* lists.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1076 (defvar ido-process-ignore-lists)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1077
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1078 ;; Don't process ido-ignore- lists once.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1079 (defvar ido-process-ignore-lists-inhibit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1080
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1081 ;; Buffer from which ido was entered.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1082 (defvar ido-entry-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1083
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1084 ;; Non-nil if matching file must be selected.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1085 (defvar ido-require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1086
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
1087 ;; Non-nil if we should add [confirm] to prompt
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
1088 (defvar ido-show-confirm-message)
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
1089
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1090 ;; Stores a temporary version of the file list being created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1091 (defvar ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1092
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1093 ;; Non-nil if default list element should be rotated into place.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1094 (defvar ido-rotate-temp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1095
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1096 ;; Stores current index in ido-work-directory-list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1097 (defvar ido-work-directory-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1098
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1099 ;; Stores current index in ido-work-file-list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1100 (defvar ido-work-file-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1101
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1102 ;; Set when merged work directory list is in use.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1103 (defvar ido-use-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1104
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1105 ;; Set when merged work directory list not yet built.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1106 (defvar ido-try-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1107
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1108 ;; Saved state prior to last work directory merge.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1109 ;; Value is a list (ido-text dir cur-list ignored-list matches).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1110 (defvar ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1111
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1112 ;; Original value of vc-handled-backends for use in ido-toggle-vc.
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1113 (defvar ido-saved-vc-hb)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1114
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1115 ;; Stores temporary state of literal find file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1116 (defvar ido-find-literal)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1117
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1118 ;; Set to 'ignore to inhibit switching between find-file/switch-buffer.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1119 (defvar ido-context-switch-command)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1120
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1121 ;;; FUNCTIONS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1122
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1123 (defun ido-active (&optional merge)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1124 (if merge
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1125 ido-use-merged-list
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
1126 (and (boundp 'ido-completing-read)
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
1127 (or (featurep 'xemacs)
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
1128 (= ido-use-mycompletion-depth (minibuffer-depth))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1129
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1130 (defvar ido-trace-enable nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1131
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1132 (defun ido-trace (p &optional s retval)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1133 (if ido-trace-enable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1134 (let ((b (get-buffer-create " *IDO Trace*"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1135 (deactivate-mark deactivate-mark))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1136 (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1137 (save-restriction
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1138 (set-buffer b)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1139 (insert p ": " (if (stringp s) s (format "%S" s)) "\n")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1140 retval)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1141
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1142 (defun ido-toggle-trace (arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1143 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1144 (setq ido-trace-enable (or arg (not ido-trace-enable)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1145 (if ido-trace-enable
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1146 (message "IDO trace on"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1147 (let ((b (get-buffer " *IDO Trace*")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1148 (if b
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1149 (if ido-trace-enable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1150 (kill-buffer b)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1151 (pop-to-buffer b t t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1152 (setq truncate-lines t)))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1153
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
1154 (defun ido-local-file-exists-p (file)
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
1155 "Tell if FILE exists locally."
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
1156 (let (file-name-handler-alist)
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
1157 (file-exists-p file)))
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
1158
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1159 (defun ido-unc-hosts (&optional query)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1160 "Return list of UNC host names."
69817
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1161 (let ((hosts
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1162 (cond
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1163 ((listp ido-unc-hosts)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1164 ido-unc-hosts) ;; static list or nil
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1165 ((listp ido-unc-hosts-cache)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1166 ido-unc-hosts-cache) ;; result of net search
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1167 ((and query (fboundp ido-unc-hosts))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1168 (message (propertize "Searching for UNC hosts..." 'face 'highlight))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1169 (setq ido-unc-hosts-cache (funcall ido-unc-hosts))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1170 (message nil)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1171 ido-unc-hosts-cache)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1172 (query
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1173 (setq ido-unc-hosts-cache nil))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1174 (t (fboundp ido-unc-hosts)))))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1175 (when query
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1176 (let ((case-fold-search ido-downcase-unc-hosts)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1177 res host re-list re)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1178 (while hosts
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1179 (setq host (car hosts)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1180 hosts (cdr hosts)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1181 re-list (and ido-process-ignore-lists
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1182 ido-ignore-unc-host-regexps))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1183 (while re-list
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1184 (setq re (car re-list)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1185 re-list (cdr re-list))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1186 (if (string-match re host)
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1187 (setq re-list nil
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1188 host nil)))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1189 (when host
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1190 (when ido-downcase-unc-hosts
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1191 (setq host (downcase host)))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1192 (setq res (cons host res))))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1193 (setq hosts (sort res #'string<))))
4521b7c3be30 (ido-mode): Remove ido-ignore-unc-host-regexps from the :set-after list.
Kim F. Storm <storm@cua.dk>
parents: 69814
diff changeset
1194 hosts))
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1195
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1196 (defun ido-unc-hosts-net-view ()
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1197 "Query network for list of UNC host names using `NET VIEW'."
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1198 (let (hosts)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1199 (with-temp-buffer
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1200 (shell-command "net view" t)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1201 (goto-char (point-min))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1202 (while (re-search-forward "^\\\\\\\\\\([[:graph:]]+\\)" nil t)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1203 (setq hosts (cons (match-string 1) hosts))))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1204 hosts))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1205
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1206 (defun ido-is-tramp-root (&optional dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1207 (and ido-enable-tramp-completion
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1208 (string-match "\\`/[^/]+[@:]\\'"
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1209 (or dir ido-current-directory))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1210
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1211 (defun ido-is-unc-root (&optional dir)
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1212 (and (ido-unc-hosts)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1213 (string-equal "//"
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1214 (or dir ido-current-directory))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1215
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1216 (defun ido-is-unc-host (&optional dir)
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1217 (and (ido-unc-hosts)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1218 (string-match "\\`//[^/]+/\\'"
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1219 (or dir ido-current-directory))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1220
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1221 (defun ido-is-root-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1222 (setq dir (or dir ido-current-directory))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1223 (or
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1224 (string-equal "/" dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1225 (and (memq system-type '(windows-nt ms-dos))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1226 (string-match "\\`[a-zA-Z]:[/\\]\\'" dir))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1227 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1228 (ido-is-tramp-root dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1229 (string-match "\\`/[^:/][^:/]+:\\'" dir))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1230
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1231 (defun ido-is-ftp-directory (&optional dir)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1232 (string-match
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1233 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1234 "\\`/[^/:][^/:]+:" ;; like tramp-file-name-regexp-unified, but doesn't match single drive letters
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1235 "\\`/[^/:][^/:]+:/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1236 (or dir ido-current-directory)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1237
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1238 (defun ido-is-slow-ftp-host (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1239 (and (or ido-slow-ftp-hosts ido-slow-ftp-host-regexps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1240 (setq dir (or dir ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1241 ;; (featurep 'ange-ftp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1242 ;; (ange-ftp-ftp-name dir)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1243 (string-match
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1244 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1245 "\\`/\\([^/]+[@:]\\)*\\([^@/:][^@/:]+\\):"
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1246 "\\`/\\([^/:]*@\\)?\\([^@/:][^@/:]+\\):/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1247 dir)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1248 (let ((host (substring dir (match-beginning 2) (match-end 2))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1249 (or (member host ido-slow-ftp-hosts)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1250 (let ((re ido-slow-ftp-host-regexps))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1251 (while (and re (not (string-match (car re) host)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1252 (setq re (cdr re)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1253 re)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1254
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1255 (defun ido-time-stamp (&optional time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1256 ;; Time is a floating point number (fractions of 1 hour)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1257 (setq time (or time (current-time)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1258 (/ (+ (* (car time) 65536.0) (car (cdr time))) 3600.0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1259
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1260 (defun ido-cache-ftp-valid (&optional time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1261 (and (numberp ido-cache-ftp-work-directory-time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1262 (> ido-cache-ftp-work-directory-time 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1263 (or (not time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1264 (< (- (ido-time-stamp) time) ido-cache-ftp-work-directory-time))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1265
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1266 (defun ido-cache-unc-valid (&optional time)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1267 (and (numberp ido-cache-unc-host-shares-time)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1268 (> ido-cache-unc-host-shares-time 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1269 (or (not time)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1270 (< (- (ido-time-stamp) time) ido-cache-unc-host-shares-time))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1271
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1272 (defun ido-may-cache-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1273 (setq dir (or dir ido-current-directory))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1274 (cond
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1275 ((ido-directory-too-big-p dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1276 nil)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1277 ((and (ido-is-root-directory dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1278 (or ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1279 (memq system-type '(windows-nt ms-dos))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1280 nil)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1281 ((ido-is-unc-host dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1282 (ido-cache-unc-valid))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1283 ((ido-is-ftp-directory dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1284 (ido-cache-ftp-valid))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1285 (t t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1286
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1287 (defun ido-pp (list &optional sep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1288 (let ((print-level nil) (eval-expression-print-level nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1289 (print-length nil) (eval-expression-print-length nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1290 (insert "\n;; ----- " (symbol-name list) " -----\n(\n ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1291 (setq list (symbol-value list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1292 (while list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1293 (let* ((elt (car list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1294 (s (if (consp elt) (car elt) elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1295 (if (and (stringp s) (= (length s) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1296 (setq s nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1297 (if s
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1298 (prin1 elt (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1299 (if (and (setq list (cdr list)) s)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1300 (insert (or sep "\n ")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1301 (insert "\n)\n")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1302
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1303 (defun ido-save-history ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1304 "Save ido history and cache information between sessions."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1305 (interactive)
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1306 (when (and ido-last-directory-list ido-save-directory-list-file)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1307 (let ((buf (get-buffer-create " *ido session*"))
85998
74574731bb9a (ido-save-history): Save the history file in UTF-8,
Juanma Barranquero <lekktu@gmail.com>
parents: 85941
diff changeset
1308 (version-control 'never))
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1309 (unwind-protect
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1310 (with-current-buffer buf
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1311 (erase-buffer)
87046
9c5b08ec6fce (ido-save-history): Set the `coding' local
Juanma Barranquero <lekktu@gmail.com>
parents: 86406
diff changeset
1312 (insert ";;; -*- coding: utf-8 -*-\n")
85998
74574731bb9a (ido-save-history): Save the history file in UTF-8,
Juanma Barranquero <lekktu@gmail.com>
parents: 85941
diff changeset
1313 (setq buffer-file-coding-system 'utf-8)
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1314 (ido-pp 'ido-last-directory-list)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1315 (ido-pp 'ido-work-directory-list)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1316 (ido-pp 'ido-work-file-list)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1317 (ido-pp 'ido-dir-file-cache "\n\n ")
69809
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
1318 (if (listp ido-unc-hosts-cache)
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
1319 (ido-pp 'ido-unc-hosts-cache)
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
1320 (insert "\n;; ----- ido-unc-hosts-cache -----\nt\n"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1321 (write-file ido-save-directory-list-file nil))
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1322 (kill-buffer buf)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1323
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1324 (defun ido-load-history (&optional arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1325 "Load ido history and cache information from previous session.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1326 With prefix argument, reload history unconditionally."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1327 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1328 (if (or arg (and ido-save-directory-list-file (not ido-last-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1329 (let ((file (expand-file-name ido-save-directory-list-file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1330 buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1331 (when (file-readable-p file)
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1332 (setq buf (get-buffer-create " *ido session*"))
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1333 (unwind-protect
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1334 (with-current-buffer buf
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1335 (erase-buffer)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1336 (insert-file-contents file)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1337 (condition-case nil
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1338 (setq ido-last-directory-list (read (current-buffer))
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1339 ido-work-directory-list (read (current-buffer))
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1340 ido-work-file-list (read (current-buffer))
69809
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
1341 ido-dir-file-cache (read (current-buffer))
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
1342 ido-unc-hosts-cache (read (current-buffer)))
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1343 (error nil)))
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1344 (kill-buffer buf)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1345 (ido-wash-history))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1346
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1347 (defun ido-wash-history ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1348 "Clean-up ido history and cache information.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1349 Removes badly formatted data and ignored directories."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1350 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1351 ;; Check format of each of our lists, discard bogus elements
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1352 (setq ido-last-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1353 (and (listp ido-last-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1354 (let ((l ido-last-directory-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1355 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1356 (if (and (consp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1357 (stringp (car (car l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1358 (stringp (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1359 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1360 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1361 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1362 (setq ido-work-directory-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1363 (and (listp ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1364 (let ((l ido-work-directory-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1365 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1366 (if (and (stringp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1367 (or ido-record-ftp-work-directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1368 (not (ido-is-ftp-directory (car l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1369 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1370 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1371 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1372 (setq ido-work-file-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1373 (and (listp ido-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1374 (let ((l ido-work-file-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1375 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1376 (if (stringp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1377 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1378 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1379 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1380 (setq ido-dir-file-cache
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1381 (and (listp ido-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1382 (let ((l ido-dir-file-cache) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1383 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1384 (if (and (listp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1385 (> (length (car l)) 2)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1386 (let ((dir (car (car l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1387 (time (car (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1388 (files (cdr (cdr (car l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1389 (and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1390 (stringp dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1391 (consp time)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1392 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1393 ((integerp (car time))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1394 (and (/= (car time) 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1395 (integerp (car (cdr time)))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1396 (/= (car (cdr time)) 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1397 (ido-may-cache-directory dir)))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1398 ((eq (car time) 'ftp)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1399 (and (numberp (cdr time))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1400 (ido-is-ftp-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1401 (ido-cache-ftp-valid (cdr time))))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1402 ((eq (car time) 'unc)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1403 (and (numberp (cdr time))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1404 (ido-is-unc-host dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1405 (ido-cache-unc-valid (cdr time))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1406 (t nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1407 (let ((s files) (ok t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1408 (while s
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1409 (if (stringp (car s))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1410 (setq s (cdr s))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1411 (setq s nil ok nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1412 ok))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1413 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1414 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1415 (nreverse r))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1416
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1417 ;; Remove ignored directories from work directory list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1418 ;; according to ido-work-directory-list-ignore-regexps
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1419 (if ido-work-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1420 (let ((dirs (reverse ido-work-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1421 (setq ido-work-directory-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1422 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1423 (ido-record-work-directory (car dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1424 (setq dirs (cdr dirs)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1425 ;; Get rid of text properties
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1426 (let ((l ido-last-directory-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1427 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1428 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1429 (set-text-properties 0 (length (car e)) nil (car e))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1430 (set-text-properties 0 (length (cdr e)) nil (cdr e))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1431 (let ((l ido-work-directory-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1432 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1433 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1434 (set-text-properties 0 (length e) nil e)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1435 (let ((l ido-work-file-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1436 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1437 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1438 (set-text-properties 0 (length e) nil e)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1439 (let ((l ido-dir-file-cache) e d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1440 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1441 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1442 (if (listp e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1443 (while e
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1444 (setq d (car e) e (cdr e))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1445 (if (not (consp d))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1446 (set-text-properties 0 (length d) nil d)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1447
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1448
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1449 (defun ido-kill-emacs-hook ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1450 ;; ido kill emacs hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1451 (ido-save-history))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1452
105596
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1453 (define-minor-mode ido-everywhere
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1454 "Toggle using ido speed-ups everywhere file and directory names are read.
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1455 With ARG, turn ido speed-up on if arg is positive, off otherwise."
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1456 :global t
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1457 :group 'ido
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1458 (when (get 'ido-everywhere 'file)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1459 (setq read-file-name-function (car (get 'ido-everywhere 'file)))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1460 (put 'ido-everywhere 'file nil))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1461 (when (get 'ido-everywhere 'buffer)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1462 (setq read-buffer-function (car (get 'ido-everywhere 'buffer)))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1463 (put 'ido-everywhere 'buffer nil))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1464 (when ido-everywhere
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1465 (when (memq ido-mode '(both file))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1466 (put 'ido-everywhere 'file (cons read-file-name-function nil))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1467 (setq read-file-name-function 'ido-read-file-name))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1468 (when (memq ido-mode '(both buffer))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1469 (put 'ido-everywhere 'buffer (cons read-buffer-function nil))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1470 (setq read-buffer-function 'ido-read-buffer))))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1471
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1472 (defvar ido-minor-mode-map-entry nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1473
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1474 ;;;###autoload
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1475 (defun ido-mode (&optional arg)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1476 "Toggle ido speed-ups on or off.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1477 With ARG, turn ido speed-up on if arg is positive, off otherwise.
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1478 Turning on ido-mode will remap (via a minor-mode keymap) the default
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1479 keybindings for the `find-file' and `switch-to-buffer' families of
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1480 commands to the ido versions of these functions.
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1481 However, if ARG arg equals 'files, remap only commands for files, or
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1482 if it equals 'buffers, remap only commands for buffer switching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1483 This function also adds a hook to the minibuffer."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1484 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1485 (setq ido-mode
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1486 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1487 ((null arg) (if ido-mode nil 'both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1488 ((eq arg t) 'both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1489 ((eq arg 'files) 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1490 ((eq arg 'buffers) 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1491 ((memq arg '(file buffer both)) arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1492 ((> (prefix-numeric-value arg) 0) 'both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1493 (t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1494
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1495 (ido-everywhere (if ido-everywhere 1 -1))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1496 (when ido-mode
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1497 (ido-init-completion-maps))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1498
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1499 (when ido-mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1500 (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1501 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1502 (ido-load-history)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1503
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1504 (add-hook 'kill-emacs-hook 'ido-kill-emacs-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1505
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1506 (let ((map (make-sparse-keymap)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1507 (when (memq ido-mode '(file both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1508 (define-key map [remap find-file] 'ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1509 (define-key map [remap find-file-read-only] 'ido-find-file-read-only)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1510 (define-key map [remap find-alternate-file] 'ido-find-alternate-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1511 (define-key map [remap write-file] 'ido-write-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1512 (define-key map [remap insert-file] 'ido-insert-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1513 (define-key map [remap list-directory] 'ido-list-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1514 (define-key map [remap dired] 'ido-dired)
105596
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1515 (define-key map [remap find-file-other-window]
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1516 'ido-find-file-other-window)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1517 (define-key map [remap find-file-read-only-other-window]
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1518 'ido-find-file-read-only-other-window)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1519 (define-key map [remap find-file-other-frame]
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1520 'ido-find-file-other-frame)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1521 (define-key map [remap find-file-read-only-other-frame]
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1522 'ido-find-file-read-only-other-frame))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1523
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1524 (when (memq ido-mode '(buffer both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1525 (define-key map [remap switch-to-buffer] 'ido-switch-buffer)
105596
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1526 (define-key map [remap switch-to-buffer-other-window]
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1527 'ido-switch-buffer-other-window)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1528 (define-key map [remap switch-to-buffer-other-frame]
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1529 'ido-switch-buffer-other-frame)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1530 (define-key map [remap insert-buffer] 'ido-insert-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1531 (define-key map [remap kill-buffer] 'ido-kill-buffer)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1532 (define-key map [remap display-buffer] 'ido-display-buffer))
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1533
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1534 (if ido-minor-mode-map-entry
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1535 (setcdr ido-minor-mode-map-entry map)
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1536 (setq ido-minor-mode-map-entry (cons 'ido-mode map))
97248
b2098130915f (ido-mode): Add toggle notification.
Chong Yidong <cyd@stupidchicken.com>
parents: 96376
diff changeset
1537 (add-to-list 'minor-mode-map-alist ido-minor-mode-map-entry))))
b2098130915f (ido-mode): Add toggle notification.
Chong Yidong <cyd@stupidchicken.com>
parents: 96376
diff changeset
1538
b2098130915f (ido-mode): Add toggle notification.
Chong Yidong <cyd@stupidchicken.com>
parents: 96376
diff changeset
1539 (message "Ido mode %s" (if ido-mode "enabled" "disabled")))
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1540
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1541
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1542 ;;; IDO KEYMAP
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1543 (defun ido-init-completion-maps ()
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1544 "Set up the completion keymaps used by `ido'."
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1545
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1546 ;; Common map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1547 (let ((map (make-sparse-keymap)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1548 (define-key map "\C-a" 'ido-toggle-ignore)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1549 (define-key map "\C-c" 'ido-toggle-case)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1550 (define-key map "\C-e" 'ido-edit-input)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1551 (define-key map "\t" 'ido-complete)
46231
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
1552 (define-key map " " 'ido-complete-space)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1553 (define-key map "\C-j" 'ido-select-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1554 (define-key map "\C-m" 'ido-exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1555 (define-key map "\C-p" 'ido-toggle-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1556 (define-key map "\C-r" 'ido-prev-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1557 (define-key map "\C-s" 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1558 (define-key map "\C-t" 'ido-toggle-regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1559 (define-key map "\C-z" 'ido-undo-merge-work-directory)
64336
8b29b8961758 (ido-define-mode-map): Move ido-next-work-file to C-M-o.
Kim F. Storm <storm@cua.dk>
parents: 64168
diff changeset
1560 (define-key map [(control ?\s)] 'ido-restrict-to-matches)
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
1561 (define-key map [(meta ?\s)] 'ido-take-first-match)
47977
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
1562 (define-key map [(control ?@)] 'ido-restrict-to-matches)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1563 (define-key map [right] 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1564 (define-key map [left] 'ido-prev-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1565 (define-key map "?" 'ido-completion-help)
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
1566 ;; Magic commands.
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
1567 (define-key map "\C-b" 'ido-magic-backward-char)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
1568 (define-key map "\C-f" 'ido-magic-forward-char)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
1569 (define-key map "\C-d" 'ido-magic-delete-char)
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1570 (set-keymap-parent map minibuffer-local-map)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1571 (setq ido-common-completion-map map))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1572
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1573 ;; File and directory map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1574 (let ((map (make-sparse-keymap)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1575 (define-key map "\C-x\C-b" 'ido-enter-switch-buffer)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1576 (define-key map "\C-x\C-f" 'ido-fallback-command)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1577 (define-key map "\C-x\C-d" 'ido-enter-dired)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1578 (define-key map [down] 'ido-next-match-dir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1579 (define-key map [up] 'ido-prev-match-dir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1580 (define-key map [(meta up)] 'ido-prev-work-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1581 (define-key map [(meta down)] 'ido-next-work-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1582 (define-key map [backspace] 'ido-delete-backward-updir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1583 (define-key map "\d" 'ido-delete-backward-updir)
76489
a5db78ff7104 (ido-init-completion-maps): Remap delete-backward-char.
Chong Yidong <cyd@stupidchicken.com>
parents: 76148
diff changeset
1584 (define-key map [remap delete-backward-char] 'ido-delete-backward-updir) ; BS
74584
3043e9ec901c (ido-init-completion-maps): Remap backward-kill-word
Kim F. Storm <storm@cua.dk>
parents: 74337
diff changeset
1585 (define-key map [remap backward-kill-word] 'ido-delete-backward-word-updir) ; M-DEL
3043e9ec901c (ido-init-completion-maps): Remap backward-kill-word
Kim F. Storm <storm@cua.dk>
parents: 74337
diff changeset
1586
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1587 (define-key map [(control backspace)] 'ido-up-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1588 (define-key map "\C-l" 'ido-reread-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1589 (define-key map [(meta ?d)] 'ido-wide-find-dir-or-delete-dir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1590 (define-key map [(meta ?b)] 'ido-push-dir)
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
1591 (define-key map [(meta ?v)] 'ido-push-dir-first)
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1592 (define-key map [(meta ?f)] 'ido-wide-find-file-or-pop-dir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1593 (define-key map [(meta ?k)] 'ido-forget-work-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1594 (define-key map [(meta ?m)] 'ido-make-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1595 (define-key map [(meta ?n)] 'ido-next-work-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1596 (define-key map [(meta ?o)] 'ido-prev-work-file)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1597 (define-key map [(meta control ?o)] 'ido-next-work-file)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1598 (define-key map [(meta ?p)] 'ido-prev-work-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1599 (define-key map [(meta ?s)] 'ido-merge-work-directories)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1600 (set-keymap-parent map ido-common-completion-map)
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1601 (setq ido-file-dir-completion-map map))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1602
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1603 ;; File only map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1604 (let ((map (make-sparse-keymap)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1605 (define-key map "\C-k" 'ido-delete-file-at-head)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1606 (define-key map "\C-o" 'ido-copy-current-word)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1607 (define-key map "\C-w" 'ido-copy-current-file-name)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1608 (define-key map [(meta ?l)] 'ido-toggle-literal)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1609 (define-key map "\C-v" 'ido-toggle-vc)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1610 (set-keymap-parent map ido-file-dir-completion-map)
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1611 (setq ido-file-completion-map map))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1612
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1613 ;; Buffer map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1614 (let ((map (make-sparse-keymap)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1615 (define-key map "\C-x\C-f" 'ido-enter-find-file)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1616 (define-key map "\C-x\C-b" 'ido-fallback-command)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1617 (define-key map "\C-k" 'ido-kill-buffer-at-head)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1618 (set-keymap-parent map ido-common-completion-map)
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1619 (setq ido-buffer-completion-map map)))
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1620
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1621
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1622 (defun ido-setup-completion-map ()
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1623 "Set up the keymap for `ido'."
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1624
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1625 ;; generated every time so that it can inherit new functions.
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1626 (let ((map (make-sparse-keymap))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1627 (viper-p (if (boundp 'viper-mode) viper-mode)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1628
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1629 (when viper-p
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1630 (define-key map [remap viper-intercept-ESC-key] 'ignore))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1631
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1632 (cond
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1633 ((memq ido-cur-item '(file dir))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1634 (when ido-context-switch-command
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1635 (define-key map "\C-x\C-b" ido-context-switch-command)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1636 (define-key map "\C-x\C-d" 'ignore))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1637 (when viper-p
49614
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1638 (define-key map [remap viper-backward-char] 'ido-delete-backward-updir)
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1639 (define-key map [remap viper-del-backward-char-in-insert] 'ido-delete-backward-updir)
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1640 (define-key map [remap viper-delete-backward-word] 'ido-delete-backward-word-updir))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1641 (set-keymap-parent map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1642 (if (eq ido-cur-item 'file)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1643 ido-file-completion-map
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1644 ido-file-dir-completion-map)))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1645
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1646 ((eq ido-cur-item 'buffer)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1647 (when ido-context-switch-command
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1648 (define-key map "\C-x\C-f" ido-context-switch-command))
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1649 (set-keymap-parent map ido-buffer-completion-map))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1650
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1651 (t
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1652 (set-keymap-parent map ido-common-completion-map)))
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1653
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1654 (setq ido-completion-map map)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1655
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1656 (defun ido-final-slash (dir &optional fix-it)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1657 ;; return DIR if DIR has final slash.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1658 ;; else if FIX-IT is non-nil, return DIR/
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1659 ;; else return nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1660 (setq dir (ido-name dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1661 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1662 ((string-match "/\\'" dir) dir)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1663 ((ido-is-tramp-root dir) dir)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1664 (fix-it (concat dir "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1665 (t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1666
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1667 (defun ido-no-final-slash (s)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1668 ;; Remove optional final slash from string S
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1669 (let ((l (1- (length s))))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1670 (if (and (> l 0) (eq (aref s l) ?/))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1671 (substring s 0 l)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1672 s)))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1673
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1674 (defun ido-nonreadable-directory-p (dir)
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1675 ;; Return t if dir is a directory, but not readable
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1676 ;; Do not check for non-readable directories via tramp, as this causes a premature
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1677 ;; connect on incomplete tramp paths (after entring just method:).
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1678 (let ((ido-enable-tramp-completion nil))
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1679 (and (ido-final-slash dir)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1680 (not (ido-is-unc-host dir))
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1681 (file-directory-p dir)
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1682 (not (file-readable-p dir)))))
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1683
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1684 (defun ido-directory-too-big-p (dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1685 ;; Return t if dir is a directory, but too big to show
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1686 ;; Do not check for non-readable directories via tramp, as this causes a premature
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1687 ;; connect on incomplete tramp paths (after entring just method:).
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1688 (let ((ido-enable-tramp-completion nil))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1689 (and (numberp ido-max-directory-size)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1690 (ido-final-slash dir)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1691 (not (ido-is-unc-host dir))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1692 (file-directory-p dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1693 (> (nth 7 (file-attributes dir)) ido-max-directory-size))))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1694
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1695 (defun ido-set-current-directory (dir &optional subdir no-merge)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1696 ;; Set ido's current directory to DIR or DIR/SUBDIR
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1697 (unless (and ido-enable-tramp-completion
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1698 (string-match "\\`/[^/]*@\\'" dir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1699 (setq dir (ido-final-slash dir t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1700 (setq ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1701 ido-try-merged-list (not no-merge))
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1702 (when subdir
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1703 (setq dir (concat dir subdir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1704 (unless (and ido-enable-tramp-completion
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1705 (string-match "\\`/[^/]*@\\'" dir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1706 (setq dir (ido-final-slash dir t))))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1707 (if (get-buffer ido-completion-buffer)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1708 (kill-buffer ido-completion-buffer))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1709 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1710 ((equal dir ido-current-directory)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1711 nil)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1712 ((ido-is-unc-root dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1713 (ido-trace "unc" dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1714 (setq ido-current-directory dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1715 (setq ido-directory-nonreadable nil)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1716 (setq ido-directory-too-big nil)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1717 t)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1718 (t
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1719 (ido-trace "cd" dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1720 (setq ido-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1721 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1722 (kill-buffer ido-completion-buffer))
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1723 (setq ido-directory-nonreadable (ido-nonreadable-directory-p dir))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1724 (setq ido-directory-too-big (and (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1725 (ido-directory-too-big-p dir)))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1726 t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1727
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1728 (defun ido-set-current-home (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1729 ;; Set ido's current directory to user's home directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1730 (ido-set-current-directory (expand-file-name (or dir "~/"))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1731
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1732 (defun ido-record-command (command arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1733 ;; Add (command arg) to command-history if ido-record-commands is t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1734 (if ido-record-commands
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1735 (let ((cmd (list command arg)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1736 (if (or (not command-history)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1737 (not (equal cmd (car command-history))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1738 (setq command-history (cons cmd command-history))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1739
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1740 (defun ido-make-prompt (item prompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1741 ;; Make the prompt for ido-read-internal
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1742 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1743 ((and (memq item '(file dir)) ido-current-directory)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1744 (let ((dirname (abbreviate-file-name ido-current-directory))
49211
93a6625a2ef3 Rename ido-max-prompt-width to ido-max-file-prompt-width for consistency.
Kim F. Storm <storm@cua.dk>
parents: 49208
diff changeset
1745 (max-width (if (and ido-max-file-prompt-width (floatp ido-max-file-prompt-width))
93a6625a2ef3 Rename ido-max-prompt-width to ido-max-file-prompt-width for consistency.
Kim F. Storm <storm@cua.dk>
parents: 49208
diff changeset
1746 (floor (* (frame-width) ido-max-file-prompt-width))
93a6625a2ef3 Rename ido-max-prompt-width to ido-max-file-prompt-width for consistency.
Kim F. Storm <storm@cua.dk>
parents: 49208
diff changeset
1747 ido-max-file-prompt-width))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1748 (literal (and (boundp 'ido-find-literal) ido-find-literal "(literal) "))
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1749 (vc-off (and ido-saved-vc-hb (not vc-handled-backends) "[-VC] "))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1750 (prefix nil)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1751 (rule ido-rewrite-file-prompt-rules))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1752 (let ((case-fold-search nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1753 (while rule
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1754 (if (and (consp (car rule))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1755 (string-match (car (car rule)) dirname))
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1756 (setq dirname
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1757 (if (stringp (cdr (car rule)))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1758 (replace-match (cdr (car rule)) t nil dirname)
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1759 (funcall (cdr (car rule)) dirname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1760 (setq rule (cdr rule))))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1761 (run-hooks 'ido-rewrite-file-prompt-functions)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1762 (concat prompt
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1763 ; (if ido-process-ignore-lists "" "&")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1764 (or literal "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1765 (or vc-off "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1766 (or prefix "")
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1767 (let ((l (length dirname)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1768 (if (and max-width (> max-width 0) (> l max-width))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1769 (let* ((s (substring dirname (- max-width)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1770 (i (string-match "/" s)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1771 (concat "..." (if i (substring s i) s)))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1772 dirname)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1773 (t prompt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1774
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1775 ;; Here is very briefly how ido-find-file works:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1776 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1777 ;; (ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1778 ;; (ido-file-internal method)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1779 ;; set ido-current-directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1780 ;; (ido-read-internal 'file ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1781 ;; (while ...
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1782 ;; (ido-make-item-list ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1783 ;; (ido-set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1784 ;; (completing-read ... ido-text-init ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1785 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1786 ;; ... here user is allowed to type characters and commands
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1787 ;; a command may set ido-exit and call (exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1788 ;; to make ido-read-internal do advanced tasks (or return)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1789 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1790 ;; ... ido-tidy and ido-exhibit are pre- and post-hooks
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1791 ;; which are run before and after each user command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1792 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1793 ;; return value from completing-read is stored in ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1794 ;; - ido-exit may cause further actions to be taken:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1795 ;; 'refresh - repeat loop (make-item-list, set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1796 ;; 'edit - edit the prompt string, then repeat loop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1797 ;; 'keep - repeat loop but don't (re)make-item-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1798 ;; 'updir - go up one directory, repeat loop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1799 ;; else set ido-selected based on ido-final-text,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1800 ;; optionally update ido-current-directory and repeat loop, or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1801 ;; exit with the return value of ido-selected (file name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1802 ;; selected file name is returned from ido-read-internal,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1803 ;; ido-exit and method determines what action is taken
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1804 ;; e.g. the file name may be ignored or joined with ido-current-directory, and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1805 ;; the relevant function is called (find-file, write-file, etc).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1806
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1807 (defun ido-read-internal (item prompt history &optional default require-match initial)
69738
0bfe57fe99ed (ido-report-no-match, ido-switch-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 69733
diff changeset
1808 "Perform the `ido-read-buffer' and `ido-read-file-name' functions.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1809 Return the name of a buffer or file selected.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1810 PROMPT is the prompt to give to the user.
70690
8fd6ecfbe6ea (ido-read-internal): Use only nondirectory part of default item.
Kim F. Storm <storm@cua.dk>
parents: 69817
diff changeset
1811 DEFAULT if given is the default item to start with.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1812 If REQUIRE-MATCH is non-nil, an existing file must be selected.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1813 If INITIAL is non-nil, it specifies the initial input string."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1814 (let
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1815 ((ido-cur-item item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1816 (ido-entry-buffer (current-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1817 (ido-process-ignore-lists t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1818 (ido-process-ignore-lists-inhibit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1819 (ido-set-default-item t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1820 ido-default-item
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1821 ido-selected
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1822 ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1823 (done nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1824 (icomplete-mode nil) ;; prevent icomplete starting up
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1825 ;; Exported dynamic variables:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1826 ido-cur-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1827 ido-ignored-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1828 (ido-rotate-temp nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1829 (ido-keep-item-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1830 (ido-use-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1831 (ido-try-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1832 (ido-pre-merge-state nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1833 (ido-case-fold ido-case-fold)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1834 (ido-enable-prefix ido-enable-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1835 (ido-enable-regexp ido-enable-regexp)
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
1836 (ido-show-confirm-message nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1837 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1838
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1839 (ido-setup-completion-map)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1840 (setq ido-text-init initial)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1841 (setq ido-input-stack nil)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1842
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1843 (run-hooks 'ido-setup-hook)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1844
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1845 (while (not done)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1846 (ido-trace "\n_LOOP_" ido-text-init)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1847 (setq ido-exit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1848 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1849 (setq ido-rotate nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1850 (setq ido-text "")
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1851 (when ido-set-default-item
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1852 (setq ido-default-item
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1853 (cond
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1854 ((eq item 'buffer)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1855 (if (bufferp default) (buffer-name default) default))
70690
8fd6ecfbe6ea (ido-read-internal): Use only nondirectory part of default item.
Kim F. Storm <storm@cua.dk>
parents: 69817
diff changeset
1856 ((stringp default)
8fd6ecfbe6ea (ido-read-internal): Use only nondirectory part of default item.
Kim F. Storm <storm@cua.dk>
parents: 69817
diff changeset
1857 (if (memq item '(file dir))
8fd6ecfbe6ea (ido-read-internal): Use only nondirectory part of default item.
Kim F. Storm <storm@cua.dk>
parents: 69817
diff changeset
1858 (file-name-nondirectory default)
8fd6ecfbe6ea (ido-read-internal): Use only nondirectory part of default item.
Kim F. Storm <storm@cua.dk>
parents: 69817
diff changeset
1859 default))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1860 ((eq item 'file)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1861 (and ido-enable-last-directory-history
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1862 (let ((d (assoc ido-current-directory ido-last-directory-list)))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1863 (and d (cdr d)))))))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1864 (if (member ido-default-item ido-ignore-item-temp-list)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1865 (setq ido-default-item nil))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
1866 (ido-trace "new default" ido-default-item)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1867 (if ido-default-item
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1868 (setq ido-initial-position 0))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1869 (setq ido-set-default-item nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1870
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1871 (if ido-process-ignore-lists-inhibit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1872 (setq ido-process-ignore-lists nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1873
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1874 (if (and ido-use-merged-list (memq ido-try-merged-list '(t wide)) (not ido-keep-item-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1875 (let ((olist ido-cur-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1876 (oign ido-ignored-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1877 (omat ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1878 (l (ido-make-merged-file-list ido-text-init
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1879 (eq ido-use-merged-list 'auto)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1880 (eq ido-try-merged-list 'wide))))
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
1881 (ido-trace "merged" l)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1882 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1883 ((not l)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1884 (if (eq ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1885 (setq ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1886 (list "" ido-current-directory olist oign omat)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1887 ido-cur-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1888 ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1889 ido-matches nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1890 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1891 ido-try-merged-list (if (eq ido-use-merged-list 'auto) 'auto nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1892 ido-use-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1893 (setq ido-cur-list olist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1894 ido-ignored-list oign
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1895 ido-matches omat
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1896 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1897 ido-try-merged-list (if (eq ido-use-merged-list 'auto) 'auto nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1898 ido-use-merged-list nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1899 ((eq l t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1900 (setq ido-use-merged-list nil))
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
1901 ((eq l 'input-pending-p)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
1902 (setq ido-try-merged-list t
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
1903 ido-use-merged-list nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1904 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1905 (setq ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1906 (list ido-text-init ido-current-directory olist oign omat))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1907 (ido-set-current-directory (car (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1908 (if (ido-final-slash ido-text-init)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1909 (setq ido-text-init ""))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1910 (setq ido-cur-list l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1911 ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1912 ido-matches l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1913 ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1914 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1915 ido-use-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1916 (ido-trace "Merged" t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1917 ))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1918
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1919 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1920 (ido-keep-item-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1921 (setq ido-keep-item-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1922 ido-rescan nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1923 ((eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1924 (setq ido-ignored-list nil
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1925 ido-cur-list (and (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1926 (not ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1927 (ido-make-file-list ido-default-item))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1928 ((eq ido-cur-item 'dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1929 (setq ido-ignored-list nil
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1930 ido-cur-list (and (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1931 (not ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1932 (ido-make-dir-list ido-default-item))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1933 ((eq ido-cur-item 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1934 (setq ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1935 ido-cur-list (ido-make-buffer-list ido-default-item)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1936 ((eq ido-cur-item 'list)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1937 (setq ido-ignored-list nil
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1938 ido-cur-list (ido-make-choice-list ido-default-item)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1939 (t nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1940 (setq ido-rotate-temp nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1941
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1942 (if ido-process-ignore-lists-inhibit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1943 (setq ido-process-ignore-lists t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1944 ido-process-ignore-lists-inhibit nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1945
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1946 (ido-set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1947 (if (and ido-matches (eq ido-try-merged-list 'auto))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1948 (setq ido-try-merged-list t))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1949 (let
76795
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1950 ((minibuffer-local-completion-map
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1951 (if (memq ido-cur-item '(file dir))
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1952 minibuffer-local-completion-map
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1953 ido-completion-map))
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1954 (minibuffer-local-filename-completion-map
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1955 (if (memq ido-cur-item '(file dir))
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1956 ido-completion-map
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1957 minibuffer-local-filename-completion-map))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1958 (max-mini-window-height (or ido-max-window-height
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1959 (and (boundp 'max-mini-window-height) max-mini-window-height)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1960 (ido-completing-read t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1961 (ido-require-match require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1962 (ido-use-mycompletion-depth (1+ (minibuffer-depth)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1963 (show-paren-mode nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1964 ;; prompt the user for the file name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1965 (setq ido-exit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1966 (setq ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1967 (catch 'ido
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1968 (completing-read
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1969 (ido-make-prompt item prompt)
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
1970 '(("dummy" . 1)) nil nil ; table predicate require-match
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1971 (prog1 ido-text-init (setq ido-text-init nil)) ;initial-contents
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1972 history))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1973 (ido-trace "completing-read" ido-final-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1974 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1975 (kill-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1976
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1977 (ido-trace "\n_EXIT_" ido-exit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1978
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1979 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1980 ((eq ido-exit 'refresh)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1981 (if (and (eq ido-use-merged-list 'auto)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1982 (or (input-pending-p)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1983 (setq ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1984 ido-keep-item-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1985 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1986
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1987 ((eq ido-exit 'done)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1988 (setq done t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1989 ido-selected ido-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1990 ido-exit nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1991
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1992 ((memq ido-exit '(edit chdir))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1993 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1994 ((memq ido-cur-item '(file dir))
55359
fa5273a32653 (ido-read-internal): Fix call to read-file-name for edit.
Kim F. Storm <storm@cua.dk>
parents: 54776
diff changeset
1995 (let* ((read-file-name-function nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1996 (edit (eq ido-exit 'edit))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1997 (d ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1998 (f ido-text-init)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1999 (new t))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2000 (setq ido-text-init "")
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2001 (while new
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2002 (setq new (if edit
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2003 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2004 (read-file-name (concat prompt "[EDIT] ")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2005 (expand-file-name d)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2006 (concat d f) nil f)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2007 (quit (concat d f)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2008 f)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2009 d (or (file-name-directory new) "/")
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2010 f (file-name-nondirectory new)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2011 edit t)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2012 (if (or
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2013 (file-directory-p d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2014 (and (yes-or-no-p (format "Create directory %s? " d))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2015 (condition-case nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2016 (progn (make-directory d t) t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2017 (error
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2018 (message "Could not create directory")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2019 (sit-for 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2020 nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2021 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2022 (ido-set-current-directory d nil (eq ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2023 (setq ido-text-init f
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2024 new nil))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2025 (t
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2026 (setq ido-text-init
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2027 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2028 (read-string (concat prompt "[EDIT] ") ido-final-text)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2029 (quit ido-final-text)))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2030
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2031 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2032
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2033 ((eq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2034 (setq ido-keep-item-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2035
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2036 ((memq ido-exit '(dired fallback find-file switch-to-buffer insert-buffer insert-file))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2037 (setq done t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2038
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2039 ((memq ido-exit '(updir push))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2040 ;; cannot go up if already at the root-dir (Unix) or at the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2041 ;; root-dir of a certain drive (Windows or MS-DOS).
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2042 (if (ido-is-tramp-root)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2043 (when (string-match "\\`\\(/\\([^/]+[:@]\\)*\\)\\([^/]+\\)[:@]\\'" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2044 (setq ido-text-init (match-string 3 ido-current-directory))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2045 (ido-set-current-directory (match-string 1 ido-current-directory))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2046 (setq ido-set-default-item t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2047 (unless (ido-is-root-directory)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2048 (when (eq ido-exit 'push)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2049 (setq ido-input-stack (cons (cons ido-cur-item ido-text) ido-input-stack))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2050 (setq ido-cur-item 'dir)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2051 (setq ido-text-init (file-name-nondirectory (substring ido-current-directory 0 -1)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2052 (ido-trace "push" ido-input-stack))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2053 (ido-set-current-directory (file-name-directory (substring ido-current-directory 0 -1)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2054 (setq ido-set-default-item t))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2055
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2056 ((eq ido-exit 'pop)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2057 (ido-trace "pop" ido-input-stack)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2058 (let ((elt (car ido-input-stack)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2059 (setq ido-input-stack (cdr ido-input-stack))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2060 (ido-set-current-directory (concat ido-current-directory ido-text))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2061 (setq ido-cur-item (car elt))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2062 (setq ido-text-init (cdr elt))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2063
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2064 ((eq ido-exit 'pop-all)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2065 (ido-trace "pop-all" ido-input-stack)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2066 (while ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2067 (let ((elt (car ido-input-stack)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2068 (setq ido-input-stack (cdr ido-input-stack))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2069 (ido-set-current-directory (concat ido-current-directory ido-text))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2070 (setq ido-cur-item (car elt))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2071 (setq ido-text-init (cdr elt)))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2072
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2073 ;; Handling the require-match must be done in a better way.
58458
1708184cc8da (ido-read-internal): Fix require-match check when
Kim F. Storm <storm@cua.dk>
parents: 57805
diff changeset
2074 ((and require-match
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2075 (not (memq require-match '(confirm confirm-after-completion)))
58458
1708184cc8da (ido-read-internal): Fix require-match check when
Kim F. Storm <storm@cua.dk>
parents: 57805
diff changeset
2076 (not (if ido-directory-too-big
1708184cc8da (ido-read-internal): Fix require-match check when
Kim F. Storm <storm@cua.dk>
parents: 57805
diff changeset
2077 (file-exists-p (concat ido-current-directory ido-final-text))
1708184cc8da (ido-read-internal): Fix require-match check when
Kim F. Storm <storm@cua.dk>
parents: 57805
diff changeset
2078 (ido-existing-item-p))))
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2079 (error "Must specify valid item"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2080
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2081 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2082 (setq ido-selected
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2083 (if (or (eq ido-exit 'takeprompt)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2084 (null ido-matches))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2085 ido-final-text
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2086 ;; else take head of list
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2087 (ido-name (car ido-matches))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2088
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2089 (cond
61738
31b357591bb4 (ido-read-internal): Fix `list' completion.
Kim F. Storm <storm@cua.dk>
parents: 61394
diff changeset
2090 ((memq item '(buffer list))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2091 (setq done t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2092
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2093 ((string-equal "./" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2094 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2095
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2096 ((string-equal "../" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2097 ;; cannot go up if already at the root-dir (Unix) or at the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2098 ;; root-dir of a certain drive (Windows or MS-DOS).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2099 (or (ido-is-root-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2100 (ido-set-current-directory (file-name-directory (substring ido-current-directory 0 -1))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2101 (setq ido-set-default-item t))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2102
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2103 ((and (string-match (if ido-enable-tramp-completion ".[:@]\\'" ".:\\'") ido-selected)
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2104 (ido-is-root-directory) ;; Ange-ftp or Tramp
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2105 (not (ido-local-file-exists-p ido-selected)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2106 (ido-set-current-directory ido-current-directory ido-selected)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2107 (ido-trace "tramp prefix" ido-selected)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2108 (if (ido-is-slow-ftp-host)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2109 (setq ido-exit 'fallback
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2110 done t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2111 (setq ido-set-default-item t)))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
2112
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2113 ((or (string-match "[/\\][^/\\]" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2114 (and (memq system-type '(windows-nt ms-dos))
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2115 (string-match "\\`[a-zA-Z]:" ido-selected)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2116 (ido-set-current-directory (file-name-directory ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2117 (setq ido-set-default-item t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2118
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2119 ((string-match "\\`~" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2120 (ido-set-current-home ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2121
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2122 ((ido-final-slash ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2123 (if ido-enable-last-directory-history
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2124 (let ((x (assoc ido-current-directory ido-last-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2125 (if x
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2126 (setcdr x ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2127 (setq ido-last-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2128 (cons (cons ido-current-directory ido-selected) ido-last-directory-list)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2129 (ido-set-current-directory ido-current-directory ido-selected)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2130 (if ido-input-stack
71275
aa026ce4fcef (ido-read-internal): Only pop stack elements automatically if they
Kim F. Storm <storm@cua.dk>
parents: 71273
diff changeset
2131 ; automatically pop stack elements which match existing files or directories
aa026ce4fcef (ido-read-internal): Only pop stack elements automatically if they
Kim F. Storm <storm@cua.dk>
parents: 71273
diff changeset
2132 (let (elt)
aa026ce4fcef (ido-read-internal): Only pop stack elements automatically if they
Kim F. Storm <storm@cua.dk>
parents: 71273
diff changeset
2133 (while (and (setq elt (car ido-input-stack))
aa026ce4fcef (ido-read-internal): Only pop stack elements automatically if they
Kim F. Storm <storm@cua.dk>
parents: 71273
diff changeset
2134 (file-exists-p (concat ido-current-directory (cdr elt))))
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2135 (if (setq ido-input-stack (cdr ido-input-stack))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2136 (ido-set-current-directory ido-current-directory (cdr elt))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2137 (setq ido-text-init (cdr elt)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2138 (setq ido-cur-item (car elt))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2139 (setq ido-set-default-item t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2140
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2141 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2142 (setq done t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2143 ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2144
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2145 (defun ido-edit-input ()
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2146 "Edit absolute file name entered so far with ido; terminate by RET.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2147 If cursor is not at the end of the user input, move to end of input."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2148 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2149 (if (not (eobp))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2150 (end-of-line)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2151 (setq ido-text-init (if ido-matches (ido-name (car ido-matches)) ido-text))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2152 (setq ido-exit 'edit)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2153 (exit-minibuffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2154
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2155 ;;; MAIN FUNCTIONS
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2156 (defun ido-buffer-internal (method &optional fallback prompt default initial switch-cmd)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2157 ;; Internal function for ido-switch-buffer and friends
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2158 (if (not ido-mode)
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2159 (progn
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2160 (run-hook-with-args 'ido-before-fallback-functions
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2161 (or fallback 'switch-to-buffer))
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2162 (call-interactively (or fallback 'switch-to-buffer)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2163 (let* ((ido-context-switch-command switch-cmd)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2164 (ido-current-directory nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2165 (ido-directory-nonreadable nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2166 (ido-directory-too-big nil)
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2167 (require-match (confirm-nonexistent-file-or-buffer))
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2168 (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2169 require-match initial))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2170 filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2171
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2172 ;; Choose the buffer name: either the text typed in, or the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2173 ;; of the list of matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2174
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2175 (cond
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2176 ((eq ido-exit 'find-file)
97979
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2177 (ido-file-internal
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2178 (if (memq method '(other-window other-frame)) method ido-default-file-method)
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2179 nil nil nil nil ido-text))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2180
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2181 ((eq ido-exit 'insert-file)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2182 (ido-file-internal 'insert 'insert-file nil "Insert file: " nil ido-text 'ido-enter-insert-buffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2183
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2184 ((eq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2185 (let ((read-buffer-function nil))
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2186 (setq this-command (or fallback 'switch-to-buffer))
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2187 (run-hook-with-args 'ido-before-fallback-functions this-command)
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2188 (call-interactively this-command)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2189
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2190 ;; Check buf is non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2191 ((not buf) nil)
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2192 ((= (length buf) 0) nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2193
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2194 ;; View buffer if it exists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2195 ((get-buffer buf)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2196 (add-to-history 'buffer-name-history buf)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2197 (if (eq method 'insert)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2198 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2199 (ido-record-command 'insert-buffer buf)
68804
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2200 (push-mark
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2201 (save-excursion
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2202 (insert-buffer-substring (get-buffer buf))
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2203 (point))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2204 (ido-visit-buffer buf method t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2205
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2206 ;; check for a virtual buffer reference
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2207 ((and ido-use-virtual-buffers ido-virtual-buffers
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2208 (setq filename (assoc buf ido-virtual-buffers)))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2209 (ido-visit-buffer (find-file-noselect (cdr filename)) method t))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2210
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2211 ((and (eq ido-create-new-buffer 'prompt)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2212 (null require-match)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2213 (not (y-or-n-p (format "No buffer matching `%s', create one? " buf))))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2214 nil)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2215
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2216 ;; buffer doesn't exist
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2217 ((and (eq ido-create-new-buffer 'never)
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2218 (null require-match))
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2219 (message "No buffer matching `%s'" buf))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2220
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2221 ((and (eq ido-create-new-buffer 'prompt)
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2222 (null require-match)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2223 (not (y-or-n-p (format "No buffer matching `%s', create one? " buf))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2224 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2225
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2226 ;; create a new buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2227 (t
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2228 (add-to-history 'buffer-name-history buf)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2229 (setq buf (get-buffer-create buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2230 (if (fboundp 'set-buffer-major-mode)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2231 (set-buffer-major-mode buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2232 (ido-visit-buffer buf method t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2233
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2234 (defun ido-record-work-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2235 (when (and (numberp ido-max-work-directory-list) (> ido-max-work-directory-list 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2236 (if (and (setq dir (or dir ido-current-directory)) (> (length dir) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2237 (let ((items ido-work-directory-list-ignore-regexps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2238 (case-fold-search nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2239 (while (and items dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2240 (if (string-match (car items) dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2241 (setq dir nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2242 (setq items (cdr items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2243 (if dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2244 (setq ido-work-directory-list (cons dir (delete dir ido-work-directory-list))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2245 (if (> (length ido-work-directory-list) ido-max-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2246 (setcdr (nthcdr (1- ido-max-work-directory-list) ido-work-directory-list) nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2247
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2248 (defun ido-forget-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2249 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2250 (when (and ido-current-directory ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2251 (setq ido-work-directory-list (delete ido-current-directory ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2252 (when ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2253 (ido-undo-merge-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2254 (setq ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2255 ido-try-merged-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2256 ido-use-merged-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2257 ido-text-init ido-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2258 ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2259 (exit-minibuffer))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2260
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2261 (defun ido-record-work-file (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2262 ;; Save NAME in ido-work-file-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2263 (when (and (numberp ido-max-work-file-list) (> ido-max-work-file-list 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2264 (or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2265 (and ido-work-file-list (equal (car ido-work-file-list) name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2266 (setq ido-work-file-list (cons name (delete name ido-work-file-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2267 (if (> (length ido-work-file-list) ido-max-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2268 (setcdr (nthcdr (1- ido-max-work-file-list) ido-work-file-list) nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2269
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2270 (defun ido-expand-directory (dir)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2271 ;; Expand DIR or use DEFAULT-DIRECTORY if nil.
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2272 ;; Add final slash to result in case it was missing from DEFAULT-DIRECTORY.
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2273 (ido-final-slash (expand-file-name (or dir default-directory)) t))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2274
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2275 (defun ido-file-internal (method &optional fallback default prompt item initial switch-cmd)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2276 ;; Internal function for ido-find-file and friends
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2277 (unless item
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2278 (setq item 'file))
61180
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2279 (let ((ido-current-directory (ido-expand-directory default))
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2280 (ido-context-switch-command switch-cmd)
64343
6e19d6e25256 (ido-file-internal, ido-read-file-name, ido-read-directory-name):
Kim F. Storm <storm@cua.dk>
parents: 64341
diff changeset
2281 ido-directory-nonreadable ido-directory-too-big
61180
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2282 filename)
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2283
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2284 (if (or (not ido-mode) (ido-is-slow-ftp-host))
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2285 (setq filename t
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2286 ido-exit 'fallback)
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2287 (setq ido-directory-nonreadable
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2288 (ido-nonreadable-directory-p ido-current-directory)
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2289 ido-directory-too-big
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2290 (and (not ido-directory-nonreadable)
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2291 (ido-directory-too-big-p ido-current-directory))))
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2292
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2293 (when (and (eq item 'file)
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2294 (or ido-use-url-at-point ido-use-filename-at-point))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2295 (let (fn d)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2296 (require 'ffap)
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 95057
diff changeset
2297 ;; Duplicate code from ffap-guesser as we want different behavior for files and URLs.
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2298 (cond
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2299 ((with-no-warnings
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2300 (and ido-use-url-at-point
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2301 ffap-url-regexp
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2302 (ffap-fixup-url (or (ffap-url-at-point)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2303 (ffap-gopher-at-point)))))
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2304 (setq ido-exit 'ffap
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2305 filename t))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2306
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2307 ((and ido-use-filename-at-point
86234
860a7a8e779e * progmodes/octave-mod.el (inferior-octave-send-list-and-digest):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85998
diff changeset
2308 (setq fn (with-no-warnings
860a7a8e779e * progmodes/octave-mod.el (inferior-octave-send-list-and-digest):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85998
diff changeset
2309 (if (eq ido-use-filename-at-point 'guess)
860a7a8e779e * progmodes/octave-mod.el (inferior-octave-send-list-and-digest):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85998
diff changeset
2310 (ffap-guesser)
860a7a8e779e * progmodes/octave-mod.el (inferior-octave-send-list-and-digest):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85998
diff changeset
2311 (ffap-string-at-point))))
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2312 (not (string-match "^http:/" fn))
106366
b78c33f367a0 Andreas Politz <politza at fh-trier.de> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 105994
diff changeset
2313 (setq d (file-name-directory (expand-file-name fn)))
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2314 (file-directory-p d))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2315 (setq ido-current-directory d)
61180
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2316 (setq initial (file-name-nondirectory fn))))))
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2317
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2318 (let (ido-saved-vc-hb
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2319 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2320 (ido-work-directory-index -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2321 (ido-work-file-index -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2322 (ido-find-literal nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2323
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2324 (unless filename
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2325 (setq ido-saved-vc-hb vc-handled-backends)
73166
7e2d2b8518f4 (ido-file-internal): Only bind minibuffer-completing-file-name
Kim F. Storm <storm@cua.dk>
parents: 72868
diff changeset
2326 (let ((minibuffer-completing-file-name t))
7e2d2b8518f4 (ido-file-internal): Only bind minibuffer-completing-file-name
Kim F. Storm <storm@cua.dk>
parents: 72868
diff changeset
2327 (setq filename (ido-read-internal item
7e2d2b8518f4 (ido-file-internal): Only bind minibuffer-completing-file-name
Kim F. Storm <storm@cua.dk>
parents: 72868
diff changeset
2328 (or prompt "Find file: ")
74020
9843dfd8d011 (ido-file-internal): Use current buffer's file name as default
Kim F. Storm <storm@cua.dk>
parents: 73985
diff changeset
2329 'ido-file-history
9843dfd8d011 (ido-file-internal): Use current buffer's file name as default
Kim F. Storm <storm@cua.dk>
parents: 73985
diff changeset
2330 (and (eq method 'alt-file) buffer-file-name)
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2331 (confirm-nonexistent-file-or-buffer) initial))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2332
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2333 ;; Choose the file name: either the text typed in, or the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2334 ;; of the list of matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2335
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2336 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2337 ((eq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2338 ;; Need to guard setting of default-directory here, since
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2339 ;; we don't want to change directory of current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2340 (let ((default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2341 (read-file-name-function nil))
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2342 (setq this-command (or fallback 'find-file))
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2343 (run-hook-with-args 'ido-before-fallback-functions this-command)
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2344 (call-interactively this-command)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2345
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2346 ((eq ido-exit 'switch-to-buffer)
97979
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2347 (ido-buffer-internal
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2348 (if (memq method '(other-window other-frame)) method ido-default-buffer-method)
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2349 nil nil nil ido-text))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2350
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2351 ((eq ido-exit 'insert-buffer)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2352 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil ido-text 'ido-enter-insert-file))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2353
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2354 ((eq ido-exit 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2355 (dired (concat ido-current-directory (or ido-text ""))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2356
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2357 ((eq ido-exit 'ffap)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2358 (find-file-at-point))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2359
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2360 ((eq method 'alt-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2361 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2362 (setq default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2363 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2364 (find-alternate-file filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2365
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2366 ((memq method '(dired list-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2367 (if (equal filename ".")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2368 (setq filename ""))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2369 (let* ((dirname (ido-final-slash (concat ido-current-directory filename) t))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2370 (file (substring dirname 0 -1)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2371 (cond
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2372 ((file-directory-p dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2373 (ido-record-command method dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2374 (ido-record-work-directory dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2375 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2376 ((file-directory-p ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2377 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2378 ((file-exists-p file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2379 (ido-record-command method ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2380 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2381 (funcall method ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2382 (if (eq method 'dired)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2383 (with-no-warnings
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2384 (dired-goto-file (expand-file-name file)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2385 ((string-match "[[*?]" filename)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2386 (setq dirname (concat ido-current-directory filename))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2387 (ido-record-command method dirname)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2388 (ido-record-work-directory)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2389 (funcall method dirname))
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2390 ((y-or-n-p (format "Directory %s does not exist. Create it? " filename))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2391 (ido-record-command method dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2392 (ido-record-work-directory dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2393 (make-directory-internal dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2394 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2395 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2396 ;; put make-directory command on history
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2397 (ido-record-command 'make-directory dirname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2398 (t (error "No such directory")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2399
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2400 ((eq method 'write)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2401 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2402 (setq default-directory ido-current-directory)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2403 (setq filename (concat ido-current-directory filename))
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2404 (ido-record-command 'write-file filename)
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2405 (add-to-history 'file-name-history filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2406 (ido-record-work-directory)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2407 (write-file filename))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2408
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2409 ((eq method 'read-only)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2410 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2411 (setq filename (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2412 (ido-record-command fallback filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2413 (ido-record-work-directory)
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2414 (run-hook-with-args 'ido-before-fallback-functions fallback)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2415 (funcall fallback filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2416
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2417 ((eq method 'insert)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2418 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2419 (setq filename (concat ido-current-directory filename))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2420 (ido-record-command
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2421 (if ido-find-literal 'insert-file-literally 'insert-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2422 filename)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2423 (add-to-history 'file-name-history filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2424 (ido-record-work-directory)
68804
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2425 (insert-file-1 filename
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2426 (if ido-find-literal
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2427 #'insert-file-contents-literally
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2428 #'insert-file-contents)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2429
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2430 (filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2431 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2432 (setq filename (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2433 (ido-record-command 'find-file filename)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2434 (add-to-history 'file-name-history filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2435 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2436 (ido-visit-buffer (find-file-noselect filename nil ido-find-literal) method))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2437
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2438 (defun ido-existing-item-p ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2439 ;; Return non-nil if there is a matching item
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2440 (not (null ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2441
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2442 ;;; COMPLETION CODE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2443
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2444 (defun ido-set-common-completion ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2445 ;; Find common completion of `ido-text' in `ido-matches'
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2446 ;; The result is stored in `ido-common-match-string'
75573
8ddc4d84085e (ido-set-common-completion): Use `let', not `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 75391
diff changeset
2447 (let (val)
8ddc4d84085e (ido-set-common-completion): Use `let', not `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 75391
diff changeset
2448 (setq ido-common-match-string nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2449 (if (and ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2450 (not ido-enable-regexp) ;; testing
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2451 (stringp ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2452 (> (length ido-text) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2453 (if (setq val (ido-find-common-substring ido-matches ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2454 (setq ido-common-match-string val)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2455 val))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2456
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2457 (defun ido-complete ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2458 "Try and complete the current pattern amongst the file names."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2459 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2460 (let (res)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2461 (cond
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2462 (ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2463 ;; Do nothing
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2464 )
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2465 ((and (memq ido-cur-item '(file dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2466 (string-match "[$]" ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2467 (let ((evar (substitute-in-file-name (concat ido-current-directory ido-text))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2468 (if (not (file-exists-p (file-name-directory evar)))
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
2469 (message "Expansion generates non-existing directory name")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2470 (if (file-directory-p evar)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2471 (ido-set-current-directory evar)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2472 (let ((d (or (file-name-directory evar) "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2473 (f (file-name-nondirectory evar)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2474 (when (file-directory-p d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2475 (ido-set-current-directory d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2476 (setq ido-text-init f))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2477 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2478 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2479
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2480 (ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2481 (setq ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2482 (setq ido-text-init ido-text)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2483 (setq ido-exit 'refresh)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2484 (exit-minibuffer))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2485
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2486 ((not ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2487 (when ido-completion-buffer
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
2488 (call-interactively (setq this-command ido-cannot-complete-command))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2489
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2490 ((and (= 1 (length ido-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2491 (not (and ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2492 (string-equal ido-current-directory "/")
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2493 (string-match ".[@:]\\'" (ido-name (car ido-matches)))))
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2494 (not (ido-local-file-exists-p (ido-name (car ido-matches)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2495 ;; only one choice, so select it.
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2496 (if (not ido-confirm-unique-completion)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2497 (exit-minibuffer)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2498 (setq ido-rescan (not ido-enable-prefix))
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2499 (delete-region (minibuffer-prompt-end) (point))
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
2500 (insert (ido-name (car ido-matches)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2501
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2502 (t ;; else there could be some completions
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2503 (setq res ido-common-match-string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2504 (if (and (not (memq res '(t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2505 (not (equal res ido-text)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2506 ;; found something to complete, so put it in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2507 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2508 ;; move exact match to front if not in prefix mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2509 (setq ido-rescan (not ido-enable-prefix))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2510 (delete-region (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2511 (insert res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2512 ;; else nothing to complete
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
2513 (call-interactively (setq this-command ido-cannot-complete-command))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2514 )))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2515
46231
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2516 (defun ido-complete-space ()
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2517 "Try completion unless inserting the space makes sense."
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2518 (interactive)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2519 (if (and (stringp ido-common-match-string)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2520 (stringp ido-text)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2521 (cond
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2522 ((> (length ido-common-match-string) (length ido-text))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2523 (= (aref ido-common-match-string (length ido-text)) ? ))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2524 (ido-matches
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2525 (let (insert-space
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2526 (re (concat (regexp-quote ido-text) " "))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2527 (comp ido-matches))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2528 (while comp
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2529 (if (string-match re (ido-name (car comp)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2530 (setq comp nil insert-space t)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2531 (setq comp (cdr comp))))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2532 insert-space))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2533 (t nil)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2534 (insert " ")
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2535 (ido-complete)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2536
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2537 (defun ido-undo-merge-work-directory (&optional text try refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2538 "Undo or redo last ido directory merge operation.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2539 If no merge has yet taken place, toggle automatic merging option."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2540 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2541 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2542 (ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2543 (ido-set-current-directory (nth 1 ido-pre-merge-state))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2544 (setq ido-text-init (or text (car ido-pre-merge-state))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2545 ido-cur-list (nth 2 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2546 ido-ignored-list (nth 3 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2547 ido-matches (nth 4 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2548 ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2549 ido-try-merged-list try
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2550 ido-keep-item-list (not refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2551 ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2552 ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2553 ido-pre-merge-state nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2554 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2555 (text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2556 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2557 (ido-try-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2558 (setq ido-try-merged-list nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2559 (ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2560 (setq ido-try-merged-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2561 ((not ido-use-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2562 (ido-merge-work-directories))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2563
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2564 ;;; Magic C-f
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2565
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2566 (defun ido-magic-forward-char (arg)
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2567 "Move forward in user input or perform magic action.
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
2568 If no user input is present, or at end of input, perform magic actions:
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2569 C-x C-b ... C-f switch to `ido-find-file'.
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2570 C-x C-f ... C-f fallback to non-ido `find-file'.
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2571 C-x C-d ... C-f fallback to non-ido brief `dired'.
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2572 C-x d ... C-f fallback to non-ido `dired'."
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2573 (interactive "P")
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2574 (cond
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2575 ((or arg (not (eobp)))
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2576 (forward-char (min (prefix-numeric-value arg)
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2577 (- (point-max) (point)))))
62537
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2578 ((memq ido-cur-item '(file dir))
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2579 (ido-fallback-command))
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2580 (ido-context-switch-command
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2581 (call-interactively ido-context-switch-command))
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2582 ((eq ido-cur-item 'buffer)
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2583 (ido-enter-find-file))))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2584
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2585 ;;; Magic C-b
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2586
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2587 (defun ido-magic-backward-char (arg)
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2588 "Move backward in user input or perform magic action.
62537
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2589 If no user input is present, or at start of input, perform magic actions:
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2590 C-x C-f C-b switch to `ido-switch-buffer'.
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2591 C-x C-d C-b switch to `ido-switch-buffer'.
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2592 C-x d C-b switch to `ido-switch-buffer'.
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2593 C-x C-b C-b fallback to non-ido `switch-to-buffer'."
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2594 (interactive "P")
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2595 (cond
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2596 ((or arg (> (point) (minibuffer-prompt-end)))
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2597 (forward-char
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2598 (- (min (prefix-numeric-value arg)
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2599 (- (point) (minibuffer-prompt-end))))))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2600 ((eq last-command this-command)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2601 (when (and (memq ido-cur-item '(file dir))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2602 (not (bobp)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2603 (ido-push-dir))) ; else do nothing
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2604 ((eq ido-cur-item 'buffer)
62537
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2605 (ido-fallback-command))
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2606 (ido-context-switch-command
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2607 (call-interactively ido-context-switch-command))
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2608 (t
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2609 (ido-enter-switch-buffer))))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2610
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2611 ;;; Magic C-d
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2612
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2613 (defun ido-magic-delete-char (arg)
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2614 "Delete following char in user input or perform magic action.
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2615 If at end of user input, perform magic actions:
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2616 C-x C-f ... C-d enter `dired' on current directory."
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2617 (interactive "P")
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2618 (cond
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2619 ((or arg (not (eobp)))
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2620 (delete-char (min (prefix-numeric-value arg)
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2621 (- (point-max) (point)))))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2622 (ido-context-switch-command
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2623 nil)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2624 ((memq ido-cur-item '(file dir))
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2625 (ido-enter-dired))))
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2626
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2627
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2628 ;;; TOGGLE FUNCTIONS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2629
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2630 (defun ido-toggle-case ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2631 "Toggle the value of `ido-case-fold'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2632 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2633 (setq ido-case-fold (not ido-case-fold))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2634 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2635 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2636
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2637 (defun ido-toggle-regexp ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2638 "Toggle the value of `ido-enable-regexp'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2639 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2640 (setq ido-enable-regexp (not ido-enable-regexp))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2641 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2642 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2643
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2644 (defun ido-toggle-prefix ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2645 "Toggle the value of `ido-enable-prefix'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2646 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2647 (setq ido-enable-prefix (not ido-enable-prefix))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2648 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2649 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2650
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2651 (defun ido-toggle-ignore ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2652 "Toggle ignoring files specified with `ido-ignore-files'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2653 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2654 (if (and (not (eobp)) (> (point) (minibuffer-prompt-end)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2655 (goto-char (minibuffer-prompt-end))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2656 (if ido-directory-too-big
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2657 (progn
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2658 (message "Reading directory...")
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2659 (setq ido-directory-too-big nil))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2660 (setq ido-process-ignore-lists (not ido-process-ignore-lists)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2661 (setq ido-text-init ido-text)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2662 (setq ido-exit 'refresh)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2663 (exit-minibuffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2664
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2665 (defun ido-toggle-vc ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2666 "Disable version control for this file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2667 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2668 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2669 (progn
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2670 (setq vc-handled-backends
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2671 (if vc-handled-backends nil ido-saved-vc-hb))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2672 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2673 (setq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2674 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2675
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2676 (defun ido-toggle-literal ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2677 "Toggle literal reading of this file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2678 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2679 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2680 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2681 (setq ido-find-literal (not ido-find-literal))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2682 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2683 (setq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2684 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2685
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2686 (defun ido-reread-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2687 "Read current directory again.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2688 May be useful if cached version is no longer valid, but directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2689 timestamp has not changed (e.g. with ftp or on Windows)."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2690 (interactive)
73388
98bbab587745 (ido-reread-directory): Work in `dir' mode too.
Kim F. Storm <storm@cua.dk>
parents: 73376
diff changeset
2691 (if (and ido-mode (memq ido-cur-item '(file dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2692 (progn
69809
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
2693 (if (ido-is-unc-root)
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
2694 (setq ido-unc-hosts-cache t)
7dd2c54d4afb (ido-mode): Set after ido-unc-hosts and ido-ignore-unc-host-regexps.
Kim F. Storm <storm@cua.dk>
parents: 69748
diff changeset
2695 (ido-remove-cached-dir ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2696 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2697 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2698 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2699 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2700
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2701 (defun ido-exit-minibuffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2702 "Exit minibuffer, but make sure we have a match if one is needed."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2703 (interactive)
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2704 (if (and (or (not ido-require-match)
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2705 (if (memq ido-require-match '(confirm confirm-after-completion))
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2706 (if (or (eq ido-cur-item 'dir)
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2707 (eq last-command this-command))
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2708 t
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2709 (setq ido-show-confirm-message t)
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2710 nil))
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2711 (ido-existing-item-p))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2712 (not ido-incomplete-regexp))
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2713 (exit-minibuffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2714
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2715 (defun ido-select-text ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2716 "Select the buffer or file named by the prompt.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2717 If no buffer or file exactly matching the prompt exists, maybe create a new one."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2718 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2719 (setq ido-exit 'takeprompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2720 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2721
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2722 (defun ido-fallback-command ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2723 "Fallback to non-ido version of current command."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2724 (interactive)
60127
283f8f92beaa (ido-fallback-command): Pass user input to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 59996
diff changeset
2725 (let ((i (length ido-text)))
283f8f92beaa (ido-fallback-command): Pass user input to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 59996
diff changeset
2726 (while (> i 0)
283f8f92beaa (ido-fallback-command): Pass user input to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 59996
diff changeset
2727 (push (aref ido-text (setq i (1- i))) unread-command-events)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2728 (setq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2729 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2730
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2731 (defun ido-enter-find-file ()
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
2732 "Drop into `find-file' from buffer switching."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2733 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2734 (setq ido-exit 'find-file)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2735 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2736
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2737 (defun ido-enter-switch-buffer ()
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
2738 "Drop into `ido-switch-buffer' from file switching."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2739 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2740 (setq ido-exit 'switch-to-buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2741 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2742
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2743 (defun ido-enter-dired ()
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2744 "Drop into `dired' from file switching."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2745 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2746 (setq ido-exit 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2747 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2748
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2749 (defun ido-enter-insert-buffer ()
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2750 "Drop into `insert-buffer' from insert file."
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2751 (interactive)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2752 (setq ido-exit 'insert-buffer)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2753 (exit-minibuffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2754
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2755 (defun ido-enter-insert-file ()
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
2756 "Drop into `insert-file' from insert buffer."
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2757 (interactive)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2758 (setq ido-exit 'insert-file)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2759 (exit-minibuffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2760
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2761
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2762 (defun ido-up-directory (&optional clear)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2763 "Go up one directory level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2764 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2765 (setq ido-text-init (if clear nil ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2766 (setq ido-exit 'updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2767 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2768 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2769
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2770 (defun ido-delete-backward-updir (count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2771 "Delete char backwards, or at beginning of buffer, go up one level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2772 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2773 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2774 ((= (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2775 (if (not count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2776 (ido-up-directory t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2777 ((and ido-pre-merge-state (string-equal (car ido-pre-merge-state) ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2778 (ido-undo-merge-work-directory (substring ido-text 0 -1) t t))
49579
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2779 ((eq this-original-command 'viper-backward-char)
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2780 (funcall this-original-command (prefix-numeric-value count)))
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2781 ((eq this-original-command 'viper-del-backward-char-in-insert)
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2782 (funcall this-original-command))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2783 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2784 (delete-backward-char (prefix-numeric-value count)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2785
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2786 (defun ido-delete-backward-word-updir (count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2787 "Delete all chars backwards, or at beginning of buffer, go up one level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2788 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2789 (if (= (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2790 (if (not count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2791 (ido-up-directory t))
49579
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2792 (if (eq this-original-command 'viper-delete-backward-word)
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2793 (funcall this-original-command (prefix-numeric-value count))
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
2794 (backward-kill-word (prefix-numeric-value count)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2795
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2796 (defun ido-get-work-directory (&optional incr must-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2797 (let ((n (length ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2798 (i ido-work-directory-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2799 (j 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2800 dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2801 (if (or (not ido-text) (= (length ido-text) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2802 (setq must-match nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2803 (while (< j n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2804 (setq i (+ i incr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2805 j (1+ j))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2806 (if (> incr 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2807 (if (>= i n) (setq i 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2808 (if (< i 0) (setq i (1- n))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2809 (setq dir (nth i ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2810 (if (and dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2811 (not (equal dir ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2812 (file-directory-p dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2813 (or (not must-match)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2814 ;; TODO. check for nonreadable and too-big.
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
2815 (ido-set-matches-1
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2816 (if (eq ido-cur-item 'file)
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
2817 (ido-make-file-list-1 dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
2818 (ido-make-dir-list-1 dir)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2819 (setq j n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2820 (setq dir nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2821 (if dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2822 (setq ido-work-directory-index i))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2823 dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2824
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2825 (defun ido-prev-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2826 "Change to next working directory in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2827 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2828 (let ((dir (ido-get-work-directory 1 ido-work-directory-match-only)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2829 (when dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2830 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2831 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2832 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2833 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2834 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2835
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2836 (defun ido-next-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2837 "Change to previous working directory in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2838 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2839 (let ((dir (ido-get-work-directory -1 ido-work-directory-match-only)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2840 (when dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2841 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2842 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2843 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2844 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2845 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2846
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2847 (defun ido-merge-work-directories ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2848 "Search (and merge) work directories for files matching the current input string."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2849 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2850 (setq ido-use-merged-list t ido-try-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2851 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2852 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2853 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2854 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2855
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2856 (defun ido-wide-find-file (&optional file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2857 "Prompt for FILE to search for using find, starting from current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2858 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2859 (unless file
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2860 (let ((enable-recursive-minibuffers t))
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2861 (setq file
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2862 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2863 (read-string (concat "Wide find file: " ido-current-directory) ido-text)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2864 (quit "")))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2865 (when (> (length file) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2866 (setq ido-use-merged-list t ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2867 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2868 (setq ido-text-init file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2869 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2870 (exit-minibuffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2871
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2872 (defun ido-wide-find-dir (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2873 "Prompt for DIR to search for using find, starting from current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2874 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2875 (unless dir
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2876 (let ((enable-recursive-minibuffers t))
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2877 (setq dir
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2878 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2879 (read-string (concat "Wide find directory: " ido-current-directory) ido-text)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2880 (quit "")))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2881 (when (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2882 (setq ido-use-merged-list t ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2883 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2884 (setq ido-text-init (ido-final-slash dir t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2885 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2886 (exit-minibuffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2887
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2888 (defun ido-wide-find-dir-or-delete-dir (&optional dir)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2889 "Prompt for DIR to search for using find, starting from current directory.
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2890 If input stack is non-empty, delete current directory component."
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2891 (interactive)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2892 (if ido-input-stack
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2893 (ido-delete-backward-word-updir 1)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2894 (ido-wide-find-dir)))
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2895
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2896 (defun ido-take-first-match ()
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2897 "Use first matching item as input text."
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2898 (interactive)
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2899 (when ido-matches
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
2900 (setq ido-text-init (ido-name (car ido-matches)))
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2901 (setq ido-exit 'refresh)
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2902 (exit-minibuffer)))
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2903
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2904 (defun ido-push-dir ()
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2905 "Move to previous directory in file name, push current input on stack."
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2906 (interactive)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2907 (setq ido-exit 'push)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2908 (exit-minibuffer))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2909
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2910 (defun ido-push-dir-first ()
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2911 "Move to previous directory in file name, push first match on stack."
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2912 (interactive)
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2913 (if ido-matches
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
2914 (setq ido-text (ido-name (car ido-matches))))
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2915 (setq ido-exit 'push)
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2916 (exit-minibuffer))
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2917
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2918 (defun ido-pop-dir (arg)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2919 "Pop directory from input stack back to input.
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2920 With \\[universal-argument], pop all elements."
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2921 (interactive "P")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2922 (when ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2923 (setq ido-exit (if arg 'pop-all 'pop))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2924 (exit-minibuffer)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2925
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2926 (defun ido-wide-find-file-or-pop-dir (arg)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2927 (interactive "P")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2928 (if ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2929 (ido-pop-dir arg)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2930 (ido-wide-find-file)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2931
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2932 (defun ido-make-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2933 "Prompt for DIR to create in current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2934 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2935 (unless dir
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2936 (let ((enable-recursive-minibuffers t))
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2937 (setq dir
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2938 (read-string (concat "Make directory: " ido-current-directory) ido-text))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2939 (when (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2940 (setq dir (concat ido-current-directory dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2941 (unless (file-exists-p dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2942 (make-directory dir t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2943 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2944 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2945 (setq ido-text-init nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2946 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2947 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2948
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2949 (defun ido-get-work-file (incr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2950 (let ((n (length ido-work-file-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2951 (i (+ ido-work-file-index incr))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2952 name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2953 (if (> incr 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2954 (if (>= i n) (setq i 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2955 (if (< i 0) (setq i (1- n))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2956 (setq name (nth i ido-work-file-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2957 (setq ido-work-file-index i)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2958 name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2959
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2960 (defun ido-prev-work-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2961 "Change to next working file name in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2962 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2963 (let ((name (ido-get-work-file 1)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2964 (when name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2965 (setq ido-text-init name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2966 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2967 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2968
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2969 (defun ido-next-work-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2970 "Change to previous working file name in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2971 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2972 (let ((name (ido-get-work-file -1)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2973 (when name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2974 (setq ido-text-init name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2975 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2976 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2977
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2978 (defun ido-copy-current-file-name (all)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2979 "Insert file name of current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2980 If repeated, insert text from buffer instead."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2981 (interactive "P")
71803
d35d3efc3d99 (ido-copy-current-file-name): Use buffer-name if buffer-file-name is nil.
Kim F. Storm <storm@cua.dk>
parents: 71275
diff changeset
2982 (let* ((bfname (or (buffer-file-name ido-entry-buffer)
d35d3efc3d99 (ido-copy-current-file-name): Use buffer-name if buffer-file-name is nil.
Kim F. Storm <storm@cua.dk>
parents: 71275
diff changeset
2983 (buffer-name ido-entry-buffer)))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2984 (name (and bfname (file-name-nondirectory bfname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2985 (when name
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2986 (setq ido-text-init
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2987 (if (or all
71271
29fa87029ede (ido-copy-current-file-name): Repeating C-w inserts whole file name.
Kim F. Storm <storm@cua.dk>
parents: 71269
diff changeset
2988 (eq last-command this-command)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2989 (not (equal (file-name-directory bfname) ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2990 (not (string-match "\\.[^.]*\\'" name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2991 name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2992 (substring name 0 (1+ (match-beginning 0)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2993 (setq ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2994 ido-try-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2995 (exit-minibuffer))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2996
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2997 (defun ido-copy-current-word (all)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
2998 "Insert current word (file or directory name) from current buffer."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2999 (interactive "P")
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105601
diff changeset
3000 (let ((word (with-current-buffer ido-entry-buffer
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3001 (let ((p (point)) start-line end-line start-name name)
73985
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3002 (if (and mark-active (/= p (mark)))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3003 (setq start-name (mark))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3004 (beginning-of-line)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3005 (setq start-line (point))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3006 (end-of-line)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3007 (setq end-line (point))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3008 (goto-char p)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3009 (if (re-search-backward "[^-_a-zA-Z0-9:./\\~@]" start-line 1)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3010 (forward-char 1))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3011 (setq start-name (point))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3012 (re-search-forward "[-_a-zA-Z0-9:./\\~@]*" end-line 1)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3013 (if (= start-name (point))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3014 (setq start-name nil)))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3015 (and start-name
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3016 (buffer-substring-no-properties start-name (point)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3017 (if (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3018 ((not word) nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3019 ((string-match "\\`[~/]" word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3020 (setq ido-text-init word
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3021 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3022 ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3023 ((string-match "/" word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3024 (setq ido-text-init (concat ido-current-directory word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3025 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3026 ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3027 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3028 (setq ido-text-init word
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3029 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3030 ido-exit 'refresh)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3031 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3032
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3033 (defun ido-next-match ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3034 "Put first element of `ido-matches' at the end of the list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3035 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3036 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3037 (let ((next (cadr ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3038 (setq ido-cur-list (ido-chop ido-cur-list next))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3039 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3040 (setq ido-rotate t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3041
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3042 (defun ido-prev-match ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3043 "Put last element of `ido-matches' at the front of the list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3044 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3045 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3046 (let ((prev (car (last ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3047 (setq ido-cur-list (ido-chop ido-cur-list prev))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3048 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3049 (setq ido-rotate t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3050
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3051 (defun ido-next-match-dir ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3052 "Find next directory in match list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3053 If work directories have been merged, cycle through directories for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3054 first matching file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3055 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3056 (if ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3057 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3058 (let* ((elt (car ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3059 (dirs (cdr elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3060 (when (> (length dirs) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3061 (setcdr elt (ido-chop dirs (cadr dirs))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3062 (setq ido-rescan nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3063 (let ((cnt (length ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3064 (i 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3065 (while (and (< i cnt) (not (ido-final-slash (nth i ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3066 (setq i (1+ i)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3067 (if (< i cnt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3068 (setq ido-cur-list (ido-chop ido-cur-list (nth i ido-matches)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3069
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3070 (defun ido-prev-match-dir ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3071 "Find previous directory in match list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3072 If work directories have been merged, cycle through directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3073 for first matching file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3074 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3075 (if ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3076 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3077 (let* ((elt (car ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3078 (dirs (cdr elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3079 (when (> (length dirs) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3080 (setcdr elt (ido-chop dirs (car (last dirs)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3081 (setq ido-rescan nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3082 (let* ((cnt (length ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3083 (i (1- cnt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3084 (while (and (> i 0) (not (ido-final-slash (nth i ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3085 (setq i (1- i)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3086 (if (> i 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3087 (setq ido-cur-list (ido-chop ido-cur-list (nth i ido-matches)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3088
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3089 (defun ido-restrict-to-matches ()
47977
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3090 "Set current item list to the currently matched items."
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3091 (interactive)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3092 (when ido-matches
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3093 (setq ido-cur-list ido-matches
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3094 ido-text-init ""
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3095 ido-rescan nil
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3096 ido-exit 'keep)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3097 (exit-minibuffer)))
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3098
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3099 (defun ido-chop (items elem)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3100 "Remove all elements before ELEM and put them at the end of ITEMS."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3101 (let ((ret nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3102 (next nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3103 (sofar nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3104 (while (not ret)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3105 (setq next (car items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3106 (if (equal next elem)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3107 (setq ret (append items (nreverse sofar)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3108 ;; else
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3109 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3110 (setq items (cdr items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3111 (setq sofar (cons next sofar)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3112 ret))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3113
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3114 (defun ido-name (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3115 ;; Return file name for current item, whether in a normal list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3116 ;; or a merged work directory list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3117 (if (consp item) (car item) item))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3118
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3119
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3120 ;;; CREATE LIST OF ALL CURRENT FILES
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3121
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3122 (defun ido-all-completions ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3123 ;; Return unsorted list of all competions.
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3124 (let ((ido-process-ignore-lists nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3125 (ido-directory-too-big nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3126 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3127 ((eq ido-cur-item 'file)
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3128 (ido-make-file-list-1 ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3129 ((eq ido-cur-item 'dir)
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3130 (ido-make-dir-list-1 ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3131 ((eq ido-cur-item 'buffer)
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3132 (ido-make-buffer-list-1))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3133 ((eq ido-cur-item 'list)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3134 ido-choice-list)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3135 (t nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3136
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3137
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3138 ;; File list sorting
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3139
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3140 (defun ido-file-lessp (a b)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3141 ;; Simple compare two file names.
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3142 (string-lessp (ido-no-final-slash a) (ido-no-final-slash b)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3143
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3144
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3145 (defun ido-file-extension-lessp (a b)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3146 ;; Compare file names according to ido-file-extensions-order list.
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3147 (let ((n (compare-strings a 0 nil b 0 nil nil))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3148 lessp p)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3149 (if (eq n t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3150 nil
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3151 (if (< n 0)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3152 (setq n (1- (- n))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3153 p a a b b p
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3154 lessp t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3155 (setq n (1- n)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3156 (cond
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3157 ((= n 0)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3158 lessp)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3159 ((= (aref a n) ?.)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3160 (ido-file-extension-aux a b n lessp))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3161 (t
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3162 (while (and (> n 2) (/= (aref a n) ?.))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3163 (setq n (1- n)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3164 (if (> n 1)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3165 (ido-file-extension-aux a b n lessp)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3166 lessp))))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3167
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3168 (defun ido-file-extension-aux (a b n lessp)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3169 (let ((oa (ido-file-extension-order a n))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3170 (ob (ido-file-extension-order b n)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3171 (cond
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3172 ((and oa ob)
73266
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3173 (cond
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3174 ((= oa ob)
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3175 lessp)
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3176 (lessp
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3177 (> oa ob))
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3178 (t
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3179 (< oa ob))))
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3180 (oa
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3181 (not lessp))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3182 (ob
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3183 lessp)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3184 (t
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3185 lessp))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3186
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3187 (defun ido-file-extension-order (s n)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3188 (let ((l ido-file-extensions-order)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3189 (i 0) o do)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3190 (while l
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3191 (cond
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3192 ((eq (car l) t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3193 (setq do i
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3194 l (cdr l)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3195 ((eq (compare-strings s n nil (car l) 0 nil nil) t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3196 (setq o i
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3197 l nil))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3198 (t
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3199 (setq l (cdr l))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3200 (setq i (1+ i)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3201 (or o do)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3202
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3203
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3204 (defun ido-sort-merged-list (items promote)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3205 ;; Input is list of ("file" . "dir") cons cells.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3206 ;; Output is sorted list of ("file "dir" ...) lists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3207 (let ((l (sort items (lambda (a b) (string-lessp (car b) (car a)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3208 res a cur dirs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3209 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3210 (setq a (car l)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3211 l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3212 (if (and res (string-equal (car (car res)) (car a)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3213 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3214 (setcdr (car (if cur (cdr res) res)) (cons (cdr a) (cdr (car res))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3215 (if (and promote (string-equal ido-current-directory (cdr a)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3216 (setq cur t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3217 (setq res (cons (list (car a) (cdr a)) res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3218 cur nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3219 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3220
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3221 (defun ido-wide-find-dirs-or-files (dir file &optional prefix finddir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3222 ;; As ido-run-find-command, but returns a list of cons pairs ("file" . "dir")
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3223 (let ((filenames
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3224 (split-string
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3225 (shell-command-to-string
73260
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3226 (concat "find "
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3227 (shell-quote-argument dir)
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3228 " -name "
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3229 (shell-quote-argument
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3230 (concat (if prefix "" "*") file "*"))
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3231 " -type " (if finddir "d" "f") " -print"))))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3232 filename d f
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3233 res)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3234 (while filenames
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3235 (setq filename (car filenames)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3236 filenames (cdr filenames))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3237 (if (and (string-match "^/" filename)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3238 (file-exists-p filename))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3239 (setq d (file-name-directory filename)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3240 f (file-name-nondirectory filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3241 res (cons (cons (if finddir (ido-final-slash f t) f) d) res))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3242 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3243
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3244 (defun ido-flatten-merged-list (items)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
3245 ;; Create a list of directory names based on a merged directory list.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3246 (let (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3247 (while items
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3248 (let* ((item (car items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3249 (file (car item))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3250 (dirs (cdr item)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3251 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3252 (setq res (cons (concat (car dirs) file) res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3253 dirs (cdr dirs))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3254 (setq items (cdr items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3255 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3256
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3257
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3258 (defun ido-make-merged-file-list-1 (text auto wide)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3259 (let (res)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3260 (if (and (ido-final-slash text) ido-dir-file-cache)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3261 (if wide
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3262 (setq res (ido-wide-find-dirs-or-files
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3263 ido-current-directory (substring text 0 -1) ido-enable-prefix t))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3264 ;; Use list of cached directories
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3265 (let ((re (concat (regexp-quote (substring text 0 -1)) "[^/:]*/\\'"))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3266 (dirs ido-dir-file-cache)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3267 dir b d f)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3268 (if nil ;; simple
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3269 (while dirs
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3270 (setq dir (car (car dirs))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3271 dirs (cdr dirs))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3272 (when (and (string-match re dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3273 (not (ido-ignore-item-p dir ido-ignore-directories-merge))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3274 (file-directory-p dir))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3275 (setq b (substring dir 0 -1)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3276 f (concat (file-name-nondirectory b) "/")
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3277 d (file-name-directory b)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3278 res (cons (cons f d) res))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3279 (while dirs
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3280 (setq dir (car dirs)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3281 d (car dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3282 dirs (cdr dirs))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3283 (when (not (ido-ignore-item-p d ido-ignore-directories-merge))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3284 (setq dir (cdr (cdr dir)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3285 (while dir
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3286 (setq f (car dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3287 dir (cdr dir))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3288 (if (and (string-match re f)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3289 (not (ido-ignore-item-p f ido-ignore-directories)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3290 (setq res (cons (cons f d) res)))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3291 (if (and auto (input-pending-p))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3292 (setq dirs nil
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3293 res t))))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3294 (if wide
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3295 (setq res (ido-wide-find-dirs-or-files
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3296 ido-current-directory text ido-enable-prefix nil))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3297 (let ((ido-text text)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3298 (dirs ido-work-directory-list)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3299 (must-match (and text (> (length text) 0)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3300 dir fl)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3301 (if (and auto (not (member ido-current-directory dirs)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3302 (setq dirs (cons ido-current-directory dirs)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3303 (while dirs
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3304 (setq dir (car dirs)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3305 dirs (cdr dirs))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3306 (when (and dir (stringp dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3307 (or ido-merge-ftp-work-directories
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3308 (not (ido-is-ftp-directory dir)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3309 (file-directory-p dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3310 ;; TODO. check for nonreadable and too-big.
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3311 (setq fl (if (eq ido-cur-item 'file)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3312 (ido-make-file-list-1 dir t)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3313 (ido-make-dir-list-1 dir t))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3314 (if must-match
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3315 (setq fl (ido-set-matches-1 fl)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3316 (if fl
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3317 (setq res (nconc fl res))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3318 (if (and auto (input-pending-p))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3319 (setq dirs nil
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3320 res t))))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3321 res))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3322
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3323 (defun ido-make-merged-file-list (text auto wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3324 (let (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3325 (message "Searching for `%s'...." text)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3326 (condition-case nil
64983
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3327 (if (eq t (setq res
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3328 (while-no-input
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3329 (ido-make-merged-file-list-1 text auto wide))))
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3330 (setq res 'input-pending-p))
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3331 (quit
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3332 (setq res t
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3333 ido-try-merged-list nil
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3334 ido-use-merged-list nil)))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3335 (when (and res (listp res))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3336 (setq res (ido-sort-merged-list res auto)))
46257
66e7966b0b91 (ido-make-merged-file-list): Move fully matching item to head of list.
Kim F. Storm <storm@cua.dk>
parents: 46256
diff changeset
3337 (when (and (or ido-rotate-temp ido-rotate-file-list-default)
46292
712d0161e499 (ido-make-merged-file-list): Fix last change again.
Kim F. Storm <storm@cua.dk>
parents: 46280
diff changeset
3338 (listp res)
46257
66e7966b0b91 (ido-make-merged-file-list): Move fully matching item to head of list.
Kim F. Storm <storm@cua.dk>
parents: 46256
diff changeset
3339 (> (length text) 0))
66e7966b0b91 (ido-make-merged-file-list): Move fully matching item to head of list.
Kim F. Storm <storm@cua.dk>
parents: 46256
diff changeset
3340 (let ((elt (assoc text res)))
46270
c64c46b334d7 (ido-make-merged-file-list): Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 46257
diff changeset
3341 (when (and elt (not (eq elt (car res))))
46257
66e7966b0b91 (ido-make-merged-file-list): Move fully matching item to head of list.
Kim F. Storm <storm@cua.dk>
parents: 46256
diff changeset
3342 (setq res (delq elt res))
66e7966b0b91 (ido-make-merged-file-list): Move fully matching item to head of list.
Kim F. Storm <storm@cua.dk>
parents: 46256
diff changeset
3343 (setq res (cons elt res)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3344 (message nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3345 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3346
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3347 (defun ido-make-buffer-list-1 (&optional frame visible)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3348 ;; Return list of non-ignored buffer names
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3349 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3350 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3351 (lambda (x)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3352 (let ((name (buffer-name x)))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3353 (if (not (or (ido-ignore-item-p name ido-ignore-buffers) (member name visible)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3354 name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3355 (buffer-list frame))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3356
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3357 (defun ido-make-buffer-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3358 ;; Return the current list of buffers.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3359 ;; Currently visible buffers are put at the end of the list.
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
3360 ;; The hook `ido-make-buffer-list-hook' is run after the list has been
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3361 ;; created to allow the user to further modify the order of the buffer names
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3362 ;; in this list. If DEFAULT is non-nil, and corresponds to an existing buffer,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3363 ;; it is put to the start of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3364 (let* ((ido-current-buffers (ido-get-buffers-in-frames 'current))
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3365 (ido-temp-list (ido-make-buffer-list-1 (selected-frame) ido-current-buffers)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3366 (if ido-temp-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3367 (nconc ido-temp-list ido-current-buffers)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3368 (setq ido-temp-list ido-current-buffers))
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3369 (if (and default (buffer-live-p (get-buffer default)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3370 (progn
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3371 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3372 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3373 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3374 (cons default ido-temp-list))))
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3375 (if ido-use-virtual-buffers
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3376 (ido-add-virtual-buffers-to-list))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3377 (run-hooks 'ido-make-buffer-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3378 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3379
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3380 (defvar ido-virtual-buffers nil)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3381
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3382 (defun ido-add-virtual-buffers-to-list ()
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3383 "Add recently visited files, and bookmark files, to the buffer list.
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3384 This is to make them appear as if they were \"virtual buffers\"."
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3385 ;; If no buffers matched, and virtual buffers are being used, then
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3386 ;; consult the list of past visited files, to see if we can find
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3387 ;; the file which the user might thought was still open.
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3388 (setq ido-virtual-buffers nil)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3389 (let ((head recentf-list) name)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3390 (while head
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3391 (if (and (setq name (file-name-nondirectory (car head)))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3392 (null (get-file-buffer (car head)))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3393 (not (assoc name ido-virtual-buffers))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3394 (not (ido-ignore-item-p name ido-ignore-buffers))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3395 ;;(file-exists-p (car head))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3396 )
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3397 (setq ido-virtual-buffers
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3398 (cons (cons name (car head)) ido-virtual-buffers)))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3399 (setq head (cdr head))))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3400 (when ido-virtual-buffers
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3401 (if ido-use-faces
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3402 (dolist (comp ido-virtual-buffers)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3403 (put-text-property 0 (length (car comp))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3404 'face 'ido-virtual
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3405 (car comp))))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3406 (setq ido-temp-list
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3407 (nconc ido-temp-list
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3408 (nreverse (mapcar #'car ido-virtual-buffers))))))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3409
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3410 (defun ido-make-choice-list (default)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3411 ;; Return the current list of choices.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3412 ;; If DEFAULT is non-nil, and corresponds to an element of choices,
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3413 ;; it is put to the start of the list.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3414 (let ((ido-temp-list ido-choice-list))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3415 (if default
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3416 (progn
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3417 (setq ido-temp-list
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3418 (delete default ido-temp-list))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3419 (setq ido-temp-list
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3420 (cons default ido-temp-list))))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3421 ; (run-hooks 'ido-make-choice-list-hook)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3422 ido-temp-list))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3423
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3424 (defun ido-to-end (items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3425 ;; Move the elements from ITEMS to the end of `ido-temp-list'
84873
c62cc793efc7 (ido-to-end, ido-set-matches-1): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78492
diff changeset
3426 (mapc
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3427 (lambda (elem)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3428 (setq ido-temp-list (delq elem ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3429 items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3430 (if ido-temp-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3431 (nconc ido-temp-list items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3432 (setq ido-temp-list items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3433
87110
aad891ae9148 Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents: 87046
diff changeset
3434 (declare-function tramp-tramp-file-p "tramp" (name))
86234
860a7a8e779e * progmodes/octave-mod.el (inferior-octave-send-list-and-digest):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85998
diff changeset
3435
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3436 (defun ido-file-name-all-completions-1 (dir)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3437 (cond
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
3438 ((ido-nonreadable-directory-p dir) '())
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3439 ;; do not check (ido-directory-too-big-p dir) here.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3440 ;; Caller must have done that if necessary.
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3441
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3442 ((and ido-enable-tramp-completion
86406
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3443 (or (fboundp 'tramp-completion-mode-p)
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3444 (require 'tramp nil t))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3445 (string-match "\\`/[^/]+[:@]\\'" dir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3446 ;; Strip method:user@host: part of tramp completions.
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3447 ;; Tramp completions do not include leading slash.
86406
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3448 (let* ((len (1- (length dir)))
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3449 (tramp-completion-mode t)
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3450 (compl
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3451 (or (file-name-all-completions "" dir)
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3452 ;; work around bug in ange-ftp.
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3453 ;; /ftp:user@host: => nil
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3454 ;; /ftp:user@host:./ => ok
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3455 (and
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3456 (not (string= "/ftp:" dir))
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3457 (tramp-tramp-file-p dir)
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3458 (fboundp 'tramp-ftp-file-name-p)
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3459 (funcall 'tramp-ftp-file-name-p dir)
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3460 (string-match ":\\'" dir)
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3461 (file-name-all-completions "" (concat dir "./"))))))
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3462 (if (and compl
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3463 (> (length (car compl)) len)
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3464 (string= (substring (car compl) 0 len) (substring dir 1)))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3465 (mapcar (lambda (c) (substring c len)) compl)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3466 compl)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3467 (t
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3468 (file-name-all-completions "" dir))))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3469
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3470 (defun ido-file-name-all-completions (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3471 ;; Return name of all files in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3472 ;; Uses and updates ido-dir-file-cache
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3473 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3474 ((ido-is-unc-root dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3475 (mapcar
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3476 (lambda (host)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3477 (if (string-match "/\\'" host) host (concat host "/")))
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
3478 (ido-unc-hosts t)))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3479 ((and (numberp ido-max-dir-file-cache) (> ido-max-dir-file-cache 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3480 (stringp dir) (> (length dir) 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3481 (ido-may-cache-directory dir))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3482 (let* ((cached (assoc dir ido-dir-file-cache))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3483 (ctime (nth 1 cached))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3484 (ftp (ido-is-ftp-directory dir))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3485 (unc (ido-is-unc-host dir))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3486 (attr (if (or ftp unc) nil (file-attributes dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3487 (mtime (nth 5 attr))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3488 valid)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3489 (when cached ; should we use the cached entry ?
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3490 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3491 (ftp
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3492 (setq valid (and (eq (car ctime) 'ftp)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3493 (ido-cache-ftp-valid (cdr ctime)))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3494 (unc
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3495 (setq valid (and (eq (car ctime) 'unc)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3496 (ido-cache-unc-valid (cdr ctime)))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3497 (t
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3498 (if attr
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3499 (setq valid (and (= (car ctime) (car mtime))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3500 (= (car (cdr ctime)) (car (cdr mtime))))))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3501 (unless valid
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3502 (setq ido-dir-file-cache (delq cached ido-dir-file-cache)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3503 cached nil)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3504 (unless cached
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3505 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3506 (unc
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3507 (setq mtime (cons 'unc (ido-time-stamp))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3508 ((and ftp (file-readable-p dir))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3509 (setq mtime (cons 'ftp (ido-time-stamp)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3510 (if mtime
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3511 (setq cached (cons dir (cons mtime (ido-file-name-all-completions-1 dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3512 ido-dir-file-cache (cons cached ido-dir-file-cache)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3513 (if (> (length ido-dir-file-cache) ido-max-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3514 (setcdr (nthcdr (1- ido-max-dir-file-cache) ido-dir-file-cache) nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3515 (and cached
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3516 (cdr (cdr cached)))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3517 (t
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3518 (ido-file-name-all-completions-1 dir))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3519
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3520 (defun ido-remove-cached-dir (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3521 ;; Remove dir from ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3522 (if (and ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3523 (stringp dir) (> (length dir) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3524 (let ((cached (assoc dir ido-dir-file-cache)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3525 (if cached
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3526 (setq ido-dir-file-cache (delq cached ido-dir-file-cache))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3527
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3528
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3529 (defun ido-make-file-list-1 (dir &optional merged)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3530 ;; Return list of non-ignored files in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3531 ;; If MERGED is non-nil, each file is cons'ed with DIR
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3532 (and (or (ido-is-tramp-root dir) (ido-is-unc-root dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3533 (file-directory-p dir))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3534 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3535 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3536 (lambda (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3537 (if (not (ido-ignore-item-p name ido-ignore-files t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3538 (if merged (cons name dir) name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3539 (ido-file-name-all-completions dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3540
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3541 (defun ido-make-file-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3542 ;; Return the current list of files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3543 ;; Currently visible files are put at the end of the list.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3544 ;; The hook `ido-make-file-list-hook' is run after the list has been
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3545 ;; created to allow the user to further modify the order of the file names
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3546 ;; in this list.
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3547 (let ((ido-temp-list (ido-make-file-list-1 ido-current-directory)))
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3548 (setq ido-temp-list (sort ido-temp-list
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3549 (if ido-file-extensions-order
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3550 #'ido-file-extension-lessp
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3551 #'ido-file-lessp)))
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3552 (unless (ido-is-tramp-root ido-current-directory)
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3553 (let ((default-directory ido-current-directory))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3554 (ido-to-end ;; move ftp hosts and visited files to end
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3555 (delq nil (mapcar
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
3556 (lambda (x) (if (or (and (string-match ".:\\'" x)
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
3557 (not (ido-local-file-exists-p x)))
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3558 (and (not (ido-final-slash x))
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
3559 (let (file-name-handler-alist)
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
3560 (get-file-buffer x)))) x))
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3561 ido-temp-list)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3562 (ido-to-end ;; move . files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3563 (delq nil (mapcar
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3564 (lambda (x) (if (string-equal (substring x 0 1) ".") x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3565 ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3566 (if (and default (member default ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3567 (if (or ido-rotate-temp ido-rotate-file-list-default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3568 (unless (equal default (car ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3569 (let ((l ido-temp-list) k)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3570 (while (and l (cdr l) (not (equal default (car (cdr l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3571 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3572 (setq k (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3573 (setcdr l nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3574 (nconc k ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3575 (setq ido-temp-list k)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3576 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3577 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3578 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3579 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3580 (when ido-show-dot-for-dired
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3581 (setq ido-temp-list (delete "." ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3582 (setq ido-temp-list (cons "." ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3583 (run-hooks 'ido-make-file-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3584 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3585
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3586 (defun ido-make-dir-list-1 (dir &optional merged)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3587 ;; Return list of non-ignored subdirs in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3588 ;; If MERGED is non-nil, each subdir is cons'ed with DIR
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3589 (and (or (ido-is-tramp-root dir) (file-directory-p dir))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3590 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3591 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3592 (lambda (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3593 (and (ido-final-slash name) (not (ido-ignore-item-p name ido-ignore-directories))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3594 (if merged (cons name dir) name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3595 (ido-file-name-all-completions dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3596
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3597 (defun ido-make-dir-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3598 ;; Return the current list of directories.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3599 ;; The hook `ido-make-dir-list-hook' is run after the list has been
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3600 ;; created to allow the user to further modify the order of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3601 ;; directory names in this list.
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3602 (let ((ido-temp-list (ido-make-dir-list-1 ido-current-directory)))
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3603 (setq ido-temp-list (sort ido-temp-list #'ido-file-lessp))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3604 (ido-to-end ;; move . files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3605 (delq nil (mapcar
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3606 (lambda (x) (if (string-equal (substring x 0 1) ".") x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3607 ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3608 (if (and default (member default ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3609 (if (or ido-rotate-temp ido-rotate-file-list-default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3610 (unless (equal default (car ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3611 (let ((l ido-temp-list) k)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3612 (while (and l (cdr l) (not (equal default (car (cdr l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3613 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3614 (setq k (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3615 (setcdr l nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3616 (nconc k ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3617 (setq ido-temp-list k)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3618 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3619 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3620 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3621 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3622 (setq ido-temp-list (delete "." ido-temp-list))
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3623 (unless ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3624 (setq ido-temp-list (cons "." ido-temp-list)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3625 (run-hooks 'ido-make-dir-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3626 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3627
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3628 ;; List of the files visible in the current frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3629 (defvar ido-bufs-in-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3630
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3631 (defun ido-get-buffers-in-frames (&optional current)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3632 ;; Return the list of buffers that are visible in the current frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3633 ;; If optional argument `current' is given, restrict searching to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3634 ;; current frame, rather than all frames, regardless of value of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3635 ;; `ido-all-frames'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3636 (let ((ido-bufs-in-frame nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3637 (walk-windows 'ido-get-bufname nil
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3638 (if current
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3639 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3640 ido-all-frames))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3641 ido-bufs-in-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3642
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3643 (defun ido-get-bufname (win)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3644 ;; Used by `ido-get-buffers-in-frames' to walk through all windows
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3645 (let ((buf (buffer-name (window-buffer win))))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3646 (unless (or (member buf ido-bufs-in-frame)
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3647 (minibufferp buf)
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3648 (member buf ido-ignore-item-temp-list))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3649 ;; Only add buf if it is not already in list.
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3650 ;; This prevents same buf in two different windows being
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3651 ;; put into the list twice.
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3652 (setq ido-bufs-in-frame
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3653 (cons buf ido-bufs-in-frame)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3654
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3655 ;;; FIND MATCHING ITEMS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3656
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3657 (defun ido-set-matches-1 (items &optional do-full)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3658 ;; Return list of matches in items
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3659 (let* ((case-fold-search ido-case-fold)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3660 (slash (and (not ido-enable-prefix) (ido-final-slash ido-text)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3661 (text (if slash (substring ido-text 0 -1) ido-text))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3662 (rex0 (if ido-enable-regexp text (regexp-quote text)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3663 (rexq (concat rex0 (if slash ".*/" "")))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3664 (re (if ido-enable-prefix (concat "\\`" rexq) rexq))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3665 (full-re (and do-full (not ido-enable-regexp) (not (string-match "\$\\'" rex0))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3666 (concat "\\`" rex0 (if slash "/" "") "\\'")))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3667 (suffix-re (and do-full slash
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3668 (not ido-enable-regexp) (not (string-match "\$\\'" rex0))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3669 (concat rex0 "/\\'")))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3670 (prefix-re (and full-re (not ido-enable-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3671 (concat "\\`" rexq)))
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3672 (non-prefix-dot (or (not ido-enable-dot-prefix)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3673 (not ido-process-ignore-lists)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3674 ido-enable-prefix
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3675 (= (length ido-text) 0)))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3676 full-matches suffix-matches prefix-matches matches)
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3677 (setq ido-incomplete-regexp nil)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3678 (condition-case error
84873
c62cc793efc7 (ido-to-end, ido-set-matches-1): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78492
diff changeset
3679 (mapc
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3680 (lambda (item)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3681 (let ((name (ido-name item)))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3682 (if (and (or non-prefix-dot
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3683 (if (= (aref ido-text 0) ?.)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3684 (= (aref name 0) ?.)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3685 (/= (aref name 0) ?.)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3686 (string-match re name))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3687 (cond
74926
d2cfe143b802 (ido-set-matches-1): Never put current buffer first if
Kim F. Storm <storm@cua.dk>
parents: 74654
diff changeset
3688 ((and (eq ido-cur-item 'buffer)
74930
2de62cd68677 (ido-set-matches-1): Fix last change. If default item is
Kim F. Storm <storm@cua.dk>
parents: 74926
diff changeset
3689 (or (not (stringp ido-default-item))
2de62cd68677 (ido-set-matches-1): Fix last change. If default item is
Kim F. Storm <storm@cua.dk>
parents: 74926
diff changeset
3690 (not (string= name ido-default-item)))
74926
d2cfe143b802 (ido-set-matches-1): Never put current buffer first if
Kim F. Storm <storm@cua.dk>
parents: 74654
diff changeset
3691 (string= name (buffer-name ido-entry-buffer)))
d2cfe143b802 (ido-set-matches-1): Never put current buffer first if
Kim F. Storm <storm@cua.dk>
parents: 74654
diff changeset
3692 (setq matches (cons item matches)))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3693 ((and full-re (string-match full-re name))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3694 (setq full-matches (cons item full-matches)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3695 ((and suffix-re (string-match suffix-re name))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3696 (setq suffix-matches (cons item suffix-matches)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3697 ((and prefix-re (string-match prefix-re name))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3698 (setq prefix-matches (cons item prefix-matches)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3699 (t (setq matches (cons item matches))))))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3700 t)
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3701 items)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3702 (invalid-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3703 (setq ido-incomplete-regexp t
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3704 ;; Consider the invalid regexp message internally as a
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3705 ;; special-case single match, and handle appropriately
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3706 ;; elsewhere.
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3707 matches (cdr error))))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3708 (when prefix-matches
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3709 (ido-trace "prefix match" prefix-matches)
104550
2e78f19a963d Comment.
Glenn Morris <rgm@gnu.org>
parents: 103193
diff changeset
3710 ;; Bug#2042.
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3711 (setq matches (nconc prefix-matches matches)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3712 (when suffix-matches
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3713 (ido-trace "suffix match" (list text suffix-re suffix-matches))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3714 (setq matches (nconc suffix-matches matches)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3715 (when full-matches
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3716 (ido-trace "full match" (list text full-re full-matches))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3717 (setq matches (nconc full-matches matches)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3718 (when (and (null matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3719 ido-enable-flex-matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3720 (> (length ido-text) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3721 (not ido-enable-regexp))
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3722 (setq re (mapconcat #'regexp-quote (split-string ido-text "") ".*"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3723 (if ido-enable-prefix
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3724 (setq re (concat "\\`" re)))
84873
c62cc793efc7 (ido-to-end, ido-set-matches-1): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78492
diff changeset
3725 (mapc
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3726 (lambda (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3727 (let ((name (ido-name item)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3728 (if (string-match re name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3729 (setq matches (cons item matches)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3730 items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3731 matches))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3732
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3733
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3734 (defun ido-set-matches ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3735 ;; Set `ido-matches' to the list of items matching prompt
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3736 (when ido-rescan
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3737 (setq ido-matches (ido-set-matches-1 (reverse ido-cur-list) (not ido-rotate))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3738 ido-rotate nil)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3739
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3740 (defun ido-ignore-item-p (name re-list &optional ignore-ext)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3741 ;; Return t if the buffer or file NAME should be ignored.
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3742 (or (member name ido-ignore-item-temp-list)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3743 (and
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3744 ido-process-ignore-lists re-list
65064
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3745 (save-match-data
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3746 (let ((ext-list (and ignore-ext ido-ignore-extensions
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3747 completion-ignored-extensions))
65064
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3748 (case-fold-search ido-case-fold)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3749 ignorep nextstr
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3750 (flen (length name)) slen)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3751 (while ext-list
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3752 (setq nextstr (car ext-list))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3753 (if (cond
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3754 ((stringp nextstr)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3755 (and (>= flen (setq slen (length nextstr)))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3756 (string-equal (substring name (- flen slen)) nextstr)))
72868
299c5f25649b (ido-ignore-item-p): Allow any kind of functions in ignore lists.
Kim F. Storm <storm@cua.dk>
parents: 72792
diff changeset
3757 ((functionp nextstr) (funcall nextstr name))
65064
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3758 (t nil))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3759 (setq ignorep t
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3760 ext-list nil
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3761 re-list nil)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3762 (setq ext-list (cdr ext-list))))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3763 (while re-list
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3764 (setq nextstr (car re-list))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3765 (if (cond
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3766 ((stringp nextstr) (string-match nextstr name))
72868
299c5f25649b (ido-ignore-item-p): Allow any kind of functions in ignore lists.
Kim F. Storm <storm@cua.dk>
parents: 72792
diff changeset
3767 ((functionp nextstr) (funcall nextstr name))
65064
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3768 (t nil))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3769 (setq ignorep t
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3770 re-list nil)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3771 (setq re-list (cdr re-list))))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3772 ;; return the result
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3773 (if ignorep
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3774 (setq ido-ignored-list (cons name ido-ignored-list)))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3775 ignorep)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3776
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3777 ;; Private variable used by `ido-word-matching-substring'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3778 (defvar ido-change-word-sub)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3779
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3780 (defun ido-find-common-substring (items subs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3781 ;; Return common string following SUBS in each element of ITEMS.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3782 (let (res
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3783 alist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3784 ido-change-word-sub)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3785 (setq ido-change-word-sub
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3786 (if ido-enable-regexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3787 subs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3788 (regexp-quote subs)))
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3789 (setq res (mapcar #'ido-word-matching-substring items))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3790 (setq res (delq nil res)) ;; remove any nil elements (shouldn't happen)
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3791 (setq alist (mapcar #'ido-makealist res)) ;; could use an OBARRAY
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3792
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3793 ;; try-completion returns t if there is an exact match.
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3794 (let* ((completion-ignore-case ido-case-fold)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3795 (comp (try-completion subs alist)))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3796 (if (eq comp t)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3797 subs
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3798 comp))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3799
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3800 (defun ido-word-matching-substring (word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3801 ;; Return part of WORD before 1st match to `ido-change-word-sub'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3802 ;; If `ido-change-word-sub' cannot be found in WORD, return nil.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3803 (let ((case-fold-search ido-case-fold))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3804 (let ((m (string-match ido-change-word-sub (ido-name word))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3805 (if m
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3806 (substring (ido-name word) m)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3807 ;; else no match
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3808 nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3809
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3810 (defun ido-makealist (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3811 ;; Return dotted pair (RES . 1).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3812 (cons res 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3813
105601
68686d39c93a Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105596
diff changeset
3814 (defun ido-choose-completion-string (choice &rest ignored)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3815 (when (ido-active)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3816 ;; Insert the completion into the buffer where completion was requested.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3817 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3818 (kill-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3819 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3820 ((ido-active t) ;; ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3821 (setq ido-current-directory ""
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3822 ido-text choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3823 ido-exit 'done))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3824 ((not (ido-final-slash choice))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3825 (setq ido-text choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3826 ido-exit 'done))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3827 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3828 (ido-set-current-directory ido-current-directory choice)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3829 (setq ido-exit 'refresh)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3830 (exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3831 t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3832
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3833 (defun ido-completion-help ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3834 "Show possible completions in a *File Completions* buffer."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3835 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3836 (setq ido-rescan nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3837 (let ((temp-buf (get-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3838 display-it full-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3839 (if (and (eq last-command this-command) temp-buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3840 ;; scroll buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3841 (let (win (buf (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3842 (display-buffer temp-buf nil nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3843 (set-buffer temp-buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3844 (setq win (get-buffer-window temp-buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3845 (if (pos-visible-in-window-p (point-max) win)
74652
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3846 (if (or ido-completion-buffer-all-completions
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3847 (boundp 'ido-completion-buffer-full))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3848 (set-window-start win (point-min))
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3849 (with-no-warnings
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3850 (set (make-local-variable 'ido-completion-buffer-full) t))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3851 (setq full-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3852 display-it t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3853 (scroll-other-window))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3854 (set-buffer buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3855 (setq display-it t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3856 (if display-it
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3857 (with-output-to-temp-buffer ido-completion-buffer
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3858 (let ((completion-list (sort
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3859 (cond
74652
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3860 (ido-directory-too-big
74654
a82d50e19590 (ido-toggle-ignore, ido-completion-help): Print message while
Kim F. Storm <storm@cua.dk>
parents: 74652
diff changeset
3861 (message "Reading directory...")
74652
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3862 (setq ido-directory-too-big nil
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3863 ido-ignored-list nil
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3864 ido-cur-list (ido-all-completions)
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3865 ido-rescan t)
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3866 (ido-set-matches)
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3867 (or ido-matches ido-cur-list))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3868 (ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3869 (ido-flatten-merged-list (or ido-matches ido-cur-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3870 ((or full-list ido-completion-buffer-all-completions)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3871 (ido-all-completions))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3872 (t
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3873 (copy-sequence (or ido-matches ido-cur-list))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3874 #'ido-file-lessp)))
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3875 (if (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3876 ;; XEmacs extents are put on by default, doesn't seem to be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3877 ;; any way of switching them off.
46333
a86a0859521a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46292
diff changeset
3878 ;; This obscure code avoids a byte compiler warning in Emacs.
46225
172a10dd044b Changed xemacs specific code to avoid byte compiler warning in GNU
Kim F. Storm <storm@cua.dk>
parents: 46118
diff changeset
3879 (let ((f 'display-completion-list))
172a10dd044b Changed xemacs specific code to avoid byte compiler warning in GNU
Kim F. Storm <storm@cua.dk>
parents: 46118
diff changeset
3880 (funcall f completion-list
172a10dd044b Changed xemacs specific code to avoid byte compiler warning in GNU
Kim F. Storm <storm@cua.dk>
parents: 46118
diff changeset
3881 :help-string "ido "
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3882 :activate-callback
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
3883 '(lambda (x y z) (message "Doesn't work yet, sorry!"))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3884 ;; else running Emacs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3885 ;;(add-hook 'completion-setup-hook 'completion-setup-function)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3886 (display-completion-list completion-list)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3887
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3888 (defun ido-kill-buffer-internal (buf)
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3889 "Kill buffer BUF and rebuild ido's buffer list if needed."
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3890 (if (not (kill-buffer buf))
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3891 ;; buffer couldn't be killed.
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3892 (setq ido-rescan t)
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3893 ;; else buffer was killed so remove name from list.
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3894 (setq ido-cur-list (delq buf ido-cur-list))
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3895 ;; Some packages, like uniquify.el, may rename buffers when one
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3896 ;; is killed, so we need to test this condition to avoid using
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3897 ;; an outdated list of buffer names. We don't want to always
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3898 ;; rebuild the list of buffers, as this alters the previous
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3899 ;; buffer order that the user was seeing on the prompt. However,
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3900 ;; when we rebuild the list, we try to keep the previous second
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3901 ;; buffer as the first one.
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3902 (catch 'update
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3903 (dolist (b ido-cur-list)
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3904 (unless (get-buffer b)
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3905 (setq ido-cur-list (ido-make-buffer-list (cadr ido-matches)))
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3906 (setq ido-rescan t)
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3907 (throw 'update nil))))))
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3908
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3909 ;;; KILL CURRENT BUFFER
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3910 (defun ido-kill-buffer-at-head ()
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3911 "Kill the buffer at the head of `ido-matches'.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3912 If cursor is not at the end of the user input, delete to end of input."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3913 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3914 (if (not (eobp))
77400
ba8b19b89247 (ido-kill-buffer-at-head, ido-delete-file-at-head):
Kim F. Storm <storm@cua.dk>
parents: 76795
diff changeset
3915 (delete-region (point) (line-end-position))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3916 (let ((enable-recursive-minibuffers t)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3917 (buf (ido-name (car ido-matches))))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3918 (when buf
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3919 (ido-kill-buffer-internal buf)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3920 ;; Check if buffer still exists.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3921 (if (get-buffer buf)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3922 ;; buffer couldn't be killed.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3923 (setq ido-rescan t)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3924 ;; else buffer was killed so remove name from list.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3925 (setq ido-cur-list (delq buf ido-cur-list)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3926
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3927 ;;; DELETE CURRENT FILE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3928 (defun ido-delete-file-at-head ()
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3929 "Delete the file at the head of `ido-matches'.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3930 If cursor is not at the end of the user input, delete to end of input."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3931 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3932 (if (not (eobp))
77400
ba8b19b89247 (ido-kill-buffer-at-head, ido-delete-file-at-head):
Kim F. Storm <storm@cua.dk>
parents: 76795
diff changeset
3933 (delete-region (point) (line-end-position))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3934 (let ((enable-recursive-minibuffers t)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3935 (file (ido-name (car ido-matches))))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3936 (if file
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3937 (setq file (concat ido-current-directory file)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3938 (when (and file
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3939 (file-exists-p file)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3940 (not (file-directory-p file))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3941 (file-writable-p ido-current-directory)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3942 (yes-or-no-p (concat "Delete " file "? ")))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3943 (delete-file file)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3944 ;; Check if file still exists.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3945 (if (file-exists-p file)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3946 ;; file could not be deleted
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3947 (setq ido-rescan t)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3948 ;; else file was killed so remove name from list.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3949 (setq ido-cur-list (delq (car ido-matches) ido-cur-list)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3950
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3951
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3952 ;;; VISIT CHOSEN BUFFER
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3953 (defun ido-visit-buffer (buffer method &optional record)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3954 "Switch to BUFFER according to METHOD.
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
3955 Record command in `command-history' if optional RECORD is non-nil."
72656
5d8f8bf05df4 (ido-visit-buffer): Use buffer name if buffer arg is a buffer.
Kim F. Storm <storm@cua.dk>
parents: 72488
diff changeset
3956 (if (bufferp buffer)
5d8f8bf05df4 (ido-visit-buffer): Use buffer name if buffer arg is a buffer.
Kim F. Storm <storm@cua.dk>
parents: 72488
diff changeset
3957 (setq buffer (buffer-name buffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3958 (let (win newframe)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3959 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3960 ((eq method 'kill)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3961 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3962 (ido-record-command 'kill-buffer buffer))
106901
ee670d4f8293 ido.el: Consider the possibility of buffer names changing after kill-buffer.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
3963 (ido-kill-buffer-internal buffer))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3964
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3965 ((eq method 'other-window)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3966 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3967 (ido-record-command 'switch-to-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3968 (switch-to-buffer-other-window buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3969
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3970 ((eq method 'display)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3971 (display-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3972
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3973 ((eq method 'other-frame)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3974 (switch-to-buffer-other-frame buffer)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3975 (select-frame-set-input-focus (selected-frame)))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3976
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3977 ((and (memq method '(raise-frame maybe-frame))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3978 window-system
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3979 (setq win (ido-buffer-window-other-frame buffer))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3980 (or (eq method 'raise-frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3981 (y-or-n-p "Jump to frame? ")))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3982 (setq newframe (window-frame win))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3983 (select-frame-set-input-focus newframe)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3984 (select-window win))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3985
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3986 ;; (eq method 'selected-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3987 (t
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3988 ;; No buffer in other frames...
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3989 (if record
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3990 (ido-record-command 'switch-to-buffer buffer))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3991 (switch-to-buffer buffer)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3992 ))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3993
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3994
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3995 (defun ido-buffer-window-other-frame (buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3996 ;; Return window pointer if BUFFER is visible in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3997 ;; If BUFFER is visible in the current frame, return nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3998 (let ((blist (ido-get-buffers-in-frames 'current)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3999 ;;If the buffer is visible in current frame, return nil
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
4000 (if (member buffer blist)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4001 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4002 ;; maybe in other frame or icon
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4003 (get-buffer-window buffer 0) ; better than 'visible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4004 )))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4005
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4006
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4007 ;;; ----------- IDONIZED FUNCTIONS ------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4008
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4009 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4010 (defun ido-switch-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4011 "Switch to another buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4012 The buffer is displayed according to `ido-default-buffer-method' -- the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4013 default is to show it in the same window, unless it is already visible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4014 in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4015
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4016 As you type in a string, all of the buffers matching the string are
69733
156c18d0fca4 (ido-cache-unc-host-shares-time, ido-max-work-file-list, ido-switch-buffer):
Juanma Barranquero <lekktu@gmail.com>
parents: 69542
diff changeset
4017 displayed if substring-matching is used \(default). Look at
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4018 `ido-enable-prefix' and `ido-toggle-prefix'. When you have found the
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4019 buffer you want, it can then be selected. As you type, most keys have
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
4020 their normal keybindings, except for the following: \\<ido-buffer-completion-map>
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4021
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4022 RET Select the buffer at the front of the list of matches. If the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4023 list is empty, possibly prompt to create new buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4024
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4025 \\[ido-select-text] Select the current prompt as the buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4026 If no buffer is found, prompt for a new one.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4027
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4028 \\[ido-next-match] Put the first element at the end of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4029 \\[ido-prev-match] Put the last element at the start of the list.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4030 \\[ido-complete] Complete a common suffix to the current string that
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4031 matches all buffers. If there is only one match, select that buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4032 If there is no common suffix, show a list of all matching buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4033 in a separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4034 \\[ido-edit-input] Edit input string.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4035 \\[ido-fallback-command] Fallback to non-ido version of current command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4036 \\[ido-toggle-regexp] Toggle regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4037 \\[ido-toggle-prefix] Toggle between substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4038 \\[ido-toggle-case] Toggle case-sensitive searching of buffer names.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4039 \\[ido-completion-help] Show list of matching buffers in separate window.
69738
0bfe57fe99ed (ido-report-no-match, ido-switch-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 69733
diff changeset
4040 \\[ido-enter-find-file] Drop into `ido-find-file'.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4041 \\[ido-kill-buffer-at-head] Kill buffer at head of buffer list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4042 \\[ido-toggle-ignore] Toggle ignoring buffers listed in `ido-ignore-buffers'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4043 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4044 (ido-buffer-internal ido-default-buffer-method))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4045
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4046 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4047 (defun ido-switch-buffer-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4048 "Switch to another buffer and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4049 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4050 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4051 (interactive)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4052 (ido-buffer-internal 'other-window 'switch-to-buffer-other-window))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4053
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4054 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4055 (defun ido-display-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4056 "Display a buffer in another window but don't select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4057 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4058 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4059 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4060 (ido-buffer-internal 'display 'display-buffer nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4061
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4062 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4063 (defun ido-kill-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4064 "Kill a buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4065 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4066 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4067 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4068 (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: " (buffer-name (current-buffer)) nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4069
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4070 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4071 (defun ido-insert-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4072 "Insert contents of a buffer in current buffer after point.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4073 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4074 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4075 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4076 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil nil 'ido-enter-insert-file))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4077
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4078 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4079 (defun ido-switch-buffer-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4080 "Switch to another buffer and show it in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4081 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4082 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4083 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4084 (if ido-mode
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4085 (ido-buffer-internal 'other-frame)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4086 (call-interactively 'switch-to-buffer-other-frame)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4087
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4088 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4089 (defun ido-find-file-in-dir (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4090 "Switch to another file starting from DIR."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4091 (interactive "DDir: ")
78030
109ec6cd33be (ido-find-file-in-dir): Don't signal an error for empty directories.
Juanma Barranquero <lekktu@gmail.com>
parents: 77400
diff changeset
4092 (setq dir (file-name-as-directory dir))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4093 (ido-file-internal ido-default-file-method nil dir nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4094
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4095 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4096 (defun ido-find-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4097 "Edit file with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4098 The file is displayed according to `ido-default-file-method' -- the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4099 default is to show it in the same window, unless it is already
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4100 visible in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4101
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4102 The file name is selected interactively by typing a substring. As you
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4103 type in a string, all of the filenames matching the string are displayed
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4104 if substring-matching is used \(default). Look at `ido-enable-prefix' and
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4105 `ido-toggle-prefix'. When you have found the filename you want, it can
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4106 then be selected. As you type, most keys have their normal keybindings,
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
4107 except for the following: \\<ido-file-completion-map>
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4108
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4109 RET Select the file at the front of the list of matches. If the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4110 list is empty, possibly prompt to create new file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4111
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4112 \\[ido-select-text] Select the current prompt as the buffer or file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4113 If no buffer or file is found, prompt for a new one.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4114
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4115 \\[ido-next-match] Put the first element at the end of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4116 \\[ido-prev-match] Put the last element at the start of the list.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4117 \\[ido-complete] Complete a common suffix to the current string that
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4118 matches all files. If there is only one match, select that file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4119 If there is no common suffix, show a list of all matching files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4120 in a separate window.
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
4121 \\[ido-edit-input] Edit input string (including directory).
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4122 \\[ido-prev-work-directory] or \\[ido-next-work-directory] go to previous/next directory in work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4123 \\[ido-merge-work-directories] search for file in the work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4124 \\[ido-forget-work-directory] removes current directory from the work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4125 \\[ido-prev-work-file] or \\[ido-next-work-file] cycle through the work file history.
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
4126 \\[ido-wide-find-file-or-pop-dir] and \\[ido-wide-find-dir-or-delete-dir] prompts and uses find to locate files or directories.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4127 \\[ido-make-directory] prompts for a directory to create in current directory.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4128 \\[ido-fallback-command] Fallback to non-ido version of current command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4129 \\[ido-toggle-regexp] Toggle regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4130 \\[ido-toggle-prefix] Toggle between substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4131 \\[ido-toggle-case] Toggle case-sensitive searching of file names.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4132 \\[ido-toggle-vc] Toggle version control for this file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4133 \\[ido-toggle-literal] Toggle literal reading of this file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4134 \\[ido-completion-help] Show list of matching files in separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4135 \\[ido-toggle-ignore] Toggle ignoring files listed in `ido-ignore-files'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4136
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4137 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4138 (ido-file-internal ido-default-file-method))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4139
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4140 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4141 (defun ido-find-file-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4142 "Switch to another file and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4143 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4144 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4145 (interactive)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4146 (ido-file-internal 'other-window 'find-file-other-window))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4147
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4148 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4149 (defun ido-find-alternate-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4150 "Switch to another file and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4151 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4152 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4153 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4154 (ido-file-internal 'alt-file 'find-alternate-file nil "Find alternate file: "))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4155
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4156 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4157 (defun ido-find-file-read-only ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4158 "Edit file read-only with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4159 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4160 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4161 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4162 (ido-file-internal 'read-only 'find-file-read-only nil "Find file read-only: "))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4163
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4164 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4165 (defun ido-find-file-read-only-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4166 "Edit file read-only in other window with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4167 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4168 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4169 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4170 (ido-file-internal 'read-only 'find-file-read-only-other-window nil "Find file read-only other window: "))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4171
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4172 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4173 (defun ido-find-file-read-only-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4174 "Edit file read-only in other frame with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4175 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4176 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4177 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4178 (ido-file-internal 'read-only 'find-file-read-only-other-frame nil "Find file read-only other frame: "))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4179
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4180 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4181 (defun ido-display-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4182 "Display a file in another window but don't select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4183 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4184 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4185 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4186 (ido-file-internal 'display nil nil nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4187
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4188 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4189 (defun ido-find-file-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4190 "Switch to another file and show it in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4191 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4192 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4193 (interactive)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4194 (ido-file-internal 'other-frame 'find-file-other-frame))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4195
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4196 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4197 (defun ido-write-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4198 "Write current buffer to a file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4199 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4200 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4201 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4202 (let ((ido-process-ignore-lists t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4203 (ido-work-directory-match-only nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4204 (ido-ignore-files (cons "[^/]\\'" ido-ignore-files))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4205 (ido-report-no-match nil)
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
4206 (ido-confirm-unique-completion t)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4207 (ido-auto-merge-work-directories-length -1))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4208 (ido-file-internal 'write 'write-file nil "Write file: " nil nil 'ignore)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4209
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4210 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4211 (defun ido-insert-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4212 "Insert contents of file in current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4213 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4214 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4215 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4216 (ido-file-internal 'insert 'insert-file nil "Insert file: " nil nil 'ido-enter-insert-buffer))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4217
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4218 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4219 (defun ido-dired ()
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
4220 "Call `dired' the ido way.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4221 The directory is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4222 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4223 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4224 (let ((ido-report-no-match nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4225 (ido-auto-merge-work-directories-length -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4226 (ido-file-internal 'dired 'dired nil "Dired: " 'dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4227
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4228 (defun ido-list-directory ()
73825
36f23fcd07f8 (ido-ignore-extensions, ido-show-dot-for-dired, ido-max-dir-file-cache,
Juanma Barranquero <lekktu@gmail.com>
parents: 73388
diff changeset
4229 "Call `list-directory' the ido way.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4230 The directory is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4231 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4232 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4233 (let ((ido-report-no-match nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4234 (ido-auto-merge-work-directories-length -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4235 (ido-file-internal 'list-directory 'list-directory nil "List directory: " 'dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4236
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4237 ;;; XEmacs hack for showing default buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4238
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4239 ;; The first time we enter the minibuffer, Emacs puts up the default
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4240 ;; buffer to switch to, but XEmacs doesn't -- presumably there is a
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4241 ;; subtle difference in the two versions of post-command-hook. The
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4242 ;; default is shown for both whenever we delete all of our text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4243 ;; though, indicating its just a problem the first time we enter the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4244 ;; function. To solve this, we use another entry hook for emacs to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4245 ;; show the default the first time we enter the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4246
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4247
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4248 ;;; ICOMPLETE TYPE CODE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4249
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4250 (defun ido-initiate-auto-merge (buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4251 (ido-trace "\n*merge timeout*" buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4252 (setq ido-auto-merge-timer nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4253 (when (and (buffer-live-p buffer)
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
4254 (ido-active)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4255 (boundp 'ido-eoinput) ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4256 (let ((contents (buffer-substring-no-properties (minibuffer-prompt-end) ido-eoinput)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4257 (ido-trace "request merge")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4258 (setq ido-use-merged-list 'auto
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4259 ido-text-init contents
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4260 ido-rotate-temp t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4261 ido-exit 'refresh)
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105601
diff changeset
4262 (with-current-buffer buffer
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4263 (ido-tidy))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4264 (throw 'ido contents))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4265
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4266 (defun ido-exhibit ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4267 "Post command hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4268 ;; Find matching files and display a list in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4269 ;; Copied from `icomplete-exhibit' with two changes:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4270 ;; 1. It prints a default file name when there is no text yet entered.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4271 ;; 2. It calls my completion routine rather than the standard completion.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4272
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
4273 (when (ido-active)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4274 (let ((contents (buffer-substring-no-properties (minibuffer-prompt-end) (point-max)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4275 (buffer-undo-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4276 try-single-dir-match
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4277 refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4278
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4279 (when ido-trace-enable
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4280 (ido-trace "\nexhibit" this-command)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4281 (ido-trace "dir" ido-current-directory)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4282 (ido-trace "contents" contents)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4283 (ido-trace "list" ido-cur-list)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4284 (ido-trace "matches" ido-matches)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4285 (ido-trace "rescan" ido-rescan))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4286
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4287 (save-excursion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4288 (goto-char (point-max))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4289 ;; Register the end of input, so we know where the extra stuff (match-status info) begins:
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4290 (unless (boundp 'ido-eoinput)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4291 ;; In case it got wiped out by major mode business:
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4292 (make-local-variable 'ido-eoinput))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4293 (setq ido-eoinput (point))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4294
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4295 ;; Handle explicit directory changes
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4296 (cond
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4297 ((memq ido-cur-item '(buffer list))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4298 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4299
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4300 ((= (length contents) 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4301 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4302
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4303 ((= (length contents) 1)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4304 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4305 ((and (ido-is-tramp-root) (string-equal contents "/"))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4306 (ido-set-current-directory ido-current-directory contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4307 (setq refresh t))
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
4308 ((and (ido-unc-hosts) (string-equal contents "/")
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4309 (let ((ido-enable-tramp-completion nil))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4310 (ido-is-root-directory)))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4311 (ido-set-current-directory "//")
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4312 (setq refresh t))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4313 ))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4314
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
4315 ((and (string-match (if ido-enable-tramp-completion ".[:@]\\'" ".:\\'") contents)
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
4316 (ido-is-root-directory) ;; Ange-ftp or tramp
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
4317 (not (ido-local-file-exists-p contents)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4318 (ido-set-current-directory ido-current-directory contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4319 (when (ido-is-slow-ftp-host)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4320 (setq ido-exit 'fallback)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4321 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4322 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4323
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4324 ((ido-final-slash contents) ;; xxx/
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4325 (ido-trace "final slash" contents)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4326 (cond
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4327 ((string-equal contents "~/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4328 (ido-set-current-home)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4329 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4330 ((string-equal contents "../")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4331 (ido-up-directory t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4332 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4333 ((string-equal contents "./")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4334 (setq refresh t))
73376
22f24dad9952 2006-10-15 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 73266
diff changeset
4335 ((string-match "\\`~[-_a-zA-Z0-9]+[$]?/\\'" contents)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4336 (ido-trace "new home" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4337 (ido-set-current-home contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4338 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4339 ((string-match "[$][A-Za-z0-9_]+/\\'" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4340 (let ((exp (condition-case ()
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4341 (expand-file-name
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4342 (substitute-in-file-name (substring contents 0 -1))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4343 ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4344 (error nil))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4345 (ido-trace contents exp)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4346 (when (and exp (file-directory-p exp))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4347 (ido-set-current-directory (file-name-directory exp))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4348 (setq ido-text-init (file-name-nondirectory exp))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4349 (setq refresh t))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4350 ((and (memq system-type '(windows-nt ms-dos))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4351 (string-equal (substring contents 1) ":/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4352 (ido-set-current-directory (file-name-directory contents))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4353 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4354 ((string-equal (substring contents -2 -1) "/")
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4355 (ido-set-current-directory
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4356 (if (memq system-type '(windows-nt ms-dos))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4357 (expand-file-name "/" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4358 "/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4359 (setq refresh t))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4360 ((and (or ido-directory-nonreadable ido-directory-too-big)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4361 (file-directory-p (concat ido-current-directory (file-name-directory contents))))
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
4362 (ido-set-current-directory
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4363 (concat ido-current-directory (file-name-directory contents)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4364 (setq refresh t))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4365 (t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4366 (ido-trace "try single dir")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4367 (setq try-single-dir-match t))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4368
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4369 ((and (string-equal (substring contents -2 -1) "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4370 (not (string-match "[$]" contents)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4371 (ido-set-current-directory
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4372 (cond
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4373 ((= (length contents) 2)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4374 "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4375 (ido-matches
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
4376 (concat ido-current-directory (ido-name (car ido-matches))))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4377 (t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4378 (concat ido-current-directory (substring contents 0 -1)))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4379 (setq ido-text-init (substring contents -1))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4380 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4381
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4382 ((and (not ido-use-merged-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4383 (not (ido-final-slash contents))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4384 (eq ido-try-merged-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4385 (numberp ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4386 (> ido-auto-merge-work-directories-length 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4387 (= (length contents) ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4388 (not (and ido-auto-merge-inhibit-characters-regexp
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4389 (string-match ido-auto-merge-inhibit-characters-regexp contents)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4390 (not (input-pending-p)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4391 (setq ido-use-merged-list 'auto
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4392 ido-text-init contents
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4393 ido-rotate-temp t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4394 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4395
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4396 (t nil))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4397
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4398 (when refresh
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4399 (ido-trace "refresh on /" ido-text-init)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4400 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4401 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4402
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4403 ;; Update the list of matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4404 (setq ido-text contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4405 (ido-set-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4406 (ido-trace "new " ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4407
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4408 (when (and ido-enter-matching-directory
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4409 ido-matches
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4410 (or (eq ido-enter-matching-directory 'first)
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4411 (null (cdr ido-matches)))
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
4412 (ido-final-slash (ido-name (car ido-matches)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4413 (or try-single-dir-match
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4414 (eq ido-enter-matching-directory t)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4415 (ido-trace "single match" (car ido-matches))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4416 (ido-set-current-directory
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
4417 (concat ido-current-directory (ido-name (car ido-matches))))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4418 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4419 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4420
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4421 (when (and (not ido-matches)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4422 (not ido-directory-nonreadable)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4423 (not ido-directory-too-big)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4424 ;; ido-rescan ?
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4425 ido-process-ignore-lists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4426 ido-ignored-list)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4427 (let ((ido-process-ignore-lists nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4428 (ido-rotate ido-rotate)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4429 (ido-cur-list ido-ignored-list))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4430 (ido-trace "try all" ido-ignored-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4431 (ido-set-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4432 (when ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4433 (ido-trace "found " ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4434 (setq ido-rescan t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4435 (setq ido-process-ignore-lists-inhibit t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4436 (setq ido-text-init ido-text)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4437 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4438 (exit-minibuffer)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4439
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4440 (when (and
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4441 ido-rescan
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4442 (not ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4443 (memq ido-cur-item '(file dir))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4444 (not (ido-is-root-directory))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4445 (> (length contents) 1)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4446 (not (string-match "[$]" contents))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4447 (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4448 (not ido-directory-too-big))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4449 (ido-trace "merge?")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4450 (if ido-use-merged-list
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4451 (ido-undo-merge-work-directory contents nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4452 (when (and (eq ido-try-merged-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4453 (numberp ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4454 (= ido-auto-merge-work-directories-length 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4455 (not (and ido-auto-merge-inhibit-characters-regexp
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4456 (string-match ido-auto-merge-inhibit-characters-regexp contents)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4457 (not (input-pending-p)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4458 (ido-trace "\n*start timer*")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4459 (setq ido-auto-merge-timer
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4460 (run-with-timer ido-auto-merge-delay-time nil 'ido-initiate-auto-merge (current-buffer))))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4461
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4462 (setq ido-rescan t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4463
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4464 (if (and ido-use-merged-list
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4465 ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4466 (not (string-equal (car (cdr (car ido-matches))) ido-current-directory)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4467 (progn
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4468 (ido-set-current-directory (car (cdr (car ido-matches))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4469 (setq ido-use-merged-list t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4470 ido-exit 'keep
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4471 ido-text-init ido-text)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4472 (exit-minibuffer)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4473
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4474 ;; Insert the match-status information:
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4475 (ido-set-common-completion)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4476 (let ((inf (ido-completions
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4477 contents
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4478 minibuffer-completion-table
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4479 minibuffer-completion-predicate
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4480 (not minibuffer-completion-confirm))))
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
4481 (setq ido-show-confirm-message nil)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4482 (ido-trace "inf" inf)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4483 (insert inf))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4484 ))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4485
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4486 (defun ido-completions (name candidates predicate require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4487 ;; Return the string that is displayed after the user's text.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4488 ;; Modified from `icomplete-completions'.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4489
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4490 (let* ((comps ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4491 (ind (and (consp (car comps)) (> (length (cdr (car comps))) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4492 ido-merged-indicator))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4493 first)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4494
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4495 (if (and ind ido-use-faces)
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
4496 (put-text-property 0 1 'face 'ido-indicator ind))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4497
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4498 (if (and ido-use-faces comps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4499 (let* ((fn (ido-name (car comps)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4500 (ln (length fn)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4501 (setq first (format "%s" fn))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4502 (put-text-property 0 ln 'face
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4503 (if (= (length comps) 1)
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4504 (if ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4505 'ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4506 'ido-only-match)
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
4507 'ido-first-match)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4508 first)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4509 (if ind (setq first (concat first ind)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4510 (setq comps (cons first (cdr comps)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4511
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4512 (cond ((null comps)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4513 (cond
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
4514 (ido-show-confirm-message
103193
5e04d99c2e49 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 103191
diff changeset
4515 (or (nth 10 ido-decorations) " [Confirm]"))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4516 (ido-directory-nonreadable
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4517 (or (nth 8 ido-decorations) " [Not readable]"))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4518 (ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4519 (or (nth 9 ido-decorations) " [Too big]"))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4520 (ido-report-no-match
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4521 (nth 6 ido-decorations)) ;; [No match]
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4522 (t "")))
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4523 (ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4524 (concat " " (car comps)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4525 ((null (cdr comps)) ;one match
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4526 (concat (if (if (not ido-enable-regexp)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4527 (= (length (ido-name (car comps))) (length name))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4528 ;; We can't rely on the length of the input
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4529 ;; for regexps, so explicitly check for a
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4530 ;; complete match
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4531 (string-match name (ido-name (car comps)))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4532 (string-equal (match-string 0 (ido-name (car comps)))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4533 (ido-name (car comps))))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4534 ""
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4535 ;; when there is one match, show the matching file name in full
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4536 (concat (nth 4 ido-decorations) ;; [ ... ]
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4537 (ido-name (car comps))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4538 (nth 5 ido-decorations)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4539 (if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4540 (t ;multiple matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4541 (let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4542 (alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4543 (apply
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4544 #'concat
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4545 (cdr (apply
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4546 #'nconc
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4547 (mapcar
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4548 (lambda (com)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4549 (setq com (ido-name com))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4550 (setq items (1- items))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4551 (cond
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4552 ((< items 0) ())
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4553 ((= items 0) (list (nth 3 ido-decorations))) ; " | ..."
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4554 (t
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4555 (list (or ido-separator (nth 2 ido-decorations)) ; " | "
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4556 (let ((str (substring com 0)))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4557 (if (and ido-use-faces
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4558 (not (string= str first))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4559 (ido-final-slash str))
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
4560 (put-text-property 0 (length str) 'face 'ido-subdir str))
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4561 str)))))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4562 comps))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4563
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4564 (concat
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4565 ;; put in common completion item -- what you get by pressing tab
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4566 (if (and (stringp ido-common-match-string)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4567 (> (length ido-common-match-string) (length name)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4568 (concat (nth 4 ido-decorations) ;; [ ... ]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4569 (substring ido-common-match-string (length name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4570 (nth 5 ido-decorations)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4571 ;; list all alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4572 (nth 0 ido-decorations) ;; { ... }
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4573 alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4574 (nth 1 ido-decorations)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4575
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4576 (defun ido-minibuffer-setup ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4577 "Minibuffer setup hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4578 ;; Copied from `icomplete-minibuffer-setup-hook'.
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
4579 (when (ido-active)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4580 (add-hook 'pre-command-hook 'ido-tidy nil t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4581 (add-hook 'post-command-hook 'ido-exhibit nil t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4582 (setq cua-inhibit-cua-keys t)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
4583 (when (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4584 (ido-exhibit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4585 (goto-char (point-min)))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4586 (run-hooks 'ido-minibuffer-setup-hook)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4587 (when ido-initial-position
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4588 (goto-char (+ (minibuffer-prompt-end) ido-initial-position))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4589 (setq ido-initial-position nil))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4590
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4591 (defun ido-tidy ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4592 "Pre command hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4593 ;; Remove completions display, if any, prior to new user input.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4594 ;; Copied from `icomplete-tidy'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4595
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4596 (when ido-auto-merge-timer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4597 (ido-trace "\n*cancel timer*" this-command)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4598 (cancel-timer ido-auto-merge-timer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4599 (setq ido-auto-merge-timer nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4600
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
4601 (if (ido-active)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4602 (if (and (boundp 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4603 ido-eoinput)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4604
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4605 (if (> ido-eoinput (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4606 ;; Oops, got rug pulled out from under us - reinit:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4607 (setq ido-eoinput (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4608 (let ((buffer-undo-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4609 (delete-region ido-eoinput (point-max))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4610
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4611 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4612 (make-local-variable 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4613 (setq ido-eoinput 1))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4614
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4615 (defun ido-summary-buffers-to-end ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4616 ;; Move the summaries to the end of the buffer list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4617 ;; This is an example function which can be hooked on to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4618 ;; `ido-make-buffer-list-hook'. Any buffer matching the regexps
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4619 ;; `Summary' or `output\*$'are put to the end of the list.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4620 (let ((summaries (delq nil (mapcar
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4621 (lambda (x)
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4622 (if (or
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4623 (string-match "Summary" x)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4624 (string-match "output\\*\\'" x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4625 x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4626 ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4627 (ido-to-end summaries)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4628
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4629 ;;; Helper functions for other programs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4630
55361
c1239eb451dc (ido-read-file-name): If command has ido property, don't use ido
Kim F. Storm <storm@cua.dk>
parents: 55359
diff changeset
4631 (put 'dired-do-rename 'ido 'ignore)
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4632 (put 'ibuffer-find-file 'ido 'find-file)
64409
2b7f6da0c696 (dired-other-window): Put ido property on dired-other-window.
Kim F. Storm <storm@cua.dk>
parents: 64343
diff changeset
4633 (put 'dired-other-window 'ido 'dir)
55361
c1239eb451dc (ido-read-file-name): If command has ido property, don't use ido
Kim F. Storm <storm@cua.dk>
parents: 55359
diff changeset
4634
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4635 ;;;###autoload
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4636 (defun ido-read-buffer (prompt &optional default require-match)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4637 "Ido replacement for the built-in `read-buffer'.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4638 Return the name of a buffer selected.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4639 PROMPT is the prompt to give to the user. DEFAULT if given is the default
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4640 buffer to be selected, which will go to the front of the list.
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4641 If REQUIRE-MATCH is non-nil, an existing buffer must be selected."
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4642 (let* ((ido-current-directory nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4643 (ido-directory-nonreadable nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4644 (ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4645 (ido-context-switch-command 'ignore)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4646 (buf (ido-read-internal 'buffer prompt 'ido-buffer-history default require-match)))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4647 (if (eq ido-exit 'fallback)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4648 (let ((read-buffer-function nil))
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
4649 (run-hook-with-args 'ido-before-fallback-functions 'read-buffer)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4650 (read-buffer prompt default require-match))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4651 buf)))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4652
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4653 ;;;###autoload
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4654 (defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4655 "Ido replacement for the built-in `read-file-name'.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4656 Read file name, prompting with PROMPT and completing in directory DIR.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4657 See `read-file-name' for additional parameters."
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4658 (let (filename)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4659 (cond
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4660 ((or (eq predicate 'file-directory-p)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4661 (eq (get this-command 'ido) 'dir)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4662 (memq this-command ido-read-file-name-as-directory-commands))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4663 (setq filename
63124
37a47a1de226 (ido-read-file-name): Fallback to read-file-name on C-f
Kim F. Storm <storm@cua.dk>
parents: 63066
diff changeset
4664 (ido-read-directory-name prompt dir default-filename mustmatch initial))
37a47a1de226 (ido-read-file-name): Fallback to read-file-name on C-f
Kim F. Storm <storm@cua.dk>
parents: 63066
diff changeset
4665 (if (eq ido-exit 'fallback)
37a47a1de226 (ido-read-file-name): Fallback to read-file-name on C-f
Kim F. Storm <storm@cua.dk>
parents: 63066
diff changeset
4666 (setq filename 'fallback)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4667 ((and (not (eq (get this-command 'ido) 'ignore))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4668 (not (memq this-command ido-read-file-name-non-ido))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4669 (or (null predicate) (eq predicate 'file-exists-p)))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4670 (let* (ido-saved-vc-hb
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4671 (ido-context-switch-command
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4672 (if (eq (get this-command 'ido) 'find-file) nil 'ignore))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4673 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
64343
6e19d6e25256 (ido-file-internal, ido-read-file-name, ido-read-directory-name):
Kim F. Storm <storm@cua.dk>
parents: 64341
diff changeset
4674 (minibuffer-completing-file-name t)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4675 (ido-current-directory (ido-expand-directory dir))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4676 (ido-directory-nonreadable (not (file-readable-p ido-current-directory)))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4677 (ido-directory-too-big (and (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4678 (ido-directory-too-big-p ido-current-directory)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4679 (ido-work-directory-index -1)
70797
4429856755f0 (ido-read-file-name): Bind ido-show-dot-for-dired to nil
Kim F. Storm <storm@cua.dk>
parents: 70690
diff changeset
4680 (ido-show-dot-for-dired (and ido-show-dot-for-dired
4429856755f0 (ido-read-file-name): Bind ido-show-dot-for-dired to nil
Kim F. Storm <storm@cua.dk>
parents: 70690
diff changeset
4681 (not default-filename)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4682 (ido-work-file-index -1)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4683 (ido-find-literal nil))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4684 (setq ido-exit nil)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4685 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4686 (ido-read-internal 'file prompt 'ido-file-history default-filename mustmatch initial))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4687 (cond
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4688 ((eq ido-exit 'fallback)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4689 (setq filename 'fallback))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4690 ((eq ido-exit 'dired)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4691 (setq filename ido-current-directory))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4692 (filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4693 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4694 (concat ido-current-directory filename))))))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4695 (t
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4696 (setq filename 'fallback)))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4697 (if (eq filename 'fallback)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4698 (let ((read-file-name-function nil))
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
4699 (run-hook-with-args 'ido-before-fallback-functions 'read-file-name)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4700 (read-file-name prompt dir default-filename mustmatch initial predicate))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4701 filename)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4702
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4703 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4704 (defun ido-read-directory-name (prompt &optional dir default-dirname mustmatch initial)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4705 "Ido replacement for the built-in `read-directory-name'.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4706 Read directory name, prompting with PROMPT and completing in directory DIR.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4707 See `read-directory-name' for additional parameters."
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4708 (let* (filename
64343
6e19d6e25256 (ido-file-internal, ido-read-file-name, ido-read-directory-name):
Kim F. Storm <storm@cua.dk>
parents: 64341
diff changeset
4709 (minibuffer-completing-file-name t)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4710 (ido-context-switch-command 'ignore)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4711 ido-saved-vc-hb
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4712 (ido-current-directory (ido-expand-directory dir))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4713 (ido-directory-nonreadable (not (file-readable-p ido-current-directory)))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4714 (ido-directory-too-big (and (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4715 (ido-directory-too-big-p ido-current-directory)))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4716 (ido-work-directory-index -1)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4717 (ido-work-file-index -1))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4718 (setq filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4719 (ido-read-internal 'dir prompt 'ido-file-history default-dirname mustmatch initial))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4720 (if filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4721 (if (and (stringp filename) (string-equal filename "."))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4722 ido-current-directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4723 (concat ido-current-directory filename)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4724
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4725 ;;;###autoload
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4726 (defun ido-completing-read (prompt choices &optional predicate require-match initial-input hist def)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4727 "Ido replacement for the built-in `completing-read'.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4728 Read a string in the minibuffer with ido-style completion.
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4729 PROMPT is a string to prompt with; normally it ends in a colon and a space.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4730 CHOICES is a list of strings which are the possible completions.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4731 PREDICATE is currently ignored; it is included to be compatible
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4732 with `completing-read'.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4733 If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4734 the input is (or completes to) an element of CHOICES or is null.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4735 If the input is null, `ido-completing-read' returns DEF, or an empty
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4736 string if DEF is nil, regardless of the value of REQUIRE-MATCH.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4737 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4738 with point positioned at the end.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4739 HIST, if non-nil, specifies a history list.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4740 DEF, if non-nil, is the default value."
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4741 (let ((ido-current-directory nil)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4742 (ido-directory-nonreadable nil)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4743 (ido-directory-too-big nil)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4744 (ido-context-switch-command 'ignore)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4745 (ido-choice-list choices))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4746 (ido-read-internal 'list prompt hist def require-match initial-input)))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4747
98110
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4748 (defun ido-unload-function ()
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4749 "Unload the Ido library."
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4750 (ido-mode -1)
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4751 (setq minor-mode-map-alist (assq-delete-all 'ido-mode minor-mode-map-alist))
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4752 ;; continue standard unloading
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4753 nil)
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4754
97901
44cca67de748 Move provide statement to the end of the file.
Chong Yidong <cyd@stupidchicken.com>
parents: 97248
diff changeset
4755 (provide 'ido)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4756
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
4757 ;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4758 ;;; ido.el ends here