annotate lisp/ido.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents f25651f73f70
children c00190a8c8ef
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
107786
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
325 (defvar recentf-list)
65292
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.
107787
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
779 Essentially it works as follows: Say you are visiting a file and
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
780 the buffer gets cleaned up by mignight.el. Later, you want to
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
781 switch to that buffer, but find it's no longer open. With
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
782 virtual buffers enabled, the buffer name stays in the buffer
109958
73a3403135d5 * ido.el (ido-use-virtual-buffers): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 109954
diff changeset
783 list (using the `ido-virtual' face, and always at the end), and if
107787
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
784 you select it, it opens the file back up again. This allows you
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
785 to think less about whether recently opened files are still open
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
786 or not. Most of the time you can quit Emacs, restart, and then
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
787 switch to a file buffer that was previously open as if it still
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
788 were.
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
789 This feature relies upon the `recentf' package, which will be
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
790 enabled if this variable is configured to a non-nil value."
107787
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
791 :version "24.1"
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
792 :type 'boolean
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
793 :group 'ido)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
794
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
795 (defcustom ido-use-faces t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
796 "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
797 subdirs in the alternatives."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
798 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
799 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
800
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
801 (defface ido-first-match '((t (:bold t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
802 "Face used by ido for highlighting first match."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
803 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
804
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
805 (defface ido-only-match '((((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
806 (:foreground "ForestGreen"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
807 (t (:italic t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
808 "Face used by ido for highlighting only match."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
809 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
810
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
811 (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
812 (:foreground "red1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
813 (((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
814 (:foreground "red"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
815 (t (:underline t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
816 "Face used by ido for highlighting subdirs in the alternatives."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
817 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
818
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
819 (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
820 "Face used by ido for matching virtual buffer names."
107787
ded036b5364f Minor fixes to a recent contribution to ido.el
jwiegley@gmail.com
parents: 107786
diff changeset
821 :version "24.1"
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
822 :group 'ido)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
823
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
824 (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
825 (:foreground "yellow1"
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
826 :background "red1"
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
827 :width condensed))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61180
diff changeset
828 (((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
829 (:foreground "yellow"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
830 :background "red"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
831 :width condensed))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
832 (t (:inverse-video t)))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
833 "Face used by ido for highlighting its indicators."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
834 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
835
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
836 (defface ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
837 '((t
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
838 (: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
839 "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
840 :group 'ido)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
841
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
842 (defcustom ido-make-file-list-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
843 "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
844 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
845 `ido-temp-list' which contains the current list of matching files."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
846 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
847 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
848
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
849 (defcustom ido-make-dir-list-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
850 "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
851 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
852 `ido-temp-list' which contains the current list of matching directories."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
853 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
854 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
855
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
856 (defcustom ido-make-buffer-list-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
857 "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
858 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
859 `ido-temp-list' which contains the current list of matching buffer names."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
860 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
861 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
862
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
863 (defcustom ido-rewrite-file-prompt-functions nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
864 "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
865 Each function on the list may modify the following dynamically bound
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
866 variables:
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
867 dirname - the (abbreviated) directory name
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
868 to be modified by the hook functions
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
869 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
870 prompt - the basic prompt (e.g. \"Find File: \")
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
871 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
872 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
873 prefix - either nil or a fixed prefix for the dirname
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
874
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
875 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
876 `ido-current-directory' - the unabbreviated directory name
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
877 item - equals `file' or `dir' depending on the current mode."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
878 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
879 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
880
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
881 (defvar ido-rewrite-file-prompt-rules nil
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
882 "*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
883 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
884 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
885 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
886 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
887 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
888 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
889 `ido-rewrite-file-prompt-functions'.")
46068
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 (defcustom ido-completion-buffer "*Ido Completions*"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
892 "Name of completion buffer used by ido.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
893 Set to nil to disable completion buffers popping up."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
894 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
895 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
896
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
897 (defcustom ido-completion-buffer-all-completions nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
898 "Non-nil means to show all completions in completion buffer.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
899 Otherwise, only the current list of matches is shown."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
900 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
901 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
902
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
903 (defvar ido-all-frames 'visible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
904 "*Argument to pass to `walk-windows' when finding visible files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
905 See documentation of `walk-windows' for useful values.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
906
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
907 (defcustom ido-minibuffer-setup-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 98862
diff changeset
908 "Ido-specific customization of minibuffer setup.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
909
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
910 This hook is run during minibuffer setup if `ido' is active.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
911 It is intended for use in customizing ido for interoperation
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
912 with other packages. For instance:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
913
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
914 \(add-hook 'ido-minibuffer-setup-hook
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
915 \(function
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
916 \(lambda ()
46118
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
917 \(make-local-variable 'max-mini-window-height)
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
918 \(setq max-mini-window-height 3))))
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
919
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
920 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
921 ido is running. Copied from `icomplete-minibuffer-setup-hook'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
922 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
923 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
924
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
925 (defcustom ido-save-directory-list-file (convert-standard-filename "~/.ido.last")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
926 "File in which the ido state is saved between invocations.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
927 Variables stored are: `ido-last-directory-list', `ido-work-directory-list',
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
928 `ido-work-file-list', and `ido-dir-file-cache'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
929 Must be set before enabling ido mode."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
930 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
931 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
932
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
933 (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
934 "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
935 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
936 the directory using `ido-read-directory-name'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
937 :type '(repeat symbol)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
938 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
939
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
940 (defcustom ido-read-file-name-non-ido '()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
941 "List of commands which shall not read file names the ido way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
942 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
943 the file name using normal `read-file-name' style."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
944 :type '(repeat symbol)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
945 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
946
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
947 (defcustom ido-before-fallback-functions '()
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
948 "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
949 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
950 :type 'hook
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
951 :group 'ido)
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
952
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
953 ;;; Internal Variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
954
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
955 ;; Persistent variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
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-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
958 "Currently active keymap for ido commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
959
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
960 (defvar ido-common-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
961 "Keymap for all ido commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
962
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
963 (defvar ido-file-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
964 "Keymap for ido file commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
965
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
966 (defvar ido-file-dir-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
967 "Keymap for ido file and directory commands.")
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
968
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
969 (defvar ido-buffer-completion-map nil
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
970 "Keymap for ido buffer commands.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
971
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
972 (defvar ido-file-history nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
973 "History of files selected using `ido-find-file'.")
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-buffer-history nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
976 "History of buffers selected using `ido-switch-buffer'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
977
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
978 (defvar ido-last-directory-list nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
979 "List of last selected directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
980 See `ido-enable-last-directory-history' for details.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
981
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
982 (defvar ido-work-directory-list nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
983 "List of actual working directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
984 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
985 file is opened with `ido-find-file' and family.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
986
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
987 (defvar ido-work-file-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
988 "List of actual work file names.
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
989 Opening a file with `ido-find-file' and similar functions
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
990 inserts the current file name (relative to its containing directory)
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
991 at the front of this list.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
992
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
993 (defvar ido-dir-file-cache nil
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
994 "List of `file-name-all-completions' results.
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
995 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
996
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
997 (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
998 "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
999 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
1000 Should never be set permanently.")
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1001
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1002 ;; Temporary storage
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1003
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1004 (defvar ido-eoinput 1
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1005 "Point where minibuffer input ends and completion info begins.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1006 Copied from `icomplete-eoinput'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1007 (make-variable-buffer-local 'ido-eoinput)
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-common-match-string nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1010 "Stores the string that is common to all matching files.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1011
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1012 (defvar ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1013 "Non-nil means we need to regenerate the list of matching items.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1014
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1015 (defvar ido-rotate nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1016 "Non-nil means we are rotating list of matches.")
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-text nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1019 "Stores the users string as it is typed in.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1020
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1021 (defvar ido-text-init nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1022 "The initial string for the users string it is typed in.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1023
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1024 (defvar ido-input-stack nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1025 "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
1026
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1027 (defvar ido-matches nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1028 "List of files currently matching `ido-text'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1029
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1030 (defvar ido-report-no-match t
69738
0bfe57fe99ed (ido-report-no-match, ido-switch-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 69733
diff changeset
1031 "Report [No Match] when no completions matches `ido-text'.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1032
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1033 (defvar ido-exit nil
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1034 "Flag to monitor how `ido-find-file' exits.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1035 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
1036 selected.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1037
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1038 (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
1039 "Current directory for `ido-find-file'.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1040
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1041 (defvar ido-auto-merge-timer nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1042 "Delay timer for auto merge.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1043
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1044 (defvar ido-use-mycompletion-depth 0
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1045 "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
1046 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
1047 so that it doesn't interfere with other minibuffer usage.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1048
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
1049 (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
1050 "Non-nil if an incomplete regexp is entered.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1051
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1052 (defvar ido-initial-position nil
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1053 "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
1054 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
1055
107786
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
1056 (defvar ido-virtual-buffers nil
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
1057 "List of virtual buffers, that is, past visited files.
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
1058 This is a copy of `recentf-list', pared down and with faces applied.
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
1059 Only used if `ido-use-virtual-buffers' is non-nil.")
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
1060
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1061 ;;; Variables with dynamic bindings.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1062 ;;; Declared here to keep the byte compiler quiet.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1063
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1064 ;; Stores the current ido item type ('file, 'dir, 'buffer, or 'list).
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1065 (defvar ido-cur-item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1066
74930
2de62cd68677 (ido-set-matches-1): Fix last change. If default item is
Kim F. Storm <storm@cua.dk>
parents: 74926
diff changeset
1067 ;;; 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
1068 (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
1069
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1070 ;; Stores the current list of items that will be searched through.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1071 ;; The list is ordered, so that the most interesting item comes first,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1072 ;; although by default, the files visible in the current frame are put
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
1073 ;; at the end of the list. Created by `ido-make-item-list'.
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
1074 (defvar ido-cur-list)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1075
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1076 ;; Stores the choice list for ido-completing-read
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
1077 (defvar ido-choice-list)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1078
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1079 ;; Stores the list of items which are ignored when building
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1080 ;; `ido-cur-list'. It is in no specific order.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1081 (defvar ido-ignored-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1082
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1083 ;; 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
1084 (defvar ido-directory-nonreadable)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1085
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1086 ;; 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
1087 (defvar ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1088
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1089 ;; Keep current item list if non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1090 (defvar ido-keep-item-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1091
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1092 ;; Process ido-ignore-* lists.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1093 (defvar ido-process-ignore-lists)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1094
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1095 ;; Don't process ido-ignore- lists once.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1096 (defvar ido-process-ignore-lists-inhibit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1097
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1098 ;; Buffer from which ido was entered.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1099 (defvar ido-entry-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1100
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1101 ;; Non-nil if matching file must be selected.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1102 (defvar ido-require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1103
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
1104 ;; 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
1105 (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
1106
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1107 ;; Stores a temporary version of the file list being created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1108 (defvar ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1109
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1110 ;; Non-nil if default list element should be rotated into place.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1111 (defvar ido-rotate-temp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1112
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1113 ;; Stores current index in ido-work-directory-list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1114 (defvar ido-work-directory-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1115
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1116 ;; Stores current index in ido-work-file-list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1117 (defvar ido-work-file-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1118
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1119 ;; Set when merged work directory list is in use.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1120 (defvar ido-use-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1121
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1122 ;; Set when merged work directory list not yet built.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1123 (defvar ido-try-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1124
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1125 ;; Saved state prior to last work directory merge.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1126 ;; Value is a list (ido-text dir cur-list ignored-list matches).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1127 (defvar ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1128
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1129 ;; 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
1130 (defvar ido-saved-vc-hb)
46068
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 ;; Stores temporary state of literal find file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1133 (defvar ido-find-literal)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1134
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1135 ;; 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
1136 (defvar ido-context-switch-command)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1137
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1138 ;;; FUNCTIONS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1139
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1140 (defun ido-active (&optional merge)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1141 (if merge
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1142 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
1143 (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
1144 (or (featurep 'xemacs)
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
1145 (= ido-use-mycompletion-depth (minibuffer-depth))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1146
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1147 (defvar ido-trace-enable nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1148
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1149 (defun ido-trace (p &optional s retval)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1150 (if ido-trace-enable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1151 (let ((b (get-buffer-create " *IDO Trace*"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1152 (deactivate-mark deactivate-mark))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1153 (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1154 (save-restriction
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1155 (set-buffer b)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1156 (insert p ": " (if (stringp s) s (format "%S" s)) "\n")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1157 retval)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1158
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1159 (defun ido-toggle-trace (arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1160 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1161 (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
1162 (if ido-trace-enable
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1163 (message "IDO trace on"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1164 (let ((b (get-buffer " *IDO Trace*")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1165 (if b
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1166 (if ido-trace-enable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1167 (kill-buffer b)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1168 (pop-to-buffer b t t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1169 (setq truncate-lines t)))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1170
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
1171 (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
1172 "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
1173 (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
1174 (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
1175
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1176 (defun ido-unc-hosts (&optional query)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1177 "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
1178 (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
1179 (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
1180 ((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
1181 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
1182 ((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
1183 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
1184 ((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
1185 (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
1186 (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
1187 (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
1188 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
1189 (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
1190 (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
1191 (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
1192 (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
1193 (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
1194 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
1195 (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
1196 (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
1197 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
1198 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
1199 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
1200 (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
1201 (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
1202 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
1203 (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
1204 (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
1205 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
1206 (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
1207 (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
1208 (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
1209 (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
1210 (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
1211 hosts))
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1212
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1213 (defun ido-unc-hosts-net-view ()
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1214 "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
1215 (let (hosts)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1216 (with-temp-buffer
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1217 (shell-command "net view" t)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1218 (goto-char (point-min))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1219 (while (re-search-forward "^\\\\\\\\\\([[:graph:]]+\\)" nil t)
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1220 (setq hosts (cons (match-string 1) hosts))))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1221 hosts))
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
1222
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1223 (defun ido-is-tramp-root (&optional dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1224 (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
1225 (string-match "\\`/[^/]+[@:]\\'"
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1226 (or dir ido-current-directory))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1227
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1228 (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
1229 (and (ido-unc-hosts)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1230 (string-equal "//"
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1231 (or dir ido-current-directory))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1232
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1233 (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
1234 (and (ido-unc-hosts)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1235 (string-match "\\`//[^/]+/\\'"
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1236 (or dir ido-current-directory))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1237
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1238 (defun ido-is-root-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1239 (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
1240 (or
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1241 (string-equal "/" dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1242 (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
1243 (string-match "\\`[a-zA-Z]:[/\\]\\'" dir))
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 (ido-is-tramp-root dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1246 (string-match "\\`/[^:/][^:/]+:\\'" dir))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1247
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1248 (defun ido-is-ftp-directory (&optional dir)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1249 (string-match
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1250 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1251 "\\`/[^/:][^/:]+:" ;; 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
1252 "\\`/[^/:][^/:]+:/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1253 (or dir ido-current-directory)))
46068
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-is-slow-ftp-host (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1256 (and (or ido-slow-ftp-hosts ido-slow-ftp-host-regexps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1257 (setq dir (or dir ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1258 ;; (featurep 'ange-ftp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1259 ;; (ange-ftp-ftp-name dir)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1260 (string-match
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1261 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1262 "\\`/\\([^/]+[@:]\\)*\\([^@/:][^@/:]+\\):"
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1263 "\\`/\\([^/:]*@\\)?\\([^@/:][^@/:]+\\):/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1264 dir)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1265 (let ((host (substring dir (match-beginning 2) (match-end 2))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1266 (or (member host ido-slow-ftp-hosts)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1267 (let ((re ido-slow-ftp-host-regexps))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1268 (while (and re (not (string-match (car re) host)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1269 (setq re (cdr re)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1270 re)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1271
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1272 (defun ido-time-stamp (&optional time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1273 ;; Time is a floating point number (fractions of 1 hour)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1274 (setq time (or time (current-time)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1275 (/ (+ (* (car time) 65536.0) (car (cdr time))) 3600.0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1276
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1277 (defun ido-cache-ftp-valid (&optional time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1278 (and (numberp ido-cache-ftp-work-directory-time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1279 (> ido-cache-ftp-work-directory-time 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1280 (or (not time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1281 (< (- (ido-time-stamp) time) ido-cache-ftp-work-directory-time))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1282
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1283 (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
1284 (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
1285 (> 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
1286 (or (not time)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1287 (< (- (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
1288
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1289 (defun ido-may-cache-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1290 (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
1291 (cond
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1292 ((ido-directory-too-big-p dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1293 nil)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1294 ((and (ido-is-root-directory dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1295 (or ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1296 (memq system-type '(windows-nt ms-dos))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1297 nil)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1298 ((ido-is-unc-host dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1299 (ido-cache-unc-valid))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1300 ((ido-is-ftp-directory dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1301 (ido-cache-ftp-valid))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1302 (t t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1303
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1304 (defun ido-pp (list &optional sep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1305 (let ((print-level nil) (eval-expression-print-level nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1306 (print-length nil) (eval-expression-print-length nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1307 (insert "\n;; ----- " (symbol-name list) " -----\n(\n ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1308 (setq list (symbol-value list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1309 (while list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1310 (let* ((elt (car list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1311 (s (if (consp elt) (car elt) elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1312 (if (and (stringp s) (= (length s) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1313 (setq s nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1314 (if s
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1315 (prin1 elt (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1316 (if (and (setq list (cdr list)) s)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1317 (insert (or sep "\n ")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1318 (insert "\n)\n")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1319
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1320 (defun ido-save-history ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1321 "Save ido history and cache information between sessions."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1322 (interactive)
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1323 (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
1324 (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
1325 (version-control 'never))
69156
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1326 (unwind-protect
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1327 (with-current-buffer buf
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1328 (erase-buffer)
87046
9c5b08ec6fce (ido-save-history): Set the `coding' local
Juanma Barranquero <lekktu@gmail.com>
parents: 86406
diff changeset
1329 (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
1330 (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
1331 (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
1332 (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
1333 (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
1334 (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
1335 (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
1336 (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
1337 (insert "\n;; ----- ido-unc-hosts-cache -----\nt\n"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1338 (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
1339 (kill-buffer buf)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1340
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1341 (defun ido-load-history (&optional arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1342 "Load ido history and cache information from previous session.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1343 With prefix argument, reload history unconditionally."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1344 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1345 (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
1346 (let ((file (expand-file-name ido-save-directory-list-file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1347 buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1348 (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
1349 (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
1350 (unwind-protect
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1351 (with-current-buffer buf
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1352 (erase-buffer)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1353 (insert-file-contents file)
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1354 (condition-case nil
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1355 (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
1356 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
1357 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
1358 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
1359 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
1360 (error nil)))
e14bc51fc1eb (ido-save-history, ido-load-history): Simplify. Don't
Kim F. Storm <storm@cua.dk>
parents: 68804
diff changeset
1361 (kill-buffer buf)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1362 (ido-wash-history))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1363
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1364 (defun ido-wash-history ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1365 "Clean-up ido history and cache information.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1366 Removes badly formatted data and ignored directories."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1367 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1368 ;; Check format of each of our lists, discard bogus elements
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1369 (setq ido-last-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1370 (and (listp ido-last-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1371 (let ((l ido-last-directory-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1372 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1373 (if (and (consp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1374 (stringp (car (car l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1375 (stringp (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1376 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1377 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1378 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1379 (setq ido-work-directory-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1380 (and (listp ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1381 (let ((l ido-work-directory-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1382 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1383 (if (and (stringp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1384 (or ido-record-ftp-work-directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1385 (not (ido-is-ftp-directory (car l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1386 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1387 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1388 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1389 (setq ido-work-file-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1390 (and (listp ido-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1391 (let ((l ido-work-file-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1392 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1393 (if (stringp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1394 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1395 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1396 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1397 (setq ido-dir-file-cache
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1398 (and (listp ido-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1399 (let ((l ido-dir-file-cache) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1400 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1401 (if (and (listp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1402 (> (length (car l)) 2)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1403 (let ((dir (car (car l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1404 (time (car (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1405 (files (cdr (cdr (car l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1406 (and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1407 (stringp dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1408 (consp time)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1409 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1410 ((integerp (car time))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1411 (and (/= (car time) 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1412 (integerp (car (cdr time)))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1413 (/= (car (cdr time)) 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1414 (ido-may-cache-directory dir)))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1415 ((eq (car time) 'ftp)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1416 (and (numberp (cdr time))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1417 (ido-is-ftp-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1418 (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
1419 ((eq (car time) 'unc)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1420 (and (numberp (cdr time))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1421 (ido-is-unc-host dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1422 (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
1423 (t nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1424 (let ((s files) (ok t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1425 (while s
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1426 (if (stringp (car s))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1427 (setq s (cdr s))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1428 (setq s nil ok nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1429 ok))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1430 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1431 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1432 (nreverse r))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1433
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1434 ;; Remove ignored directories from work directory list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1435 ;; according to ido-work-directory-list-ignore-regexps
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1436 (if ido-work-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1437 (let ((dirs (reverse ido-work-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1438 (setq ido-work-directory-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1439 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1440 (ido-record-work-directory (car dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1441 (setq dirs (cdr dirs)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1442 ;; Get rid of text properties
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1443 (let ((l ido-last-directory-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1444 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1445 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1446 (set-text-properties 0 (length (car e)) nil (car e))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1447 (set-text-properties 0 (length (cdr e)) nil (cdr e))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1448 (let ((l ido-work-directory-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1449 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1450 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1451 (set-text-properties 0 (length e) nil e)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1452 (let ((l ido-work-file-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1453 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1454 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1455 (set-text-properties 0 (length e) nil e)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1456 (let ((l ido-dir-file-cache) e d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1457 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1458 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1459 (if (listp e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1460 (while e
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1461 (setq d (car e) e (cdr e))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1462 (if (not (consp d))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1463 (set-text-properties 0 (length d) nil d)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1464
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1465
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1466 (defun ido-kill-emacs-hook ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1467 ;; ido kill emacs hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1468 (ido-save-history))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1469
105596
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1470 (define-minor-mode ido-everywhere
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1471 "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
1472 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
1473 :global t
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1474 :group 'ido
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1475 (when (get 'ido-everywhere 'file)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1476 (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
1477 (put 'ido-everywhere 'file nil))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1478 (when (get 'ido-everywhere 'buffer)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1479 (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
1480 (put 'ido-everywhere 'buffer nil))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1481 (when ido-everywhere
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1482 (when (memq ido-mode '(both file))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1483 (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
1484 (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
1485 (when (memq ido-mode '(both buffer))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1486 (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
1487 (setq read-buffer-function 'ido-read-buffer))))
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1488
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1489 (defvar ido-minor-mode-map-entry nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1490
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1491 ;;;###autoload
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1492 (defun ido-mode (&optional arg)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1493 "Toggle ido speed-ups on or off.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1494 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
1495 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
1496 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
1497 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
1498 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
1499 if it equals 'buffers, remap only commands for buffer switching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1500 This function also adds a hook to the minibuffer."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1501 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1502 (setq ido-mode
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1503 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1504 ((null arg) (if ido-mode nil 'both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1505 ((eq arg t) 'both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1506 ((eq arg 'files) 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1507 ((eq arg 'buffers) 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1508 ((memq arg '(file buffer both)) arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1509 ((> (prefix-numeric-value arg) 0) 'both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1510 (t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1511
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1512 (ido-everywhere (if ido-everywhere 1 -1))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1513 (when ido-mode
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1514 (ido-init-completion-maps))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1515
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1516 (when ido-mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1517 (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1518 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1519 (ido-load-history)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1520
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1521 (add-hook 'kill-emacs-hook 'ido-kill-emacs-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1522
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1523 (let ((map (make-sparse-keymap)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1524 (when (memq ido-mode '(file both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1525 (define-key map [remap find-file] 'ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1526 (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
1527 (define-key map [remap find-alternate-file] 'ido-find-alternate-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1528 (define-key map [remap write-file] 'ido-write-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1529 (define-key map [remap insert-file] 'ido-insert-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1530 (define-key map [remap list-directory] 'ido-list-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1531 (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
1532 (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
1533 'ido-find-file-other-window)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1534 (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
1535 'ido-find-file-read-only-other-window)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1536 (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
1537 'ido-find-file-other-frame)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1538 (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
1539 'ido-find-file-read-only-other-frame))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1540
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1541 (when (memq ido-mode '(buffer both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1542 (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
1543 (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
1544 'ido-switch-buffer-other-window)
88a9e2cad33e (ido-everywhere): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104550
diff changeset
1545 (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
1546 'ido-switch-buffer-other-frame)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1547 (define-key map [remap insert-buffer] 'ido-insert-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1548 (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
1549 (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
1550
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1551 (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
1552 (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
1553 (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
1554 (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
1555
b2098130915f (ido-mode): Add toggle notification.
Chong Yidong <cyd@stupidchicken.com>
parents: 96376
diff changeset
1556 (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
1557
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1558
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1559 ;;; IDO KEYMAP
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1560 (defun ido-init-completion-maps ()
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1561 "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
1562
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1563 ;; Common map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1564 (let ((map (make-sparse-keymap)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1565 (define-key map "\C-a" 'ido-toggle-ignore)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1566 (define-key map "\C-c" 'ido-toggle-case)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1567 (define-key map "\C-e" 'ido-edit-input)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1568 (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
1569 (define-key map " " 'ido-complete-space)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1570 (define-key map "\C-j" 'ido-select-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1571 (define-key map "\C-m" 'ido-exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1572 (define-key map "\C-p" 'ido-toggle-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1573 (define-key map "\C-r" 'ido-prev-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1574 (define-key map "\C-s" 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1575 (define-key map "\C-t" 'ido-toggle-regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1576 (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
1577 (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
1578 (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
1579 (define-key map [(control ?@)] 'ido-restrict-to-matches)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1580 (define-key map [right] 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1581 (define-key map [left] 'ido-prev-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1582 (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
1583 ;; Magic commands.
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
1584 (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
1585 (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
1586 (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
1587 (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
1588 (setq ido-common-completion-map map))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1589
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1590 ;; File and directory map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1591 (let ((map (make-sparse-keymap)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1592 (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
1593 (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
1594 (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
1595 (define-key map [down] 'ido-next-match-dir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1596 (define-key map [up] 'ido-prev-match-dir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1597 (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
1598 (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
1599 (define-key map [backspace] 'ido-delete-backward-updir)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1600 (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
1601 (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
1602 (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
1603
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1604 (define-key map [(control backspace)] 'ido-up-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1605 (define-key map "\C-l" 'ido-reread-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1606 (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
1607 (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
1608 (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
1609 (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
1610 (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
1611 (define-key map [(meta ?m)] 'ido-make-directory)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1612 (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
1613 (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
1614 (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
1615 (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
1616 (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
1617 (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
1618 (setq ido-file-dir-completion-map map))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1619
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1620 ;; File only map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1621 (let ((map (make-sparse-keymap)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1622 (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
1623 (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
1624 (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
1625 (define-key map [(meta ?l)] 'ido-toggle-literal)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1626 (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
1627 (setq ido-file-completion-map map))
67141
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 ;; Buffer map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1630 (let ((map (make-sparse-keymap)))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1631 (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
1632 (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
1633 (define-key map "\C-k" 'ido-kill-buffer-at-head)
108022
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
1634 (define-key map "\C-o" 'ido-toggle-virtual-buffers)
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1635 (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
1636 (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
1637
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1638
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1639 (defun ido-setup-completion-map ()
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1640 "Set up the keymap for `ido'."
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1641
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1642 ;; 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
1643 (let ((map (make-sparse-keymap))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1644 (viper-p (if (boundp 'viper-mode) viper-mode)))
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 (when viper-p
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1647 (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
1648
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1649 (cond
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1650 ((memq ido-cur-item '(file dir))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1651 (when ido-context-switch-command
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1652 (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
1653 (define-key map "\C-x\C-d" 'ignore))
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1654 (when viper-p
49614
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1655 (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
1656 (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
1657 (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
1658 (set-keymap-parent map
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1659 (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
1660 ido-file-completion-map
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1661 ido-file-dir-completion-map)))
67141
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1662
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1663 ((eq ido-cur-item 'buffer)
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1664 (when ido-context-switch-command
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1665 (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
1666 (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
1667
bb428fcd0e86 (ido-mode-map): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66212
diff changeset
1668 (t
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1669 (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
1670
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1671 (setq ido-completion-map map)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1672
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1673 (defun ido-final-slash (dir &optional fix-it)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1674 ;; return DIR if DIR has final slash.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1675 ;; else if FIX-IT is non-nil, return DIR/
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1676 ;; else return nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1677 (setq dir (ido-name dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1678 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1679 ((string-match "/\\'" dir) dir)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1680 ((ido-is-tramp-root dir) dir)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1681 (fix-it (concat dir "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1682 (t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1683
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1684 (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
1685 ;; 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
1686 (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
1687 (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
1688 (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
1689 s)))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1690
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1691 (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
1692 ;; 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
1693 ;; 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
1694 ;; 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
1695 (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
1696 (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
1697 (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
1698 (file-directory-p dir)
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1699 (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
1700
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1701 (defun ido-directory-too-big-p (dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1702 ;; 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
1703 ;; 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
1704 ;; 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
1705 (let ((ido-enable-tramp-completion nil))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1706 (and (numberp ido-max-directory-size)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1707 (ido-final-slash dir)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1708 (not (ido-is-unc-host dir))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1709 (file-directory-p dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1710 (> (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
1711
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1712 (defun ido-set-current-directory (dir &optional subdir no-merge)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1713 ;; 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
1714 (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
1715 (string-match "\\`/[^/]*@\\'" dir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1716 (setq dir (ido-final-slash dir t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1717 (setq ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1718 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
1719 (when subdir
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1720 (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
1721 (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
1722 (string-match "\\`/[^/]*@\\'" dir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
1723 (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
1724 (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
1725 (kill-buffer ido-completion-buffer))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1726 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1727 ((equal dir ido-current-directory)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1728 nil)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1729 ((ido-is-unc-root dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1730 (ido-trace "unc" dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1731 (setq ido-current-directory dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1732 (setq ido-directory-nonreadable nil)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1733 (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
1734 t)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
1735 (t
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1736 (ido-trace "cd" dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1737 (setq ido-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1738 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1739 (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
1740 (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
1741 (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
1742 (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
1743 t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1744
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1745 (defun ido-set-current-home (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1746 ;; Set ido's current directory to user's home directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1747 (ido-set-current-directory (expand-file-name (or dir "~/"))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1748
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1749 (defun ido-record-command (command arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1750 ;; Add (command arg) to command-history if ido-record-commands is t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1751 (if ido-record-commands
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1752 (let ((cmd (list command arg)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1753 (if (or (not command-history)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1754 (not (equal cmd (car command-history))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1755 (setq command-history (cons cmd command-history))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1756
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1757 (defun ido-make-prompt (item prompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1758 ;; Make the prompt for ido-read-internal
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1759 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1760 ((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
1761 (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
1762 (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
1763 (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
1764 ido-max-file-prompt-width))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1765 (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
1766 (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
1767 (prefix nil)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1768 (rule ido-rewrite-file-prompt-rules))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1769 (let ((case-fold-search nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1770 (while rule
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1771 (if (and (consp (car rule))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1772 (string-match (car (car rule)) dirname))
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1773 (setq dirname
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1774 (if (stringp (cdr (car rule)))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1775 (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
1776 (funcall (cdr (car rule)) dirname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1777 (setq rule (cdr rule))))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1778 (run-hooks 'ido-rewrite-file-prompt-functions)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1779 (concat prompt
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1780 ; (if ido-process-ignore-lists "" "&")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1781 (or literal "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1782 (or vc-off "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1783 (or prefix "")
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1784 (let ((l (length dirname)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1785 (if (and max-width (> max-width 0) (> l max-width))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1786 (let* ((s (substring dirname (- max-width)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1787 (i (string-match "/" s)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1788 (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
1789 dirname)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1790 (t prompt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1791
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1792 ;; Here is very briefly how ido-find-file works:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1793 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1794 ;; (ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1795 ;; (ido-file-internal method)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1796 ;; set ido-current-directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1797 ;; (ido-read-internal 'file ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1798 ;; (while ...
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1799 ;; (ido-make-item-list ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1800 ;; (ido-set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1801 ;; (completing-read ... ido-text-init ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1802 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1803 ;; ... here user is allowed to type characters and commands
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1804 ;; a command may set ido-exit and call (exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1805 ;; to make ido-read-internal do advanced tasks (or return)
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 ;; ... ido-tidy and ido-exhibit are pre- and post-hooks
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1808 ;; which are run before and after each user command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1809 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1810 ;; return value from completing-read is stored in ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1811 ;; - ido-exit may cause further actions to be taken:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1812 ;; 'refresh - repeat loop (make-item-list, set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1813 ;; 'edit - edit the prompt string, then repeat loop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1814 ;; 'keep - repeat loop but don't (re)make-item-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1815 ;; 'updir - go up one directory, repeat loop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1816 ;; else set ido-selected based on ido-final-text,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1817 ;; optionally update ido-current-directory and repeat loop, or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1818 ;; exit with the return value of ido-selected (file name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1819 ;; selected file name is returned from ido-read-internal,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1820 ;; ido-exit and method determines what action is taken
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1821 ;; 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
1822 ;; the relevant function is called (find-file, write-file, etc).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1823
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1824 (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
1825 "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
1826 Return the name of a buffer or file selected.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1827 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
1828 DEFAULT if given is the default item to start with.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1829 If REQUIRE-MATCH is non-nil, an existing file must be selected.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1830 If INITIAL is non-nil, it specifies the initial input string."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1831 (let
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1832 ((ido-cur-item item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1833 (ido-entry-buffer (current-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1834 (ido-process-ignore-lists t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1835 (ido-process-ignore-lists-inhibit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1836 (ido-set-default-item t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1837 ido-default-item
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1838 ido-selected
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1839 ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1840 (done nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1841 (icomplete-mode nil) ;; prevent icomplete starting up
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1842 ;; Exported dynamic variables:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1843 ido-cur-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1844 ido-ignored-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1845 (ido-rotate-temp nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1846 (ido-keep-item-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1847 (ido-use-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1848 (ido-try-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1849 (ido-pre-merge-state nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1850 (ido-case-fold ido-case-fold)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1851 (ido-enable-prefix ido-enable-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1852 (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
1853 (ido-show-confirm-message nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1854 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1855
67362
ca155a6d12ad (ido-completion-map): Renamed from ido-mode-map.
Kim F. Storm <storm@cua.dk>
parents: 67141
diff changeset
1856 (ido-setup-completion-map)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1857 (setq ido-text-init initial)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1858 (setq ido-input-stack nil)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1859
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1860 (run-hooks 'ido-setup-hook)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
1861
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1862 (while (not done)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1863 (ido-trace "\n_LOOP_" ido-text-init)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1864 (setq ido-exit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1865 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1866 (setq ido-rotate nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1867 (setq ido-text "")
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1868 (when ido-set-default-item
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1869 (setq ido-default-item
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1870 (cond
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1871 ((eq item 'buffer)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1872 (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
1873 ((stringp default)
8fd6ecfbe6ea (ido-read-internal): Use only nondirectory part of default item.
Kim F. Storm <storm@cua.dk>
parents: 69817
diff changeset
1874 (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
1875 (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
1876 default))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1877 ((eq item 'file)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1878 (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
1879 (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
1880 (and d (cdr d)))))))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1881 (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
1882 (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
1883 (ido-trace "new default" ido-default-item)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1884 (if ido-default-item
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
1885 (setq ido-initial-position 0))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1886 (setq ido-set-default-item nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1887
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1888 (if ido-process-ignore-lists-inhibit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1889 (setq ido-process-ignore-lists nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1890
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1891 (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
1892 (let ((olist ido-cur-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1893 (oign ido-ignored-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1894 (omat ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1895 (l (ido-make-merged-file-list ido-text-init
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1896 (eq ido-use-merged-list 'auto)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1897 (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
1898 (ido-trace "merged" l)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1899 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1900 ((not l)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1901 (if (eq ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1902 (setq ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1903 (list "" ido-current-directory olist oign omat)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1904 ido-cur-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1905 ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1906 ido-matches nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1907 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1908 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
1909 ido-use-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1910 (setq ido-cur-list olist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1911 ido-ignored-list oign
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1912 ido-matches omat
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1913 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1914 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
1915 ido-use-merged-list nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1916 ((eq l t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1917 (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
1918 ((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
1919 (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
1920 ido-use-merged-list nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1921 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1922 (setq ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1923 (list ido-text-init ido-current-directory olist oign omat))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1924 (ido-set-current-directory (car (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1925 (if (ido-final-slash ido-text-init)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1926 (setq ido-text-init ""))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1927 (setq ido-cur-list l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1928 ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1929 ido-matches l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1930 ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1931 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1932 ido-use-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1933 (ido-trace "Merged" t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1934 ))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1935
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1936 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1937 (ido-keep-item-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1938 (setq ido-keep-item-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1939 ido-rescan nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1940 ((eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1941 (setq ido-ignored-list nil
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1942 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
1943 (not ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1944 (ido-make-file-list ido-default-item))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1945 ((eq ido-cur-item 'dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1946 (setq ido-ignored-list nil
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1947 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
1948 (not ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1949 (ido-make-dir-list ido-default-item))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1950 ((eq ido-cur-item 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1951 (setq ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1952 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
1953 ((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
1954 (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
1955 ido-cur-list (ido-make-choice-list ido-default-item)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1956 (t nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1957 (setq ido-rotate-temp nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1958
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1959 (if ido-process-ignore-lists-inhibit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1960 (setq ido-process-ignore-lists t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1961 ido-process-ignore-lists-inhibit nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1962
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1963 (ido-set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1964 (if (and ido-matches (eq ido-try-merged-list 'auto))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1965 (setq ido-try-merged-list t))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1966 (let
76795
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1967 ((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
1968 (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
1969 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
1970 ido-completion-map))
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1971 (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
1972 (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
1973 ido-completion-map
bcf68ba23417 (ido-read-internal): When reading file or dir, only override
Kim F. Storm <storm@cua.dk>
parents: 76489
diff changeset
1974 minibuffer-local-filename-completion-map))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1975 (max-mini-window-height (or ido-max-window-height
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1976 (and (boundp 'max-mini-window-height) max-mini-window-height)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1977 (ido-completing-read t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1978 (ido-require-match require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1979 (ido-use-mycompletion-depth (1+ (minibuffer-depth)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1980 (show-paren-mode nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1981 ;; prompt the user for the file name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1982 (setq ido-exit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1983 (setq ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1984 (catch 'ido
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1985 (completing-read
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1986 (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
1987 '(("dummy" . 1)) nil nil ; table predicate require-match
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1988 (prog1 ido-text-init (setq ido-text-init nil)) ;initial-contents
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1989 history))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1990 (ido-trace "completing-read" ido-final-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1991 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1992 (kill-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1993
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1994 (ido-trace "\n_EXIT_" ido-exit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1995
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1996 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1997 ((eq ido-exit 'refresh)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1998 (if (and (eq ido-use-merged-list 'auto)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1999 (or (input-pending-p)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2000 (setq ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2001 ido-keep-item-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2002 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2003
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2004 ((eq ido-exit 'done)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2005 (setq done t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2006 ido-selected ido-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2007 ido-exit nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2008
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2009 ((memq ido-exit '(edit chdir))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2010 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2011 ((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
2012 (let* ((read-file-name-function nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2013 (edit (eq ido-exit 'edit))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2014 (d ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2015 (f ido-text-init)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2016 (new t))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2017 (setq ido-text-init "")
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2018 (while new
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2019 (setq new (if edit
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2020 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2021 (read-file-name (concat prompt "[EDIT] ")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2022 (expand-file-name d)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2023 (concat d f) nil f)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2024 (quit (concat d f)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2025 f)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2026 d (or (file-name-directory new) "/")
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2027 f (file-name-nondirectory new)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2028 edit t)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2029 (if (or
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2030 (file-directory-p d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2031 (and (yes-or-no-p (format "Create directory %s? " d))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2032 (condition-case nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2033 (progn (make-directory d t) t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2034 (error
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2035 (message "Could not create directory")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2036 (sit-for 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2037 nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2038 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2039 (ido-set-current-directory d nil (eq ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2040 (setq ido-text-init f
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2041 new nil))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2042 (t
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2043 (setq ido-text-init
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2044 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2045 (read-string (concat prompt "[EDIT] ") ido-final-text)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2046 (quit ido-final-text)))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2047
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2048 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2049
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2050 ((eq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2051 (setq ido-keep-item-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2052
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2053 ((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
2054 (setq done t))
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 ((memq ido-exit '(updir push))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2057 ;; 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
2058 ;; 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
2059 (if (ido-is-tramp-root)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2060 (when (string-match "\\`\\(/\\([^/]+[:@]\\)*\\)\\([^/]+\\)[:@]\\'" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2061 (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
2062 (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
2063 (setq ido-set-default-item t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2064 (unless (ido-is-root-directory)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2065 (when (eq ido-exit 'push)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2066 (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
2067 (setq ido-cur-item 'dir)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2068 (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
2069 (ido-trace "push" ido-input-stack))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2070 (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
2071 (setq ido-set-default-item t))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2072
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2073 ((eq ido-exit 'pop)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2074 (ido-trace "pop" ido-input-stack)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2075 (let ((elt (car ido-input-stack)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2076 (setq ido-input-stack (cdr ido-input-stack))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2077 (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
2078 (setq ido-cur-item (car elt))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2079 (setq ido-text-init (cdr elt))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2080
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2081 ((eq ido-exit 'pop-all)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2082 (ido-trace "pop-all" ido-input-stack)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2083 (while ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2084 (let ((elt (car ido-input-stack)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2085 (setq ido-input-stack (cdr ido-input-stack))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2086 (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
2087 (setq ido-cur-item (car elt))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2088 (setq ido-text-init (cdr elt)))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2089
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2090 ;; 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
2091 ((and require-match
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2092 (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
2093 (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
2094 (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
2095 (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
2096 (error "Must specify valid item"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2097
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2098 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2099 (setq ido-selected
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2100 (if (or (eq ido-exit 'takeprompt)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2101 (null ido-matches))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2102 ido-final-text
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2103 ;; else take head of list
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2104 (ido-name (car ido-matches))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2105
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2106 (cond
61738
31b357591bb4 (ido-read-internal): Fix `list' completion.
Kim F. Storm <storm@cua.dk>
parents: 61394
diff changeset
2107 ((memq item '(buffer list))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2108 (setq done t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2109
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2110 ((string-equal "./" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2111 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2112
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2113 ((string-equal "../" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2114 ;; 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
2115 ;; root-dir of a certain drive (Windows or MS-DOS).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2116 (or (ido-is-root-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2117 (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
2118 (setq ido-set-default-item t))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2119
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
2120 ((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
2121 (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
2122 (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
2123 (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
2124 (ido-trace "tramp prefix" ido-selected)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2125 (if (ido-is-slow-ftp-host)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2126 (setq ido-exit 'fallback
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2127 done t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2128 (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
2129
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2130 ((or (string-match "[/\\][^/\\]" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2131 (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
2132 (string-match "\\`[a-zA-Z]:" ido-selected)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2133 (ido-set-current-directory (file-name-directory ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2134 (setq ido-set-default-item t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2135
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2136 ((string-match "\\`~" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2137 (ido-set-current-home ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2138
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2139 ((ido-final-slash ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2140 (if ido-enable-last-directory-history
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2141 (let ((x (assoc ido-current-directory ido-last-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2142 (if x
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2143 (setcdr x ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2144 (setq ido-last-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2145 (cons (cons ido-current-directory ido-selected) ido-last-directory-list)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2146 (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
2147 (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
2148 ; 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
2149 (let (elt)
aa026ce4fcef (ido-read-internal): Only pop stack elements automatically if they
Kim F. Storm <storm@cua.dk>
parents: 71273
diff changeset
2150 (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
2151 (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
2152 (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
2153 (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
2154 (setq ido-text-init (cdr elt)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2155 (setq ido-cur-item (car elt))))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2156 (setq ido-set-default-item t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2157
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2158 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2159 (setq done t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2160 ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2161
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2162 (defun ido-edit-input ()
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2163 "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
2164 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
2165 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2166 (if (not (eobp))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2167 (end-of-line)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2168 (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
2169 (setq ido-exit 'edit)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2170 (exit-minibuffer)))
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 ;;; MAIN FUNCTIONS
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2173 (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
2174 ;; Internal function for ido-switch-buffer and friends
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2175 (if (not ido-mode)
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2176 (progn
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2177 (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
2178 (or fallback 'switch-to-buffer))
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2179 (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
2180 (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
2181 (ido-current-directory nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2182 (ido-directory-nonreadable nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2183 (ido-directory-too-big nil)
108141
30a211bbe1bf When killing buffers with ido, don't offer virtual buffers for completion.
Juanma Barranquero <lekktu@gmail.com>
parents: 108022
diff changeset
2184 (ido-use-virtual-buffers (if (eq method 'kill)
30a211bbe1bf When killing buffers with ido, don't offer virtual buffers for completion.
Juanma Barranquero <lekktu@gmail.com>
parents: 108022
diff changeset
2185 nil ;; Don't consider virtual buffers for killing
30a211bbe1bf When killing buffers with ido, don't offer virtual buffers for completion.
Juanma Barranquero <lekktu@gmail.com>
parents: 108022
diff changeset
2186 ido-use-virtual-buffers))
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2187 (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
2188 (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
2189 require-match initial))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2190 filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2191
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2192 ;; Choose the buffer name: either the text typed in, or the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2193 ;; of the list of matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2194
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2195 (cond
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2196 ((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
2197 (ido-file-internal
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2198 (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
2199 nil nil nil nil ido-text))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2200
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2201 ((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
2202 (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
2203
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2204 ((eq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2205 (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
2206 (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
2207 (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
2208 (call-interactively this-command)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2209
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2210 ;; Check buf is non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2211 ((not buf) nil)
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2212 ((= (length buf) 0) nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2213
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2214 ;; View buffer if it exists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2215 ((get-buffer buf)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2216 (add-to-history 'buffer-name-history buf)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2217 (if (eq method 'insert)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2218 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2219 (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
2220 (push-mark
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2221 (save-excursion
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2222 (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
2223 (point))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2224 (ido-visit-buffer buf method t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2225
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2226 ;; check for a virtual buffer reference
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2227 ((and ido-use-virtual-buffers ido-virtual-buffers
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2228 (setq filename (assoc buf ido-virtual-buffers)))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2229 (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
2230
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2231 ((and (eq ido-create-new-buffer 'prompt)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2232 (null require-match)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2233 (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
2234 nil)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
2235
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2236 ;; 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
2237 ((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
2238 (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
2239 (message "No buffer matching `%s'" buf))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2240
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2241 ((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
2242 (null require-match)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2243 (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
2244 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2245
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2246 ;; create a new buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2247 (t
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2248 (add-to-history 'buffer-name-history buf)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2249 (setq buf (get-buffer-create buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2250 (if (fboundp 'set-buffer-major-mode)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2251 (set-buffer-major-mode buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2252 (ido-visit-buffer buf method t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2253
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2254 (defun ido-record-work-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2255 (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
2256 (if (and (setq dir (or dir ido-current-directory)) (> (length dir) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2257 (let ((items ido-work-directory-list-ignore-regexps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2258 (case-fold-search nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2259 (while (and items dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2260 (if (string-match (car items) dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2261 (setq dir nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2262 (setq items (cdr items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2263 (if dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2264 (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
2265 (if (> (length ido-work-directory-list) ido-max-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2266 (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
2267
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2268 (defun ido-forget-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2269 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2270 (when (and ido-current-directory ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2271 (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
2272 (when ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2273 (ido-undo-merge-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2274 (setq ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2275 ido-try-merged-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2276 ido-use-merged-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2277 ido-text-init ido-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2278 ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2279 (exit-minibuffer))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2280
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2281 (defun ido-record-work-file (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2282 ;; Save NAME in ido-work-file-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2283 (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
2284 (or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2285 (and ido-work-file-list (equal (car ido-work-file-list) name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2286 (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
2287 (if (> (length ido-work-file-list) ido-max-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2288 (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
2289
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2290 (defun ido-expand-directory (dir)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2291 ;; Expand DIR or use DEFAULT-DIRECTORY if nil.
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2292 ;; 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
2293 (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
2294
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2295 (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
2296 ;; 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
2297 (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
2298 (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
2299 (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
2300 (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
2301 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
2302 filename)
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2303
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2304 (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
2305 (setq filename t
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2306 ido-exit 'fallback)
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2307 (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
2308 (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
2309 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
2310 (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
2311 (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
2312
cc04bb9ef8b6 (ido-file-internal): Fall back to non-ido command if
Kim F. Storm <storm@cua.dk>
parents: 60127
diff changeset
2313 (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
2314 (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
2315 (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
2316 (require 'ffap)
107945
cf183258f1db * ido.el (ido-file-internal): Fix 2009-12-02 change.
Chong Yidong <cyd@stupidchicken.com>
parents: 106901
diff changeset
2317 ;; Duplicate code from ffap-guesser as we want different
cf183258f1db * ido.el (ido-file-internal): Fix 2009-12-02 change.
Chong Yidong <cyd@stupidchicken.com>
parents: 106901
diff changeset
2318 ;; 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
2319 (cond
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2320 ((with-no-warnings
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2321 (and ido-use-url-at-point
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2322 ffap-url-regexp
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2323 (ffap-fixup-url (or (ffap-url-at-point)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2324 (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
2325 (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
2326 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
2327
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2328 ((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
2329 (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
2330 (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
2331 (ffap-guesser)
860a7a8e779e * progmodes/octave-mod.el (inferior-octave-send-list-and-digest):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85998
diff changeset
2332 (ffap-string-at-point))))
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2333 (not (string-match "^http:/" fn))
107945
cf183258f1db * ido.el (ido-file-internal): Fix 2009-12-02 change.
Chong Yidong <cyd@stupidchicken.com>
parents: 106901
diff changeset
2334 (let ((absolute-fn (expand-file-name fn)))
cf183258f1db * ido.el (ido-file-internal): Fix 2009-12-02 change.
Chong Yidong <cyd@stupidchicken.com>
parents: 106901
diff changeset
2335 (setq d (if (file-directory-p absolute-fn)
cf183258f1db * ido.el (ido-file-internal): Fix 2009-12-02 change.
Chong Yidong <cyd@stupidchicken.com>
parents: 106901
diff changeset
2336 (file-name-as-directory absolute-fn)
cf183258f1db * ido.el (ido-file-internal): Fix 2009-12-02 change.
Chong Yidong <cyd@stupidchicken.com>
parents: 106901
diff changeset
2337 (file-name-directory absolute-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
2338 (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
2339 (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
2340 (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
2341
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2342 (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
2343 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2344 (ido-work-directory-index -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2345 (ido-work-file-index -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2346 (ido-find-literal nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2347
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2348 (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
2349 (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
2350 (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
2351 (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
2352 (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
2353 '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
2354 (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
2355 (confirm-nonexistent-file-or-buffer) initial))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2356
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2357 ;; Choose the file name: either the text typed in, or the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2358 ;; of the list of matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2359
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2360 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2361 ((eq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2362 ;; Need to guard setting of default-directory here, since
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2363 ;; we don't want to change directory of current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2364 (let ((default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2365 (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
2366 (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
2367 (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
2368 (call-interactively this-command)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2369
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2370 ((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
2371 (ido-buffer-internal
612227f6a51d (ido-buffer-internal, ido-file-internal): Pass on other-window
Kim F. Storm <storm@cua.dk>
parents: 97901
diff changeset
2372 (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
2373 nil nil nil ido-text))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2374
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2375 ((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
2376 (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
2377
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2378 ((eq ido-exit 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2379 (dired (concat ido-current-directory (or ido-text ""))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2380
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2381 ((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
2382 (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
2383
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2384 ((eq method 'alt-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2385 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2386 (setq default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2387 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2388 (find-alternate-file filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2389
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2390 ((memq method '(dired list-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2391 (if (equal filename ".")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2392 (setq filename ""))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2393 (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
2394 (file (substring dirname 0 -1)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2395 (cond
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2396 ((file-directory-p dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2397 (ido-record-command method dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2398 (ido-record-work-directory dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2399 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2400 ((file-directory-p ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2401 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2402 ((file-exists-p file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2403 (ido-record-command method ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2404 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2405 (funcall method ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2406 (if (eq method 'dired)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2407 (with-no-warnings
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2408 (dired-goto-file (expand-file-name file)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2409 ((string-match "[[*?]" filename)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2410 (setq dirname (concat ido-current-directory filename))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2411 (ido-record-command method dirname)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2412 (ido-record-work-directory)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2413 (funcall method dirname))
98099
c42264a3bf7e * ido.el (ido-file-internal): Fix typo in prompt.
Juanma Barranquero <lekktu@gmail.com>
parents: 97979
diff changeset
2414 ((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
2415 (ido-record-command method dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2416 (ido-record-work-directory dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2417 (make-directory-internal dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2418 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2419 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2420 ;; put make-directory command on history
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2421 (ido-record-command 'make-directory dirname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2422 (t (error "No such directory")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2423
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2424 ((eq method 'write)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2425 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2426 (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
2427 (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
2428 (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
2429 (add-to-history 'file-name-history filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2430 (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
2431 (write-file filename))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2432
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2433 ((eq method 'read-only)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2434 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2435 (setq filename (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2436 (ido-record-command fallback filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2437 (ido-record-work-directory)
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
2438 (run-hook-with-args 'ido-before-fallback-functions fallback)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2439 (funcall fallback filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2440
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2441 ((eq method 'insert)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2442 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2443 (setq filename (concat ido-current-directory filename))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2444 (ido-record-command
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2445 (if ido-find-literal 'insert-file-literally 'insert-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2446 filename)
76148
d38be8d45087 (ido-buffer-internal): Set this-command to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 75686
diff changeset
2447 (add-to-history 'file-name-history filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2448 (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
2449 (insert-file-1 filename
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2450 (if ido-find-literal
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2451 #'insert-file-contents-literally
4ac434def21f (ido-buffer-internal): Set mark for ido-insert-buffer.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2452 #'insert-file-contents)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2453
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2454 (filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2455 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2456 (setq filename (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2457 (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
2458 (add-to-history 'file-name-history filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2459 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2460 (ido-visit-buffer (find-file-noselect filename nil ido-find-literal) method))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2461
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2462 (defun ido-existing-item-p ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2463 ;; Return non-nil if there is a matching item
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2464 (not (null ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2465
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2466 ;;; COMPLETION CODE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2467
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2468 (defun ido-set-common-completion ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2469 ;; Find common completion of `ido-text' in `ido-matches'
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2470 ;; 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
2471 (let (val)
8ddc4d84085e (ido-set-common-completion): Use `let', not `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 75391
diff changeset
2472 (setq ido-common-match-string nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2473 (if (and ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2474 (not ido-enable-regexp) ;; testing
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2475 (stringp ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2476 (> (length ido-text) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2477 (if (setq val (ido-find-common-substring ido-matches ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2478 (setq ido-common-match-string val)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2479 val))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2480
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2481 (defun ido-complete ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2482 "Try and complete the current pattern amongst the file names."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2483 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2484 (let (res)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2485 (cond
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2486 (ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2487 ;; Do nothing
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2488 )
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2489 ((and (memq ido-cur-item '(file dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2490 (string-match "[$]" ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2491 (let ((evar (substitute-in-file-name (concat ido-current-directory ido-text))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2492 (if (not (file-exists-p (file-name-directory evar)))
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
2493 (message "Expansion generates non-existing directory name")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2494 (if (file-directory-p evar)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2495 (ido-set-current-directory evar)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2496 (let ((d (or (file-name-directory evar) "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2497 (f (file-name-nondirectory evar)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2498 (when (file-directory-p d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2499 (ido-set-current-directory d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2500 (setq ido-text-init f))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2501 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2502 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2503
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2504 (ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2505 (setq ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2506 (setq ido-text-init ido-text)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2507 (setq ido-exit 'refresh)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2508 (exit-minibuffer))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2509
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2510 ((not ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2511 (when ido-completion-buffer
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
2512 (call-interactively (setq this-command ido-cannot-complete-command))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2513
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2514 ((and (= 1 (length ido-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2515 (not (and ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2516 (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
2517 (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
2518 (not (ido-local-file-exists-p (ido-name (car ido-matches)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2519 ;; only one choice, so select it.
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2520 (if (not ido-confirm-unique-completion)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2521 (exit-minibuffer)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2522 (setq ido-rescan (not ido-enable-prefix))
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2523 (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
2524 (insert (ido-name (car ido-matches)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2525
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2526 (t ;; else there could be some completions
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2527 (setq res ido-common-match-string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2528 (if (and (not (memq res '(t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2529 (not (equal res ido-text)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2530 ;; found something to complete, so put it in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2531 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2532 ;; move exact match to front if not in prefix mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2533 (setq ido-rescan (not ido-enable-prefix))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2534 (delete-region (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2535 (insert res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2536 ;; else nothing to complete
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
2537 (call-interactively (setq this-command ido-cannot-complete-command))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2538 )))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2539
46231
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2540 (defun ido-complete-space ()
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2541 "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
2542 (interactive)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2543 (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
2544 (stringp ido-text)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2545 (cond
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2546 ((> (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
2547 (= (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
2548 (ido-matches
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2549 (let (insert-space
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2550 (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
2551 (comp ido-matches))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2552 (while comp
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2553 (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
2554 (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
2555 (setq comp (cdr comp))))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2556 insert-space))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2557 (t nil)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2558 (insert " ")
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2559 (ido-complete)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2560
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2561 (defun ido-undo-merge-work-directory (&optional text try refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2562 "Undo or redo last ido directory merge operation.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2563 If no merge has yet taken place, toggle automatic merging option."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2564 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2565 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2566 (ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2567 (ido-set-current-directory (nth 1 ido-pre-merge-state))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2568 (setq ido-text-init (or text (car ido-pre-merge-state))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2569 ido-cur-list (nth 2 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2570 ido-ignored-list (nth 3 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2571 ido-matches (nth 4 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2572 ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2573 ido-try-merged-list try
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2574 ido-keep-item-list (not refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2575 ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2576 ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2577 ido-pre-merge-state nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2578 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2579 (text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2580 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2581 (ido-try-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2582 (setq ido-try-merged-list nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2583 (ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2584 (setq ido-try-merged-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2585 ((not ido-use-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2586 (ido-merge-work-directories))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2587
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2588 ;;; Magic C-f
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2589
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2590 (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
2591 "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
2592 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
2593 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
2594 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
2595 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
2596 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
2597 (interactive "P")
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2598 (cond
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2599 ((or arg (not (eobp)))
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2600 (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
2601 (- (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
2602 ((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
2603 (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
2604 (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
2605 (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
2606 ((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
2607 (ido-enter-find-file))))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2608
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2609 ;;; Magic C-b
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2610
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2611 (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
2612 "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
2613 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
2614 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
2615 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
2616 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
2617 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
2618 (interactive "P")
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2619 (cond
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2620 ((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
2621 (forward-char
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2622 (- (min (prefix-numeric-value arg)
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2623 (- (point) (minibuffer-prompt-end))))))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2624 ((eq last-command this-command)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2625 (when (and (memq ido-cur-item '(file dir))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2626 (not (bobp)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2627 (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
2628 ((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
2629 (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
2630 (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
2631 (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
2632 (t
43a311177040 (ido-magic-forward-char): Enter ido-find-file at end of input.
Kim F. Storm <storm@cua.dk>
parents: 62378
diff changeset
2633 (ido-enter-switch-buffer))))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2634
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2635 ;;; Magic C-d
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2636
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2637 (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
2638 "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
2639 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
2640 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
2641 (interactive "P")
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2642 (cond
91509
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2643 ((or arg (not (eobp)))
ce9d394589c2 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 87566
diff changeset
2644 (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
2645 (- (point-max) (point)))))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2646 (ido-context-switch-command
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2647 nil)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2648 ((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
2649 (ido-enter-dired))))
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2650
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2651
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2652 ;;; TOGGLE FUNCTIONS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2653
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2654 (defun ido-toggle-case ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2655 "Toggle the value of `ido-case-fold'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2656 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2657 (setq ido-case-fold (not ido-case-fold))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2658 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2659 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2660
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2661 (defun ido-toggle-regexp ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2662 "Toggle the value of `ido-enable-regexp'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2663 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2664 (setq ido-enable-regexp (not ido-enable-regexp))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2665 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2666 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2667
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2668 (defun ido-toggle-prefix ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2669 "Toggle the value of `ido-enable-prefix'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2670 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2671 (setq ido-enable-prefix (not ido-enable-prefix))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2672 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2673 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2674
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2675 (defun ido-toggle-ignore ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2676 "Toggle ignoring files specified with `ido-ignore-files'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2677 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2678 (if (and (not (eobp)) (> (point) (minibuffer-prompt-end)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2679 (goto-char (minibuffer-prompt-end))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2680 (if ido-directory-too-big
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2681 (progn
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2682 (message "Reading directory...")
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2683 (setq ido-directory-too-big nil))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2684 (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
2685 (setq ido-text-init ido-text)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2686 (setq ido-exit 'refresh)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
2687 (exit-minibuffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2688
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2689 (defun ido-toggle-vc ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2690 "Disable version control for this file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2691 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2692 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2693 (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
2694 (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
2695 (if vc-handled-backends nil ido-saved-vc-hb))
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-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2698 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2699
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2700 (defun ido-toggle-literal ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2701 "Toggle literal reading of this file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2702 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2703 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2704 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2705 (setq ido-find-literal (not ido-find-literal))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2706 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2707 (setq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2708 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2709
108022
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2710 (defun ido-toggle-virtual-buffers ()
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2711 "Toggle the use of virtual buffers.
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2712 See `ido-use-virtual-buffers' for explanation of virtual buffer."
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2713 (interactive)
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2714 (when (and ido-mode (eq ido-cur-item 'buffer))
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2715 (setq ido-use-virtual-buffers (not ido-use-virtual-buffers))
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2716 (setq ido-text-init ido-text)
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2717 (setq ido-exit 'refresh)
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2718 (exit-minibuffer)))
2db141e51824 Added C-o keybinding to toggle use of virtual buffers
John Wiegley <jwiegley@gmail.com>
parents: 107978
diff changeset
2719
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2720 (defun ido-reread-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2721 "Read current directory again.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2722 May be useful if cached version is no longer valid, but directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2723 timestamp has not changed (e.g. with ftp or on Windows)."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2724 (interactive)
73388
98bbab587745 (ido-reread-directory): Work in `dir' mode too.
Kim F. Storm <storm@cua.dk>
parents: 73376
diff changeset
2725 (if (and ido-mode (memq ido-cur-item '(file dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2726 (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
2727 (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
2728 (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
2729 (ido-remove-cached-dir ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2730 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2731 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2732 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2733 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2734
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2735 (defun ido-exit-minibuffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2736 "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
2737 (interactive)
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2738 (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
2739 (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
2740 (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
2741 (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
2742 t
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
2743 (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
2744 nil))
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2745 (ido-existing-item-p))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
2746 (not ido-incomplete-regexp))
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2747 (exit-minibuffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2748
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2749 (defun ido-select-text ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2750 "Select the buffer or file named by the prompt.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2751 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
2752 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2753 (setq ido-exit 'takeprompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2754 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2755
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2756 (defun ido-fallback-command ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2757 "Fallback to non-ido version of current command."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2758 (interactive)
60127
283f8f92beaa (ido-fallback-command): Pass user input to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 59996
diff changeset
2759 (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
2760 (while (> i 0)
283f8f92beaa (ido-fallback-command): Pass user input to fallback command.
Kim F. Storm <storm@cua.dk>
parents: 59996
diff changeset
2761 (push (aref ido-text (setq i (1- i))) unread-command-events)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2762 (setq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2763 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2764
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2765 (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
2766 "Drop into `find-file' from buffer switching."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2767 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2768 (setq ido-exit 'find-file)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2769 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2770
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2771 (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
2772 "Drop into `ido-switch-buffer' from file switching."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2773 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2774 (setq ido-exit 'switch-to-buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2775 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2776
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2777 (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
2778 "Drop into `dired' from file switching."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2779 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2780 (setq ido-exit 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2781 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2782
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2783 (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
2784 "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
2785 (interactive)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2786 (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
2787 (exit-minibuffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2788
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2789 (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
2790 "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
2791 (interactive)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2792 (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
2793 (exit-minibuffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2794
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-up-directory (&optional clear)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2797 "Go up one directory level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2798 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2799 (setq ido-text-init (if clear nil ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2800 (setq ido-exit 'updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2801 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2802 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2803
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2804 (defun ido-delete-backward-updir (count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2805 "Delete char backwards, or at beginning of buffer, go up one level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2806 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2807 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2808 ((= (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2809 (if (not count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2810 (ido-up-directory t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2811 ((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
2812 (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
2813 ((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
2814 (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
2815 ((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
2816 (funcall this-original-command))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2817 (t
108765
d835100c3e8b Replace Lisp calls to delete-backward-char by delete-char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108168
diff changeset
2818 (delete-char (- (prefix-numeric-value count))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2819
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2820 (defun ido-delete-backward-word-updir (count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2821 "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
2822 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2823 (if (= (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2824 (if (not count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2825 (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
2826 (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
2827 (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
2828 (backward-kill-word (prefix-numeric-value count)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2829
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2830 (defun ido-get-work-directory (&optional incr must-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2831 (let ((n (length ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2832 (i ido-work-directory-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2833 (j 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2834 dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2835 (if (or (not ido-text) (= (length ido-text) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2836 (setq must-match nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2837 (while (< j n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2838 (setq i (+ i incr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2839 j (1+ j))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2840 (if (> incr 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2841 (if (>= i n) (setq i 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2842 (if (< i 0) (setq i (1- n))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2843 (setq dir (nth i ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2844 (if (and dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2845 (not (equal dir ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2846 (file-directory-p dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2847 (or (not must-match)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2848 ;; 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
2849 (ido-set-matches-1
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2850 (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
2851 (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
2852 (ido-make-dir-list-1 dir)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2853 (setq j n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2854 (setq dir nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2855 (if dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2856 (setq ido-work-directory-index i))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2857 dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2858
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2859 (defun ido-prev-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2860 "Change to next working directory in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2861 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2862 (let ((dir (ido-get-work-directory 1 ido-work-directory-match-only)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2863 (when dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2864 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2865 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2866 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2867 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2868 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2869
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2870 (defun ido-next-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2871 "Change to previous working directory in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2872 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2873 (let ((dir (ido-get-work-directory -1 ido-work-directory-match-only)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2874 (when dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2875 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2876 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2877 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2878 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2879 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2880
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2881 (defun ido-merge-work-directories ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2882 "Search (and merge) work directories for files matching the current input string."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2883 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2884 (setq ido-use-merged-list t ido-try-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2885 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2886 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2887 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2888 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2889
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2890 (defun ido-wide-find-file (&optional file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2891 "Prompt for FILE to search for using find, starting from current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2892 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2893 (unless file
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2894 (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
2895 (setq file
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2896 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2897 (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
2898 (quit "")))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2899 (when (> (length file) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2900 (setq ido-use-merged-list t ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2901 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2902 (setq ido-text-init file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2903 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2904 (exit-minibuffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2905
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2906 (defun ido-wide-find-dir (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2907 "Prompt for DIR to search for using find, starting from current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2908 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2909 (unless dir
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2910 (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
2911 (setq dir
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2912 (condition-case nil
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2913 (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
2914 (quit "")))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2915 (when (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2916 (setq ido-use-merged-list t ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2917 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2918 (setq ido-text-init (ido-final-slash dir t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2919 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2920 (exit-minibuffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2921
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2922 (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
2923 "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
2924 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
2925 (interactive)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2926 (if ido-input-stack
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2927 (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
2928 (ido-wide-find-dir)))
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
2929
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2930 (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
2931 "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
2932 (interactive)
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2933 (when ido-matches
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
2934 (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
2935 (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
2936 (exit-minibuffer)))
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2937
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2938 (defun ido-push-dir ()
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2939 "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
2940 (interactive)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2941 (setq ido-exit 'push)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2942 (exit-minibuffer))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2943
71269
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2944 (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
2945 "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
2946 (interactive)
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2947 (if ido-matches
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
2948 (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
2949 (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
2950 (exit-minibuffer))
851a15a8f318 (ido-take-first-match, ido-push-dir-first): New commands.
Kim F. Storm <storm@cua.dk>
parents: 71240
diff changeset
2951
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2952 (defun ido-pop-dir (arg)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2953 "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
2954 With \\[universal-argument], pop all elements."
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2955 (interactive "P")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2956 (when ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2957 (setq ido-exit (if arg 'pop-all 'pop))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2958 (exit-minibuffer)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2959
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2960 (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
2961 (interactive "P")
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2962 (if ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2963 (ido-pop-dir arg)
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2964 (ido-wide-find-file)))
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
2965
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2966 (defun ido-make-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2967 "Prompt for DIR to create in current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2968 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2969 (unless dir
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2970 (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
2971 (setq dir
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2972 (read-string (concat "Make directory: " ido-current-directory) ido-text))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2973 (when (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2974 (setq dir (concat ido-current-directory dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2975 (unless (file-exists-p dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2976 (make-directory dir t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2977 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2978 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2979 (setq ido-text-init nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2980 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2981 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2982
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2983 (defun ido-get-work-file (incr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2984 (let ((n (length ido-work-file-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2985 (i (+ ido-work-file-index incr))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2986 name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2987 (if (> incr 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2988 (if (>= i n) (setq i 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2989 (if (< i 0) (setq i (1- n))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2990 (setq name (nth i ido-work-file-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2991 (setq ido-work-file-index i)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2992 name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2993
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2994 (defun ido-prev-work-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2995 "Change to next working file name in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2996 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2997 (let ((name (ido-get-work-file 1)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2998 (when name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2999 (setq ido-text-init name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3000 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3001 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3002
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3003 (defun ido-next-work-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3004 "Change to previous working file name in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3005 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3006 (let ((name (ido-get-work-file -1)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3007 (when name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3008 (setq ido-text-init name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3009 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3010 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3011
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3012 (defun ido-copy-current-file-name (all)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3013 "Insert file name of current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3014 If repeated, insert text from buffer instead."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3015 (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
3016 (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
3017 (buffer-name ido-entry-buffer)))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3018 (name (and bfname (file-name-nondirectory bfname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3019 (when name
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3020 (setq ido-text-init
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3021 (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
3022 (eq last-command this-command)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3023 (not (equal (file-name-directory bfname) ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3024 (not (string-match "\\.[^.]*\\'" name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3025 name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3026 (substring name 0 (1+ (match-beginning 0)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3027 (setq ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3028 ido-try-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3029 (exit-minibuffer))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3030
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3031 (defun ido-copy-current-word (all)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
3032 "Insert current word (file or directory name) from current buffer."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3033 (interactive "P")
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105601
diff changeset
3034 (let ((word (with-current-buffer ido-entry-buffer
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3035 (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
3036 (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
3037 (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
3038 (beginning-of-line)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3039 (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
3040 (end-of-line)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3041 (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
3042 (goto-char p)
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3043 (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
3044 (forward-char 1))
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3045 (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
3046 (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
3047 (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
3048 (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
3049 (and start-name
5783c1198e3b (ido-copy-current-word): C-o copies region if active.
Kim F. Storm <storm@cua.dk>
parents: 73909
diff changeset
3050 (buffer-substring-no-properties start-name (point)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3051 (if (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3052 ((not word) nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3053 ((string-match "\\`[~/]" word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3054 (setq ido-text-init word
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3055 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3056 ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3057 ((string-match "/" word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3058 (setq ido-text-init (concat ido-current-directory word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3059 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3060 ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3061 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3062 (setq ido-text-init word
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3063 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3064 ido-exit 'refresh)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3065 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3066
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3067 (defun ido-next-match ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3068 "Put first element of `ido-matches' at the end of the list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3069 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3070 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3071 (let ((next (cadr ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3072 (setq ido-cur-list (ido-chop ido-cur-list next))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3073 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3074 (setq ido-rotate t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3075
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3076 (defun ido-prev-match ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3077 "Put last element of `ido-matches' at the front of the list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3078 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3079 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3080 (let ((prev (car (last ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3081 (setq ido-cur-list (ido-chop ido-cur-list prev))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3082 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3083 (setq ido-rotate t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3084
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3085 (defun ido-next-match-dir ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3086 "Find next directory in match list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3087 If work directories have been merged, cycle through directories for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3088 first matching file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3089 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3090 (if ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3091 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3092 (let* ((elt (car ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3093 (dirs (cdr elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3094 (when (> (length dirs) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3095 (setcdr elt (ido-chop dirs (cadr dirs))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3096 (setq ido-rescan nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3097 (let ((cnt (length ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3098 (i 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3099 (while (and (< i cnt) (not (ido-final-slash (nth i ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3100 (setq i (1+ i)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3101 (if (< i cnt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3102 (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
3103
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3104 (defun ido-prev-match-dir ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3105 "Find previous directory in match list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3106 If work directories have been merged, cycle through directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3107 for first matching file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3108 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3109 (if ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3110 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3111 (let* ((elt (car ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3112 (dirs (cdr elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3113 (when (> (length dirs) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3114 (setcdr elt (ido-chop dirs (car (last dirs)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3115 (setq ido-rescan nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3116 (let* ((cnt (length ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3117 (i (1- cnt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3118 (while (and (> i 0) (not (ido-final-slash (nth i ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3119 (setq i (1- i)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3120 (if (> i 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3121 (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
3122
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3123 (defun ido-restrict-to-matches ()
47977
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3124 "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
3125 (interactive)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3126 (when ido-matches
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3127 (setq ido-cur-list ido-matches
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3128 ido-text-init ""
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3129 ido-rescan nil
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3130 ido-exit 'keep)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3131 (exit-minibuffer)))
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
3132
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3133 (defun ido-chop (items elem)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3134 "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
3135 (let ((ret nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3136 (next nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3137 (sofar nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3138 (while (not ret)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3139 (setq next (car items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3140 (if (equal next elem)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3141 (setq ret (append items (nreverse sofar)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3142 ;; else
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3143 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3144 (setq items (cdr items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3145 (setq sofar (cons next sofar)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3146 ret))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3147
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3148 (defun ido-name (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3149 ;; Return file name for current item, whether in a normal list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3150 ;; or a merged work directory list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3151 (if (consp item) (car item) item))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3152
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3153
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3154 ;;; CREATE LIST OF ALL CURRENT FILES
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3155
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3156 (defun ido-all-completions ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3157 ;; Return unsorted list of all competions.
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3158 (let ((ido-process-ignore-lists nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3159 (ido-directory-too-big nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3160 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3161 ((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
3162 (ido-make-file-list-1 ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3163 ((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
3164 (ido-make-dir-list-1 ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3165 ((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
3166 (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
3167 ((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
3168 ido-choice-list)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3169 (t nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3170
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3171
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3172 ;; File list sorting
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3173
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3174 (defun ido-file-lessp (a b)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3175 ;; Simple compare two file names.
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3176 (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
3177
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3178
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3179 (defun ido-file-extension-lessp (a b)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3180 ;; 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
3181 (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
3182 lessp p)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3183 (if (eq n t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3184 nil
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3185 (if (< n 0)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3186 (setq n (1- (- n))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3187 p a a b b p
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3188 lessp t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3189 (setq n (1- n)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3190 (cond
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3191 ((= n 0)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3192 lessp)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3193 ((= (aref a n) ?.)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3194 (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
3195 (t
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3196 (while (and (> n 2) (/= (aref a n) ?.))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3197 (setq n (1- n)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3198 (if (> n 1)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3199 (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
3200 lessp))))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3201
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3202 (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
3203 (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
3204 (ob (ido-file-extension-order b n)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3205 (cond
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3206 ((and oa ob)
73266
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3207 (cond
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3208 ((= oa ob)
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3209 lessp)
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3210 (lessp
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3211 (> oa ob))
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3212 (t
acb35bee2828 (ido-file-extension-aux): Fix comparison.
Kim F. Storm <storm@cua.dk>
parents: 73260
diff changeset
3213 (< oa ob))))
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3214 (oa
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3215 (not lessp))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3216 (ob
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3217 lessp)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3218 (t
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3219 lessp))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3220
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3221 (defun ido-file-extension-order (s n)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3222 (let ((l ido-file-extensions-order)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3223 (i 0) o do)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3224 (while l
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3225 (cond
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3226 ((eq (car l) t)
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3227 (setq do i
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3228 l (cdr l)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3229 ((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
3230 (setq o i
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3231 l nil))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3232 (t
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3233 (setq l (cdr l))))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3234 (setq i (1+ i)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3235 (or o do)))
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3236
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3237
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3238 (defun ido-sort-merged-list (items promote)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3239 ;; Input is list of ("file" . "dir") cons cells.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3240 ;; Output is sorted list of ("file "dir" ...) lists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3241 (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
3242 res a cur dirs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3243 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3244 (setq a (car l)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3245 l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3246 (if (and res (string-equal (car (car res)) (car a)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3247 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3248 (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
3249 (if (and promote (string-equal ido-current-directory (cdr a)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3250 (setq cur t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3251 (setq res (cons (list (car a) (cdr a)) res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3252 cur nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3253 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3254
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3255 (defun ido-wide-find-dirs-or-files (dir file &optional prefix finddir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3256 ;; 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
3257 (let ((filenames
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3258 (split-string
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3259 (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
3260 (concat "find "
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3261 (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
3262 " -name "
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3263 (shell-quote-argument
4dce8f520712 (ido-wide-find-dirs-or-files): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73166
diff changeset
3264 (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
3265 " -type " (if finddir "d" "f") " -print"))))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3266 filename d f
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3267 res)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3268 (while filenames
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3269 (setq filename (car filenames)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3270 filenames (cdr filenames))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3271 (if (and (string-match "^/" filename)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3272 (file-exists-p filename))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3273 (setq d (file-name-directory filename)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
3274 f (file-name-nondirectory filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3275 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
3276 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3277
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3278 (defun ido-flatten-merged-list (items)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
3279 ;; 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
3280 (let (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3281 (while items
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3282 (let* ((item (car items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3283 (file (car item))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3284 (dirs (cdr item)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3285 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3286 (setq res (cons (concat (car dirs) file) res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3287 dirs (cdr dirs))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3288 (setq items (cdr items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3289 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3290
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3291
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3292 (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
3293 (let (res)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3294 (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
3295 (if wide
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3296 (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
3297 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
3298 ;; 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
3299 (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
3300 (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
3301 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
3302 (if nil ;; simple
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 (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 (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
3307 (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
3308 (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
3309 (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
3310 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
3311 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
3312 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
3313 (while dirs
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3314 (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
3315 d (car dir)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3316 dirs (cdr dirs))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3317 (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
3318 (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
3319 (while dir
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3320 (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
3321 dir (cdr dir))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3322 (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
3323 (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
3324 (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
3325 (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
3326 (setq dirs nil
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3327 res t))))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3328 (if wide
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3329 (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
3330 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
3331 (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
3332 (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
3333 (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
3334 dir fl)
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3335 (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
3336 (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
3337 (while dirs
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3338 (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
3339 dirs (cdr dirs))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3340 (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
3341 (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
3342 (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
3343 (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
3344 ;; 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
3345 (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
3346 (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
3347 (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
3348 (if must-match
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3349 (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
3350 (if fl
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3351 (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
3352 (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
3353 (setq dirs nil
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3354 res t))))))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3355 res))
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3356
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3357 (defun ido-make-merged-file-list (text auto wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3358 (let (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3359 (message "Searching for `%s'...." text)
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3360 (condition-case nil
64983
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3361 (if (eq t (setq res
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3362 (while-no-input
1a1aa1eae3b3 (ido-buffer-internal): Use with-no-warnings.
Kim F. Storm <storm@cua.dk>
parents: 64762
diff changeset
3363 (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
3364 (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
3365 (quit
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3366 (setq res t
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3367 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
3368 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
3369 (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
3370 (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
3371 (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
3372 (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
3373 (> (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
3374 (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
3375 (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
3376 (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
3377 (setq res (cons elt res)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3378 (message nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3379 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3380
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3381 (defun ido-make-buffer-list-1 (&optional frame visible)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3382 ;; Return list of non-ignored buffer names
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3383 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3384 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3385 (lambda (x)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3386 (let ((name (buffer-name x)))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3387 (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
3388 name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3389 (buffer-list frame))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3390
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3391 (defun ido-make-buffer-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3392 ;; Return the current list of buffers.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3393 ;; 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
3394 ;; 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
3395 ;; 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
3396 ;; 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
3397 ;; it is put to the start of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3398 (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
3399 (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
3400 (if ido-temp-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3401 (nconc ido-temp-list ido-current-buffers)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3402 (setq ido-temp-list ido-current-buffers))
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3403 (if default
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3404 (setq ido-temp-list
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3405 (cons default (delete default ido-temp-list))))
110380
f25651f73f70 * ido.el (ido-make-buffer-list): Fix error in 2010-08-22 merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 109958
diff changeset
3406 (if ido-use-virtual-buffers
f25651f73f70 * ido.el (ido-make-buffer-list): Fix error in 2010-08-22 merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 109958
diff changeset
3407 (ido-add-virtual-buffers-to-list))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3408 (run-hooks 'ido-make-buffer-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3409 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3410
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3411 (defun ido-add-virtual-buffers-to-list ()
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3412 "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
3413 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
3414 ;; 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
3415 ;; 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
3416 ;; the file which the user might thought was still open.
107786
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3417 (unless recentf-mode (recentf-mode 1))
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3418 (setq ido-virtual-buffers nil)
107786
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3419 (let (name)
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3420 (dolist (head recentf-list)
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3421 (and (setq name (file-name-nondirectory head))
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3422 (null (get-file-buffer head))
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3423 (not (assoc name ido-virtual-buffers))
107788
f8a150994b7a Fixed duplicate names appearing in IDO buffer list (using virtuals)
jwiegley@gmail.com
parents: 107787
diff changeset
3424 (not (member name ido-temp-list))
107786
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3425 (not (ido-ignore-item-p name ido-ignore-buffers))
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3426 ;;(file-exists-p head)
3de4f4f86a82 Enable recentf-mode if using virtual buffers.
Juanma Barranquero <lekktu@gmail.com>
parents: 107777
diff changeset
3427 (push (cons name head) ido-virtual-buffers))))
107777
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3428 (when ido-virtual-buffers
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3429 (if ido-use-faces
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3430 (dolist (comp ido-virtual-buffers)
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3431 (put-text-property 0 (length (car comp))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3432 'face 'ido-virtual
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3433 (car comp))))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3434 (setq ido-temp-list
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3435 (nconc ido-temp-list
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3436 (nreverse (mapcar #'car ido-virtual-buffers))))))
13c077500eb3 2010-04-04 John Wiegley <jwiegley@gmail.com>
jwiegley@gmail.com
parents: 106901
diff changeset
3437
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3438 (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
3439 ;; 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
3440 ;; 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
3441 ;; 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
3442 (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
3443 (if default
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3444 (progn
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3445 (setq ido-temp-list
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3446 (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
3447 (setq ido-temp-list
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3448 (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
3449 ; (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
3450 ido-temp-list))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3451
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3452 (defun ido-to-end (items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3453 ;; 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
3454 (mapc
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3455 (lambda (elem)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3456 (setq ido-temp-list (delq elem ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3457 items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3458 (if ido-temp-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3459 (nconc ido-temp-list items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3460 (setq ido-temp-list items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3461
87110
aad891ae9148 Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents: 87046
diff changeset
3462 (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
3463
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3464 (defun ido-file-name-all-completions-1 (dir)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3465 (cond
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
3466 ((ido-nonreadable-directory-p dir) '())
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3467 ;; 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
3468 ;; 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
3469
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3470 ((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
3471 (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
3472 (require 'tramp nil t))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3473 (string-match "\\`/[^/]+[:@]\\'" dir))
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3474 ;; 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
3475 ;; 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
3476 (let* ((len (1- (length dir)))
107858
57532220127a Fix Bug#5840.
Michael Albinus <albinus@detlef>
parents: 107790
diff changeset
3477 (non-essential t)
86406
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3478 (compl
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3479 (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
3480 ;; 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
3481 ;; /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
3482 ;; /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
3483 (and
22b18b2eec8e * ido.el (ido-file-name-all-completions-1): Check for fboundp of
Michael Albinus <michael.albinus@gmx.de>
parents: 86234
diff changeset
3484 (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
3485 (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
3486 (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
3487 (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
3488 (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
3489 (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
3490 (if (and compl
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3491 (> (length (car compl)) len)
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3492 (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
3493 (mapcar (lambda (c) (substring c len)) compl)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3494 compl)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3495 (t
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3496 (file-name-all-completions "" dir))))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3497
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3498 (defun ido-file-name-all-completions (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3499 ;; Return name of all files in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3500 ;; 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
3501 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3502 ((ido-is-unc-root dir)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3503 (mapcar
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3504 (lambda (host)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3505 (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
3506 (ido-unc-hosts t)))
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3507 ((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
3508 (stringp dir) (> (length dir) 0)
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3509 (ido-may-cache-directory dir))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3510 (let* ((cached (assoc dir ido-dir-file-cache))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3511 (ctime (nth 1 cached))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3512 (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
3513 (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
3514 (attr (if (or ftp unc) nil (file-attributes dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3515 (mtime (nth 5 attr))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3516 valid)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3517 (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
3518 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3519 (ftp
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3520 (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
3521 (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
3522 (unc
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3523 (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
3524 (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
3525 (t
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3526 (if attr
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3527 (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
3528 (= (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
3529 (unless valid
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3530 (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
3531 cached nil)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3532 (unless cached
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3533 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3534 (unc
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3535 (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
3536 ((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
3537 (setq mtime (cons 'ftp (ido-time-stamp)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3538 (if mtime
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3539 (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
3540 ido-dir-file-cache (cons cached ido-dir-file-cache)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3541 (if (> (length ido-dir-file-cache) ido-max-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3542 (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
3543 (and cached
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3544 (cdr (cdr cached)))))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3545 (t
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
3546 (ido-file-name-all-completions-1 dir))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3547
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3548 (defun ido-remove-cached-dir (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3549 ;; Remove dir from ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3550 (if (and ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3551 (stringp dir) (> (length dir) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3552 (let ((cached (assoc dir ido-dir-file-cache)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3553 (if cached
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3554 (setq ido-dir-file-cache (delq cached ido-dir-file-cache))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3555
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3556
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3557 (defun ido-make-file-list-1 (dir &optional merged)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3558 ;; Return list of non-ignored files in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3559 ;; 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
3560 (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
3561 (file-directory-p dir))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3562 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3563 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3564 (lambda (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3565 (if (not (ido-ignore-item-p name ido-ignore-files t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3566 (if merged (cons name dir) name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3567 (ido-file-name-all-completions dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3568
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3569 (defun ido-make-file-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3570 ;; Return the current list of files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3571 ;; 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
3572 ;; 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
3573 ;; 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
3574 ;; 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
3575 (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
3576 (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
3577 (if ido-file-extensions-order
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3578 #'ido-file-extension-lessp
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3579 #'ido-file-lessp)))
66212
3a5f2ee9f30b (ido-is-tramp-root): Simplify regexp matching tramp root.
Kim F. Storm <storm@cua.dk>
parents: 65802
diff changeset
3580 (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
3581 (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
3582 (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
3583 (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
3584 (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
3585 (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
3586 (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
3587 (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
3588 (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
3589 ido-temp-list)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3590 (ido-to-end ;; move . files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3591 (delq nil (mapcar
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3592 (lambda (x) (if (string-equal (substring x 0 1) ".") x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3593 ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3594 (if (and default (member default ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3595 (if (or ido-rotate-temp ido-rotate-file-list-default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3596 (unless (equal default (car ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3597 (let ((l ido-temp-list) k)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3598 (while (and l (cdr l) (not (equal default (car (cdr l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3599 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3600 (setq k (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3601 (setcdr l nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3602 (nconc k ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3603 (setq ido-temp-list k)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3604 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3605 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3606 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3607 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3608 (when ido-show-dot-for-dired
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3609 (setq ido-temp-list (delete "." ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3610 (setq ido-temp-list (cons "." ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3611 (run-hooks 'ido-make-file-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3612 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3613
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3614 (defun ido-make-dir-list-1 (dir &optional merged)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3615 ;; Return list of non-ignored subdirs in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3616 ;; 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
3617 (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
3618 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3619 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3620 (lambda (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3621 (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
3622 (if merged (cons name dir) name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3623 (ido-file-name-all-completions dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3624
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3625 (defun ido-make-dir-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3626 ;; Return the current list of directories.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3627 ;; 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
3628 ;; created to allow the user to further modify the order of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3629 ;; 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
3630 (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
3631 (setq ido-temp-list (sort ido-temp-list #'ido-file-lessp))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3632 (ido-to-end ;; move . files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3633 (delq nil (mapcar
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3634 (lambda (x) (if (string-equal (substring x 0 1) ".") x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3635 ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3636 (if (and default (member default ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3637 (if (or ido-rotate-temp ido-rotate-file-list-default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3638 (unless (equal default (car ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3639 (let ((l ido-temp-list) k)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3640 (while (and l (cdr l) (not (equal default (car (cdr l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3641 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3642 (setq k (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3643 (setcdr l nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3644 (nconc k ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3645 (setq ido-temp-list k)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3646 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3647 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3648 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3649 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3650 (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
3651 (unless ido-input-stack
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3652 (setq ido-temp-list (cons "." ido-temp-list)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3653 (run-hooks 'ido-make-dir-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3654 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3655
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3656 ;; List of the files visible in the current frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3657 (defvar ido-bufs-in-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3658
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3659 (defun ido-get-buffers-in-frames (&optional current)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3660 ;; Return the list of buffers that are visible in the current frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3661 ;; If optional argument `current' is given, restrict searching to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3662 ;; current frame, rather than all frames, regardless of value of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3663 ;; `ido-all-frames'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3664 (let ((ido-bufs-in-frame nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3665 (walk-windows 'ido-get-bufname nil
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3666 (if current
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3667 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3668 ido-all-frames))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3669 ido-bufs-in-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3670
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3671 (defun ido-get-bufname (win)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3672 ;; Used by `ido-get-buffers-in-frames' to walk through all windows
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3673 (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
3674 (unless (or (member buf ido-bufs-in-frame)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3675 (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
3676 ;; 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
3677 ;; 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
3678 ;; put into the list twice.
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3679 (setq ido-bufs-in-frame
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3680 (cons buf ido-bufs-in-frame)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3681
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3682 ;;; FIND MATCHING ITEMS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3683
62985
d1cbfe7309c1 (ido-make-merged-file-list-1): New defun split from
Kim F. Storm <storm@cua.dk>
parents: 62537
diff changeset
3684 (defun ido-set-matches-1 (items &optional do-full)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3685 ;; Return list of matches in items
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3686 (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
3687 (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
3688 (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
3689 (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
3690 (rexq (concat rex0 (if slash ".*/" "")))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3691 (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
3692 (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
3693 (concat "\\`" rex0 (if slash "/" "") "\\'")))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3694 (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
3695 (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
3696 (concat rex0 "/\\'")))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3697 (prefix-re (and full-re (not ido-enable-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3698 (concat "\\`" rexq)))
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3699 (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
3700 (not ido-process-ignore-lists)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3701 ido-enable-prefix
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3702 (= (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
3703 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
3704 (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
3705 (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
3706 (mapc
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3707 (lambda (item)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3708 (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
3709 (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
3710 (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
3711 (= (aref name 0) ?.)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3712 (/= (aref name 0) ?.)))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3713 (string-match re name))
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3714 (cond
74926
d2cfe143b802 (ido-set-matches-1): Never put current buffer first if
Kim F. Storm <storm@cua.dk>
parents: 74654
diff changeset
3715 ((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
3716 (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
3717 (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
3718 (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
3719 (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
3720 ((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
3721 (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
3722 ((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
3723 (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
3724 ((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
3725 (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
3726 (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
3727 t)
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3728 items)
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3729 (invalid-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3730 (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
3731 ;; 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
3732 ;; 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
3733 ;; elsewhere.
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
3734 matches (cdr error))))
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3735 (when prefix-matches
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3736 (ido-trace "prefix match" prefix-matches)
104550
2e78f19a963d Comment.
Glenn Morris <rgm@gnu.org>
parents: 103193
diff changeset
3737 ;; Bug#2042.
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3738 (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
3739 (when suffix-matches
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3740 (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
3741 (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
3742 (when full-matches
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
3743 (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
3744 (setq matches (nconc full-matches matches)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3745 (when (and (null matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3746 ido-enable-flex-matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3747 (> (length ido-text) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3748 (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
3749 (setq re (mapconcat #'regexp-quote (split-string ido-text "") ".*"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3750 (if ido-enable-prefix
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3751 (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
3752 (mapc
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3753 (lambda (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3754 (let ((name (ido-name item)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3755 (if (string-match re name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3756 (setq matches (cons item matches)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3757 items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3758 matches))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3759
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3760
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3761 (defun ido-set-matches ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3762 ;; Set `ido-matches' to the list of items matching prompt
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3763 (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
3764 (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
3765 ido-rotate nil)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3766
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3767 (defun ido-ignore-item-p (name re-list &optional ignore-ext)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3768 ;; 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
3769 (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
3770 (and
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3771 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
3772 (save-match-data
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3773 (let ((ext-list (and ignore-ext ido-ignore-extensions
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3774 completion-ignored-extensions))
65064
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3775 (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
3776 ignorep nextstr
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3777 (flen (length name)) slen)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3778 (while ext-list
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3779 (setq nextstr (car ext-list))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3780 (if (cond
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3781 ((stringp nextstr)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3782 (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
3783 (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
3784 ((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
3785 (t nil))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3786 (setq ignorep t
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3787 ext-list nil
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3788 re-list nil)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3789 (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
3790 (while re-list
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3791 (setq nextstr (car re-list))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3792 (if (cond
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3793 ((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
3794 ((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
3795 (t nil))
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3796 (setq ignorep t
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3797 re-list nil)
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3798 (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
3799 ;; return the result
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3800 (if ignorep
ae16fdfb41ab (ido-ignore-item-p): Use save-match-data.
Kim F. Storm <storm@cua.dk>
parents: 65026
diff changeset
3801 (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
3802 ignorep)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3803
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3804 ;; Private variable used by `ido-word-matching-substring'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3805 (defvar ido-change-word-sub)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3806
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3807 (defun ido-find-common-substring (items subs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3808 ;; Return common string following SUBS in each element of ITEMS.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3809 (let (res
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3810 alist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3811 ido-change-word-sub)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3812 (setq ido-change-word-sub
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3813 (if ido-enable-regexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3814 subs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3815 (regexp-quote subs)))
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3816 (setq res (mapcar #'ido-word-matching-substring items))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3817 (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
3818 (setq alist (mapcar #'ido-makealist res)) ;; could use an OBARRAY
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3819
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3820 ;; 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
3821 (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
3822 (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
3823 (if (eq comp t)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3824 subs
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3825 comp))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3826
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3827 (defun ido-word-matching-substring (word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3828 ;; Return part of WORD before 1st match to `ido-change-word-sub'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3829 ;; 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
3830 (let ((case-fold-search ido-case-fold))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3831 (let ((m (string-match ido-change-word-sub (ido-name word))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3832 (if m
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3833 (substring (ido-name word) m)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3834 ;; else no match
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3835 nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3836
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3837 (defun ido-makealist (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3838 ;; Return dotted pair (RES . 1).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3839 (cons res 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3840
105601
68686d39c93a Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105596
diff changeset
3841 (defun ido-choose-completion-string (choice &rest ignored)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3842 (when (ido-active)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3843 ;; Insert the completion into the buffer where completion was requested.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3844 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3845 (kill-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3846 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3847 ((ido-active t) ;; ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3848 (setq ido-current-directory ""
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3849 ido-text choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3850 ido-exit 'done))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3851 ((not (ido-final-slash choice))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3852 (setq ido-text choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3853 ido-exit 'done))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3854 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3855 (ido-set-current-directory ido-current-directory choice)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3856 (setq ido-exit 'refresh)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3857 (exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3858 t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3859
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3860 (defun ido-completion-help ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3861 "Show possible completions in a *File Completions* buffer."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3862 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3863 (setq ido-rescan nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3864 (let ((temp-buf (get-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3865 display-it full-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3866 (if (and (eq last-command this-command) temp-buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3867 ;; scroll buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3868 (let (win (buf (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3869 (display-buffer temp-buf nil nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3870 (set-buffer temp-buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3871 (setq win (get-buffer-window temp-buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3872 (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
3873 (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
3874 (boundp 'ido-completion-buffer-full))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3875 (set-window-start win (point-min))
62089
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3876 (with-no-warnings
e002770fe3ac (ido-setup-hook): New hook.
Kim F. Storm <storm@cua.dk>
parents: 62051
diff changeset
3877 (set (make-local-variable 'ido-completion-buffer-full) t))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3878 (setq full-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3879 display-it t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3880 (scroll-other-window))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3881 (set-buffer buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3882 (setq display-it t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3883 (if display-it
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3884 (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
3885 (let ((completion-list (sort
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3886 (cond
74652
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3887 (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
3888 (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
3889 (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
3890 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
3891 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
3892 ido-rescan t)
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3893 (ido-set-matches)
ffe7cd324841 (ido-completion-help): Build ido-cur-list and ido-matches
Kim F. Storm <storm@cua.dk>
parents: 74584
diff changeset
3894 (or ido-matches ido-cur-list))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3895 (ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3896 (ido-flatten-merged-list (or ido-matches ido-cur-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3897 ((or full-list ido-completion-buffer-all-completions)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3898 (ido-all-completions))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3899 (t
59995
8f4938738427 (ido-file-extensions-order): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 58458
diff changeset
3900 (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
3901 #'ido-file-lessp)))
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3902 (if (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3903 ;; XEmacs extents are put on by default, doesn't seem to be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3904 ;; any way of switching them off.
46333
a86a0859521a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46292
diff changeset
3905 ;; 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
3906 (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
3907 (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
3908 :help-string "ido "
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3909 :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
3910 '(lambda (x y z) (message "Doesn't work yet, sorry!"))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3911 ;; else running Emacs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3912 ;;(add-hook 'completion-setup-hook 'completion-setup-function)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3913 (display-completion-list completion-list)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3914
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3915 ;;; KILL CURRENT BUFFER
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3916 (defun ido-kill-buffer-at-head ()
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3917 "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
3918 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
3919 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3920 (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
3921 (delete-region (point) (line-end-position))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3922 (let ((enable-recursive-minibuffers t)
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3923 (buf (ido-name (car ido-matches)))
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3924 (nextbuf (cadr ido-matches)))
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3925 (when (get-buffer buf)
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3926 ;; If next match names a buffer use the buffer object; buffer
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3927 ;; name may be changed by packages such as uniquify; mindful
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3928 ;; of virtual buffers.
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3929 (when (and nextbuf (get-buffer nextbuf))
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3930 (setq nextbuf (get-buffer nextbuf)))
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3931 (if (null (kill-buffer buf))
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3932 ;; Buffer couldn't be killed.
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3933 (setq ido-rescan t)
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3934 ;; Else `kill-buffer' succeeds so re-make the buffer list
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3935 ;; taking into account packages like uniquify may rename
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3936 ;; buffers.
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3937 (if (bufferp nextbuf)
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3938 (setq nextbuf (buffer-name nextbuf)))
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3939 (setq ido-default-item nextbuf
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3940 ido-text-init ido-text
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3941 ido-exit 'refresh)
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3942 (exit-minibuffer))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3943
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3944 ;;; DELETE CURRENT FILE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3945 (defun ido-delete-file-at-head ()
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3946 "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
3947 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
3948 (interactive)
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3949 (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
3950 (delete-region (point) (line-end-position))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3951 (let ((enable-recursive-minibuffers t)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3952 (file (ido-name (car ido-matches))))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3953 (if file
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3954 (setq file (concat ido-current-directory file)))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3955 (when (and file
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3956 (file-exists-p file)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3957 (not (file-directory-p file))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3958 (file-writable-p ido-current-directory)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3959 (yes-or-no-p (concat "Delete " file "? ")))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3960 (delete-file file)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3961 ;; Check if file still exists.
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3962 (if (file-exists-p file)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3963 ;; file could not be deleted
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3964 (setq ido-rescan t)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
3965 ;; 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
3966 (setq ido-cur-list (delq (car ido-matches) ido-cur-list)))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3967
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3968
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3969 ;;; VISIT CHOSEN BUFFER
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3970 (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
3971 "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
3972 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
3973 (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
3974 (setq buffer (buffer-name buffer)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3975 (let (win newframe)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3976 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3977 ((eq method 'kill)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3978 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3979 (ido-record-command 'kill-buffer buffer))
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107945
diff changeset
3980 (kill-buffer buffer))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3981
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3982 ((eq method 'other-window)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3983 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3984 (ido-record-command 'switch-to-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3985 (switch-to-buffer-other-window buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3986
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3987 ((eq method 'display)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3988 (display-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3989
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3990 ((eq method 'other-frame)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3991 (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
3992 (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
3993
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3994 ((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
3995 window-system
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3996 (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
3997 (or (eq method 'raise-frame)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
3998 (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
3999 (setq newframe (window-frame win))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4000 (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
4001 (select-window win))
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4002
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4003 ;; (eq method 'selected-window)
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4004 (t
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4005 ;; No buffer in other frames...
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4006 (if record
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4007 (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
4008 (switch-to-buffer buffer)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
4009 ))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4010
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4011
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4012 (defun ido-buffer-window-other-frame (buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4013 ;; Return window pointer if BUFFER is visible in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4014 ;; If BUFFER is visible in the current frame, return nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4015 (let ((blist (ido-get-buffers-in-frames 'current)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4016 ;;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
4017 (if (member buffer blist)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4018 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4019 ;; maybe in other frame or icon
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4020 (get-buffer-window buffer 0) ; better than 'visible
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
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4023
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4024 ;;; ----------- IDONIZED FUNCTIONS ------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4025
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4026 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4027 (defun ido-switch-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4028 "Switch to another buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4029 The buffer is displayed according to `ido-default-buffer-method' -- the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4030 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
4031 in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4032
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4033 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
4034 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
4035 `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
4036 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
4037 their normal keybindings, except for the following: \\<ido-buffer-completion-map>
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4038
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4039 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
4040 list is empty, possibly prompt to create new buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4041
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4042 \\[ido-select-text] Select the current prompt as the buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4043 If no buffer is found, prompt for a new one.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4044
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4045 \\[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
4046 \\[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
4047 \\[ido-complete] Complete a common suffix to the current string that
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4048 matches all buffers. If there is only one match, select that buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4049 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
4050 in a separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4051 \\[ido-edit-input] Edit input string.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4052 \\[ido-fallback-command] Fallback to non-ido version of current command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4053 \\[ido-toggle-regexp] Toggle regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4054 \\[ido-toggle-prefix] Toggle between substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4055 \\[ido-toggle-case] Toggle case-sensitive searching of buffer names.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4056 \\[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
4057 \\[ido-enter-find-file] Drop into `ido-find-file'.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4058 \\[ido-kill-buffer-at-head] Kill buffer at head of buffer list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4059 \\[ido-toggle-ignore] Toggle ignoring buffers listed in `ido-ignore-buffers'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4060 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4061 (ido-buffer-internal ido-default-buffer-method))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4062
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4063 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4064 (defun ido-switch-buffer-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4065 "Switch to another buffer and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4066 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4067 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4068 (interactive)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4069 (ido-buffer-internal 'other-window 'switch-to-buffer-other-window))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4070
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4071 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4072 (defun ido-display-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4073 "Display a buffer in another window but don't select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4074 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4075 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4076 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4077 (ido-buffer-internal 'display 'display-buffer nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4078
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4079 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4080 (defun ido-kill-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4081 "Kill a buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4082 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4083 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4084 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4085 (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
4086
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4087 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4088 (defun ido-insert-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4089 "Insert contents of a buffer in current buffer after point.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4090 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4091 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4092 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4093 (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
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-switch-buffer-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4097 "Switch to another buffer and show it in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4098 The buffer name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4099 For details of keybindings, see `ido-switch-buffer'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4100 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4101 (if ido-mode
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4102 (ido-buffer-internal 'other-frame)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4103 (call-interactively 'switch-to-buffer-other-frame)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4104
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4105 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4106 (defun ido-find-file-in-dir (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4107 "Switch to another file starting from DIR."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4108 (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
4109 (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
4110 (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
4111
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4112 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4113 (defun ido-find-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4114 "Edit file with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4115 The file is displayed according to `ido-default-file-method' -- the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4116 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
4117 visible in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4118
63235
ba92543774db (ido-mode, ido-file-extensions-order, ido-default-file-method,
Juanma Barranquero <lekktu@gmail.com>
parents: 63124
diff changeset
4119 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
4120 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
4121 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
4122 `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
4123 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
4124 except for the following: \\<ido-file-completion-map>
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4125
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4126 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
4127 list is empty, possibly prompt to create new file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4128
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4129 \\[ido-select-text] Select the current prompt as the buffer or file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4130 If no buffer or file is found, prompt for a new one.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4131
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4132 \\[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
4133 \\[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
4134 \\[ido-complete] Complete a common suffix to the current string that
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4135 matches all files. If there is only one match, select that file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4136 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
4137 in a separate window.
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
4138 \\[ido-edit-input] Edit input string (including directory).
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4139 \\[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
4140 \\[ido-merge-work-directories] search for file in the work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4141 \\[ido-forget-work-directory] removes current directory from the work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4142 \\[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
4143 \\[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
4144 \\[ido-make-directory] prompts for a directory to create in current directory.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4145 \\[ido-fallback-command] Fallback to non-ido version of current command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4146 \\[ido-toggle-regexp] Toggle regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4147 \\[ido-toggle-prefix] Toggle between substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4148 \\[ido-toggle-case] Toggle case-sensitive searching of file names.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4149 \\[ido-toggle-vc] Toggle version control for this file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4150 \\[ido-toggle-literal] Toggle literal reading of this file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4151 \\[ido-completion-help] Show list of matching files in separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4152 \\[ido-toggle-ignore] Toggle ignoring files listed in `ido-ignore-files'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4153
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4154 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4155 (ido-file-internal ido-default-file-method))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4156
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4157 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4158 (defun ido-find-file-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4159 "Switch to another file and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4160 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4161 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4162 (interactive)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4163 (ido-file-internal 'other-window 'find-file-other-window))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4164
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4165 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4166 (defun ido-find-alternate-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4167 "Switch to another file and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4168 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4169 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4170 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4171 (ido-file-internal 'alt-file 'find-alternate-file nil "Find alternate file: "))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4172
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4173 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4174 (defun ido-find-file-read-only ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4175 "Edit file read-only with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4176 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4177 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4178 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4179 (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
4180
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4181 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4182 (defun ido-find-file-read-only-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4183 "Edit file read-only in other window with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4184 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4185 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4186 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4187 (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
4188
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4189 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4190 (defun ido-find-file-read-only-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4191 "Edit file read-only in other frame with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4192 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4193 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4194 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4195 (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
4196
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4197 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4198 (defun ido-display-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4199 "Display a file in another window but don't select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4200 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4201 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4202 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4203 (ido-file-internal 'display nil nil nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4204
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4205 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4206 (defun ido-find-file-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4207 "Switch to another file and show it in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4208 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4209 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4210 (interactive)
71240
0b7ea03b3bcd (ido-default-file-method, ido-default-buffer-method):
Kim F. Storm <storm@cua.dk>
parents: 70797
diff changeset
4211 (ido-file-internal 'other-frame 'find-file-other-frame))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4212
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4213 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4214 (defun ido-write-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4215 "Write current buffer to a file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4216 The file name is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4217 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4218 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4219 (let ((ido-process-ignore-lists t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4220 (ido-work-directory-match-only nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4221 (ido-ignore-files (cons "[^/]\\'" ido-ignore-files))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4222 (ido-report-no-match nil)
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
4223 (ido-confirm-unique-completion t)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4224 (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
4225 (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
4226
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4227 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4228 (defun ido-insert-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4229 "Insert contents of file in current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4230 The file name 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)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4233 (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
4234
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4235 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4236 (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
4237 "Call `dired' the ido way.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4238 The directory is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4239 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4240 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4241 (let ((ido-report-no-match nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4242 (ido-auto-merge-work-directories-length -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4243 (ido-file-internal 'dired 'dired nil "Dired: " 'dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4244
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4245 (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
4246 "Call `list-directory' the ido way.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4247 The directory is selected interactively by typing a substring.
75686
514805720b93 Doc fixes.
Kim F. Storm <storm@cua.dk>
parents: 75573
diff changeset
4248 For details of keybindings, see `ido-find-file'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4249 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4250 (let ((ido-report-no-match nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4251 (ido-auto-merge-work-directories-length -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4252 (ido-file-internal 'list-directory 'list-directory nil "List directory: " 'dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4253
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4254 ;;; XEmacs hack for showing default buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4255
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4256 ;; The first time we enter the minibuffer, Emacs puts up the default
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4257 ;; buffer to switch to, but XEmacs doesn't -- presumably there is a
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4258 ;; subtle difference in the two versions of post-command-hook. The
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4259 ;; default is shown for both whenever we delete all of our text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4260 ;; though, indicating its just a problem the first time we enter the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4261 ;; function. To solve this, we use another entry hook for emacs to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4262 ;; show the default the first time we enter the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4263
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4264
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4265 ;;; ICOMPLETE TYPE CODE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4266
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4267 (defun ido-initiate-auto-merge (buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4268 (ido-trace "\n*merge timeout*" buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4269 (setq ido-auto-merge-timer nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4270 (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
4271 (ido-active)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4272 (boundp 'ido-eoinput) ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4273 (let ((contents (buffer-substring-no-properties (minibuffer-prompt-end) ido-eoinput)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4274 (ido-trace "request merge")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4275 (setq ido-use-merged-list 'auto
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4276 ido-text-init contents
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4277 ido-rotate-temp t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4278 ido-exit 'refresh)
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105601
diff changeset
4279 (with-current-buffer buffer
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4280 (ido-tidy))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4281 (throw 'ido contents))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4282
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4283 (defun ido-exhibit ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4284 "Post command hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4285 ;; Find matching files and display a list in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4286 ;; Copied from `icomplete-exhibit' with two changes:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4287 ;; 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
4288 ;; 2. It calls my completion routine rather than the standard completion.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4289
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
4290 (when (ido-active)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4291 (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
4292 (buffer-undo-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4293 try-single-dir-match
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4294 refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4295
72488
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4296 (when ido-trace-enable
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4297 (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
4298 (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
4299 (ido-trace "contents" contents)
a1eb31579f05 (ido-set-matches-1): Fix full matching for subdirs.
Kim F. Storm <storm@cua.dk>
parents: 71803
diff changeset
4300 (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
4301 (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
4302 (ido-trace "rescan" ido-rescan))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4303
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4304 (save-excursion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4305 (goto-char (point-max))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4306 ;; 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
4307 (unless (boundp 'ido-eoinput)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4308 ;; 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
4309 (make-local-variable 'ido-eoinput))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4310 (setq ido-eoinput (point))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4311
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4312 ;; Handle explicit directory changes
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4313 (cond
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4314 ((memq ido-cur-item '(buffer list))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4315 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4316
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4317 ((= (length contents) 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4318 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4319
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4320 ((= (length contents) 1)
69542
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4321 (cond
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4322 ((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
4323 (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
4324 (setq refresh t))
69748
e44b79389d65 (ido-unc-hosts-cache): New defvar.
Kim F. Storm <storm@cua.dk>
parents: 69738
diff changeset
4325 ((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
4326 (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
4327 (ido-is-root-directory)))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4328 (ido-set-current-directory "//")
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4329 (setq refresh t))
4a6d7cd41a8f (ido-cache-ftp-work-directory-time): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 69524
diff changeset
4330 ))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4331
74337
ee9b338cccea 2006-11-30 Micha«³l Cadilhac <michael.cadilhac@lrde.org>
Kim F. Storm <storm@cua.dk>
parents: 74020
diff changeset
4332 ((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
4333 (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
4334 (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
4335 (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
4336 (when (ido-is-slow-ftp-host)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4337 (setq ido-exit 'fallback)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4338 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4339 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4340
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4341 ((ido-final-slash contents) ;; xxx/
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4342 (ido-trace "final slash" contents)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4343 (cond
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4344 ((string-equal contents "~/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4345 (ido-set-current-home)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4346 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4347 ((string-equal contents "../")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4348 (ido-up-directory t)
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 ((string-equal contents "./")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4351 (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
4352 ((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
4353 (ido-trace "new home" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4354 (ido-set-current-home contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4355 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4356 ((string-match "[$][A-Za-z0-9_]+/\\'" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4357 (let ((exp (condition-case ()
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4358 (expand-file-name
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4359 (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
4360 ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4361 (error nil))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4362 (ido-trace contents exp)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4363 (when (and exp (file-directory-p exp))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4364 (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
4365 (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
4366 (setq refresh t))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4367 ((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
4368 (string-equal (substring contents 1) ":/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4369 (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
4370 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4371 ((string-equal (substring contents -2 -1) "/")
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4372 (ido-set-current-directory
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4373 (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
4374 (expand-file-name "/" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4375 "/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4376 (setq refresh t))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4377 ((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
4378 (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
4379 (ido-set-current-directory
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4380 (concat ido-current-directory (file-name-directory contents)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4381 (setq refresh t))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4382 (t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4383 (ido-trace "try single dir")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4384 (setq try-single-dir-match t))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4385
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4386 ((and (string-equal (substring contents -2 -1) "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4387 (not (string-match "[$]" contents)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4388 (ido-set-current-directory
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4389 (cond
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4390 ((= (length contents) 2)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4391 "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4392 (ido-matches
72792
e8c7ac0523cb (ido-edit-input, ido-complete, ido-take-first-match)
Kim F. Storm <storm@cua.dk>
parents: 72656
diff changeset
4393 (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
4394 (t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4395 (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
4396 (setq ido-text-init (substring contents -1))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4397 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4398
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4399 ((and (not ido-use-merged-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4400 (not (ido-final-slash contents))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4401 (eq ido-try-merged-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4402 (numberp ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4403 (> ido-auto-merge-work-directories-length 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4404 (= (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
4405 (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
4406 (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
4407 (not (input-pending-p)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4408 (setq ido-use-merged-list 'auto
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4409 ido-text-init contents
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4410 ido-rotate-temp t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4411 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4412
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4413 (t nil))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4414
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4415 (when refresh
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4416 (ido-trace "refresh on /" ido-text-init)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4417 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4418 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4419
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4420 ;; Update the list of matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4421 (setq ido-text contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4422 (ido-set-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4423 (ido-trace "new " ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4424
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4425 (when (and ido-enter-matching-directory
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4426 ido-matches
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4427 (or (eq ido-enter-matching-directory 'first)
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4428 (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
4429 (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
4430 (or try-single-dir-match
65012
70976e57cb56 (ido-enter-matching-directory): Rename from
Kim F. Storm <storm@cua.dk>
parents: 64983
diff changeset
4431 (eq ido-enter-matching-directory t)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4432 (ido-trace "single match" (car ido-matches))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4433 (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
4434 (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
4435 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4436 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4437
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4438 (when (and (not ido-matches)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4439 (not ido-directory-nonreadable)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4440 (not ido-directory-too-big)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4441 ;; ido-rescan ?
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4442 ido-process-ignore-lists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4443 ido-ignored-list)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4444 (let ((ido-process-ignore-lists nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4445 (ido-rotate ido-rotate)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4446 (ido-cur-list ido-ignored-list))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4447 (ido-trace "try all" ido-ignored-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4448 (ido-set-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4449 (when ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4450 (ido-trace "found " ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4451 (setq ido-rescan t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4452 (setq ido-process-ignore-lists-inhibit t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4453 (setq ido-text-init ido-text)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4454 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4455 (exit-minibuffer)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4456
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4457 (when (and
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4458 ido-rescan
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4459 (not ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4460 (memq ido-cur-item '(file dir))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4461 (not (ido-is-root-directory))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4462 (> (length contents) 1)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4463 (not (string-match "[$]" contents))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4464 (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4465 (not ido-directory-too-big))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4466 (ido-trace "merge?")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4467 (if ido-use-merged-list
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4468 (ido-undo-merge-work-directory contents nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4469 (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
4470 (numberp ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4471 (= ido-auto-merge-work-directories-length 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4472 (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
4473 (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
4474 (not (input-pending-p)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4475 (ido-trace "\n*start timer*")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4476 (setq ido-auto-merge-timer
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4477 (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
4478
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4479 (setq ido-rescan t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4480
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4481 (if (and ido-use-merged-list
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4482 ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4483 (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
4484 (progn
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4485 (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
4486 (setq ido-use-merged-list t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4487 ido-exit 'keep
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4488 ido-text-init ido-text)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4489 (exit-minibuffer)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4490
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4491 ;; Insert the match-status information:
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4492 (ido-set-common-completion)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4493 (let ((inf (ido-completions
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4494 contents
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4495 minibuffer-completion-table
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4496 minibuffer-completion-predicate
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4497 (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
4498 (setq ido-show-confirm-message nil)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4499 (ido-trace "inf" inf)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4500 (insert inf))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
4501 ))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4502
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4503 (defun ido-completions (name candidates predicate require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4504 ;; Return the string that is displayed after the user's text.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4505 ;; Modified from `icomplete-completions'.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4506
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4507 (let* ((comps ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4508 (ind (and (consp (car comps)) (> (length (cdr (car comps))) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4509 ido-merged-indicator))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4510 first)
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 (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
4513 (put-text-property 0 1 'face 'ido-indicator ind))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4514
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4515 (if (and ido-use-faces comps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4516 (let* ((fn (ido-name (car comps)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4517 (ln (length fn)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4518 (setq first (format "%s" fn))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4519 (put-text-property 0 ln 'face
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4520 (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
4521 (if ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4522 'ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4523 'ido-only-match)
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
4524 'ido-first-match)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4525 first)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4526 (if ind (setq first (concat first ind)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4527 (setq comps (cons first (cdr comps)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4528
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4529 (cond ((null comps)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4530 (cond
103191
1ea11abb22f8 Add proper support for confirm-nonexistent-file-or-buffer
Kim F. Storm <storm@cua.dk>
parents: 100908
diff changeset
4531 (ido-show-confirm-message
103193
5e04d99c2e49 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 103191
diff changeset
4532 (or (nth 10 ido-decorations) " [Confirm]"))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4533 (ido-directory-nonreadable
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4534 (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
4535 (ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4536 (or (nth 9 ido-decorations) " [Too big]"))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4537 (ido-report-no-match
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4538 (nth 6 ido-decorations)) ;; [No match]
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4539 (t "")))
63476
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4540 (ido-incomplete-regexp
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4541 (concat " " (car comps)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4542 ((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
4543 (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
4544 (= (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
4545 ;; 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
4546 ;; 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
4547 ;; complete match
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4548 (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
4549 (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
4550 (ido-name (car comps))))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4551 ""
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4552 ;; 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
4553 (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
4554 (ido-name (car comps))
a02cb15bf34c 2005-06-15 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63430
diff changeset
4555 (nth 5 ido-decorations)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4556 (if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4557 (t ;multiple matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4558 (let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4559 (alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4560 (apply
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4561 #'concat
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4562 (cdr (apply
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4563 #'nconc
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4564 (mapcar
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4565 (lambda (com)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4566 (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
4567 (setq items (1- items))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4568 (cond
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4569 ((< items 0) ())
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4570 ((= 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
4571 (t
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4572 (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
4573 (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
4574 (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
4575 (not (string= str first))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4576 (ido-final-slash str))
63066
bf364cb1c987 (ido-first-match, ido-only-match, ido-subdir)
Kim F. Storm <storm@cua.dk>
parents: 62985
diff changeset
4577 (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
4578 str)))))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
4579 comps))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4580
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4581 (concat
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4582 ;; 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
4583 (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
4584 (> (length ido-common-match-string) (length name)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4585 (concat (nth 4 ido-decorations) ;; [ ... ]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4586 (substring ido-common-match-string (length name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4587 (nth 5 ido-decorations)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4588 ;; list all alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4589 (nth 0 ido-decorations) ;; { ... }
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4590 alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4591 (nth 1 ido-decorations)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4592
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4593 (defun ido-minibuffer-setup ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4594 "Minibuffer setup hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4595 ;; 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
4596 (when (ido-active)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4597 (add-hook 'pre-command-hook 'ido-tidy nil t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4598 (add-hook 'post-command-hook 'ido-exhibit nil t)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
4599 (when (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4600 (ido-exhibit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4601 (goto-char (point-min)))
75391
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4602 (run-hooks 'ido-minibuffer-setup-hook)
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4603 (when ido-initial-position
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4604 (goto-char (+ (minibuffer-prompt-end) ido-initial-position))
1859649395ed (ido-initial-position): New variable.
Kim F. Storm <storm@cua.dk>
parents: 75381
diff changeset
4605 (setq ido-initial-position nil))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4606
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4607 (defun ido-tidy ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4608 "Pre command hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4609 ;; Remove completions display, if any, prior to new user input.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4610 ;; Copied from `icomplete-tidy'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4611
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4612 (when ido-auto-merge-timer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4613 (ido-trace "\n*cancel timer*" this-command)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4614 (cancel-timer ido-auto-merge-timer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4615 (setq ido-auto-merge-timer nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4616
75381
3e93f595966f (ido-active): Add xemacs test from ido-minibuffer-setup.
Kim F. Storm <storm@cua.dk>
parents: 75347
diff changeset
4617 (if (ido-active)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4618 (if (and (boundp 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4619 ido-eoinput)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4620
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4621 (if (> ido-eoinput (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4622 ;; Oops, got rug pulled out from under us - reinit:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4623 (setq ido-eoinput (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4624 (let ((buffer-undo-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4625 (delete-region ido-eoinput (point-max))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4626
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4627 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4628 (make-local-variable 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4629 (setq ido-eoinput 1))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4630
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4631 (defun ido-summary-buffers-to-end ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4632 ;; Move the summaries to the end of the buffer list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4633 ;; This is an example function which can be hooked on to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4634 ;; `ido-make-buffer-list-hook'. Any buffer matching the regexps
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4635 ;; `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
4636 (let ((summaries (delq nil (mapcar
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4637 (lambda (x)
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
4638 (if (or
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4639 (string-match "Summary" x)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4640 (string-match "output\\*\\'" x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4641 x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4642 ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4643 (ido-to-end summaries)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4644
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4645 ;;; Helper functions for other programs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4646
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
4647 (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
4648 (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
4649 (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
4650
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4651 ;;;###autoload
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4652 (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
4653 "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
4654 Return the name of a buffer selected.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4655 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
4656 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
4657 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
4658 (let* ((ido-current-directory nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4659 (ido-directory-nonreadable nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4660 (ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4661 (ido-context-switch-command 'ignore)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4662 (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
4663 (if (eq ido-exit 'fallback)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4664 (let ((read-buffer-function nil))
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
4665 (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
4666 (read-buffer prompt default require-match))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4667 buf)))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4668
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4669 ;;;###autoload
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4670 (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
4671 "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
4672 Read file name, prompting with PROMPT and completing in directory DIR.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4673 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
4674 (let (filename)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4675 (cond
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4676 ((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
4677 (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
4678 (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
4679 (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
4680 (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
4681 (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
4682 (setq filename 'fallback)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4683 ((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
4684 (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
4685 (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
4686 (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
4687 (ido-context-switch-command
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4688 (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
4689 (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
4690 (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
4691 (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
4692 (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
4693 (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
4694 (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
4695 (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
4696 (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
4697 (not default-filename)))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4698 (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
4699 (ido-find-literal nil))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4700 (setq ido-exit nil)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4701 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4702 (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
4703 (cond
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4704 ((eq ido-exit 'fallback)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4705 (setq filename 'fallback))
62378
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4706 ((eq ido-exit 'dired)
4d270efed583 (ido-magic-forward-char, ido-magic-backward-char)
Kim F. Storm <storm@cua.dk>
parents: 62089
diff changeset
4707 (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
4708 (filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4709 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4710 (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
4711 (t
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4712 (setq filename 'fallback)))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4713 (if (eq filename 'fallback)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4714 (let ((read-file-name-function nil))
64166
fad9662db4a9 (ido-before-fallback-functions): New hook.
Kim F. Storm <storm@cua.dk>
parents: 64091
diff changeset
4715 (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
4716 (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
4717 filename)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4718
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4719 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4720 (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
4721 "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
4722 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
4723 See `read-directory-name' for additional parameters."
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4724 (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
4725 (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
4726 (ido-context-switch-command 'ignore)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4727 ido-saved-vc-hb
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4728 (ido-current-directory (ido-expand-directory dir))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4729 (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
4730 (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
4731 (ido-directory-too-big-p ido-current-directory)))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4732 (ido-work-directory-index -1)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
4733 (ido-work-file-index -1))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4734 (setq filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4735 (ido-read-internal 'dir prompt 'ido-file-history default-dirname mustmatch initial))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4736 (if filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4737 (if (and (stringp filename) (string-equal filename "."))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4738 ido-current-directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4739 (concat ido-current-directory filename)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4740
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4741 ;;;###autoload
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4742 (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
4743 "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
4744 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
4745 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
4746 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
4747 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
4748 with `completing-read'.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4749 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
4750 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
4751 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
4752 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
4753 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
4754 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
4755 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
4756 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
4757 (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
4758 (ido-directory-nonreadable nil)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4759 (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
4760 (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
4761 (ido-choice-list choices))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4762 (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
4763
98110
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4764 (defun ido-unload-function ()
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4765 "Unload the Ido library."
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4766 (ido-mode -1)
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4767 (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
4768 ;; continue standard unloading
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4769 nil)
c4934c5221ea * ido.el (ido-unload-function): New function.
Juanma Barranquero <lekktu@gmail.com>
parents: 98099
diff changeset
4770
97901
44cca67de748 Move provide statement to the end of the file.
Chong Yidong <cyd@stupidchicken.com>
parents: 97248
diff changeset
4771 (provide 'ido)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4772
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87110
diff changeset
4773 ;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4774 ;;; ido.el ends here