annotate lisp/ido.el @ 58195:c12b583f54b9

Fixed these problems: ** Clicking on partially visible lines fails From: David Kastrup <dak@gnu.org> Date: 27 Apr 2004 16:42:58 +0200 I had gnus display a mouse-highlighted line (a URL from browse-url) partially at the bottom of its window. If I click with middle mouse key on it, the window gets recentered while I hold the mouse key pressed. If I release it, the window returns into its old position (cursor in top row) and nothing happens, presumably because the click was not registered on the line itself, but on the magically recentered version. That is a nuisance. Recentering of even partially visible click targets should only happen if window-point moves there, but not at the time of the click. From the moment I hold down a key until it gets released, the displayed window portion should not change, with the sole exception of scrolling when dragging at the edge of the screen. (progn (setq line-spacing 4) (dotimes (i (window-height)) (insert "\n" (int-to-string i))) (forward-line -2) (recenter -1)) ** Can't drag modeline when mouse-autoselect-window is set From: Klaus Zeitler <kzeitler@lucent.com> Date: Mon, 11 Oct 2004 11:14:49 +0200 1. start emacs -q --no-site-file 2. set variable mouse-autoselect-window to t 3. split-window-vertically now I can drag the modeline only upwards but not downwards
author Kim F. Storm <storm@cua.dk>
date Sat, 13 Nov 2004 01:40:36 +0000
parents 668623fd68b1
children 1708184cc8da e24e2e78deda
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
55362
b12eb39818e1 Update copyright and commentary.
Kim F. Storm <storm@cua.dk>
parents: 55361
diff changeset
3 ;; Copyright (C) 1996-2004 Free Software Foundation, Inc.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
5 ;; Author: Kim F. Storm <storm@cua.dk>
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
6 ;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
7 ;; Keywords: extensions convenience
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
8
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
10
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
14 ;; any later version.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
15
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
19 ;; GNU General Public License for more details.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
20
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
24 ;; Boston, MA 02111-1307, USA.
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 ;;; Acknowledgements
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 ;; Infinite amounts of gratitude goes to Stephen Eglen <stephen@cns.ed.ac.uk>
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
29 ;; who wrote iswitch-buffer mode - from which I ripped off 99% of the code
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
30 ;; for ido-switch-buffer and found the inspiration for ido-find-file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
31 ;; The ido package would never have existed without his work.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
32
55362
b12eb39818e1 Update copyright and commentary.
Kim F. Storm <storm@cua.dk>
parents: 55361
diff changeset
33 ;; Also thanks to Klaus Berndl, Rohit Namjoshi, Robert Fenk, Alex
b12eb39818e1 Update copyright and commentary.
Kim F. Storm <storm@cua.dk>
parents: 55361
diff changeset
34 ;; Schroeder, Bill Benedetto, Stephen Eglen, and many others for bug
b12eb39818e1 Update copyright and commentary.
Kim F. Storm <storm@cua.dk>
parents: 55361
diff changeset
35 ;; fixes and improvements.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
36
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
37 ;;; History
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
38
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
39 ;; Since I discovered Stephen Eglen's excellent iswitchb package, I just
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
40 ;; couldn't live without it, but once being addicted to switching buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
41 ;; with a minimum of keystrokes, I soon found that opening files in the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
42 ;; old-fashioned way was just too slow - so I decided to write a package
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
43 ;; which could open files with the same speed and ease as iswitchb could
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
44 ;; switch buffers.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
45
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
46 ;; I originally wrote a separate ifindf.el package based on a copy of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
47 ;; iswitchb.el, which did for opening files what iswitchb did for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
48 ;; switching buffers. Along the way, I corrected a few errors in
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
49 ;; ifindf which could have found its way back into iswitchb, but since
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
50 ;; most of the functionality of the two package was practically
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
51 ;; identical, I decided that the proper thing to do was to merge my
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
52 ;; ifindf package back into iswitchb.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
53 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
54 ;; This is basically what ido (interactively do) is all about; but I
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
55 ;; found it ackward to merge my changes into the "iswitchb-" namespace,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
56 ;; so I invented a common "ido-" namespace for the merged packages.
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 ;; This version is based on ido.el version 1.57 released on
55362
b12eb39818e1 Update copyright and commentary.
Kim F. Storm <storm@cua.dk>
parents: 55361
diff changeset
59 ;; gnu.emacs.sources adapted for emacs 21.5 to use command remapping
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
60 ;; and optionally hooking the read-buffer and read-file-name functions.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
61 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
62 ;; Prefix matching was added by Klaus Berndl <klaus.berndl@sdm.de> based on
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
63 ;; an idea of Yuji Minejima <ggb01164@nifty.ne.jp> and his mcomplete-package.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
64
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
65
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
66 ;;; Commentary:
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 ;; Ido - interactive do - switches between buffers and opens files and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
69 ;; directories with a minimum of keystrokes. It is a superset of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
70 ;; iswitchb, the interactive buffer switching package by Stephen Eglen.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
71
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
72 ;; Interactive substring matching
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 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
75 ;; 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
76 ;; matching the substring are displayed as you type. The list is
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
77 ;; ordered so that the most recent buffers or files visited come at
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
78 ;; the start of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
79 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
80 ;; 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
81 ;; 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
82 ;; 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
83 ;; 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
84 ;; 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
85 ;; 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
86 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
87 ;; 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
88 ;; all of the matching buffers or files as you type.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
89 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
90 ;; Example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
91 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
92 ;; If I have two buffers called "123456" and "123", with "123456" the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
93 ;; 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
94 ;; presented with the list of all the buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
95 ;;
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
96 ;; Buffer: {123456,123}
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
97 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
98 ;; If I then press 2:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
99 ;; Buffer: 2[3]{123456,123}
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
100 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
101 ;; The list in {...} are the matching buffers, most recent first
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
102 ;; (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
103 ;; list by default). At any time I can select the item at the head of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
104 ;; the list by pressing RET. I can also bring the put the first
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
105 ;; element at the end of the list by pressing C-s or [right], or put
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
106 ;; the last element at the head of the list by pressing C-r or [left].
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
107 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
108 ;; The item in [...] indicates what can be added to my input by
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
109 ;; 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
110
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
111 ;; So, I press TAB:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
112 ;; Buffer: 23{123456,123}
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
113 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
114 ;; At this point, I still have two matching buffers.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
115 ;; 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
116 ;; 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
117 ;; top of the list and then RET to select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
118 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
119 ;; However, if I type 4, I only have one match left:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
120 ;; Buffer: 234[123456] [Matched]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
121 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
122 ;; Since there is only one matching buffer left, it is given in [] and we
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
123 ;; see the text [Matched] afterwards. I can now press TAB or RET to go
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
124 ;; to that buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
125 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
126 ;; If however, I now type "a":
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
127 ;; Buffer: 234a [No match]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
128 ;; 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
129 ;; prompted to create a new buffer called "234a".
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
130 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
131 ;; Of course, where this function comes in really useful is when you
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
132 ;; can specify the buffer using only a few keystrokes. In the above
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
133 ;; example, the quickest way to get to the "123456" file would be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
134 ;; 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
135 ;; with 4 in its name).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
136
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
137 ;; 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
138 ;; directories in the current directory is provided in the same
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
139 ;; fashion as the buffers above. The files and directories are
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
140 ;; normally sorted in alphabetical order, but the most recently
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
141 ;; visited directory is placed first to speed up navigating to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
142 ;; directories that you have visited recently.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
143 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
144 ;; In addition to scrolling through the list using [right] and [left],
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
145 ;; 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
146 ;; or previous subdirectory.
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 ;; To go down into a subdirectory, and continue the file selection on
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
149 ;; the files in that directory, simply move the directory to the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
150 ;; of the list and hit RET.
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 ;; To go up to the parent directory, delete any partial file name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
153 ;; already specified (e.g. using [backspace]) and hit [backspace].
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
154 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
155 ;; To go to the root directory (on the current drive), enter two
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
156 ;; slashes. On MS-DOS or Windows, to select the root of another
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
157 ;; 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
158 ;; files on other hosts using the ange-ftp notations `/host:' and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
159 ;; `/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
160 ;; to inhibit the ido substring matching for ftp access.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
161 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
162 ;; If for some reason you cannot specify the proper file using
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
163 ;; 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
164 ;; You can also press C-b to drop into ido-switch-buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
165
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
166 ;; 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
167 ;; keybindings and features.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
168 ;; (describe-function 'ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
169
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
170 ;; Hidden buffers and files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
171 ;; ------------------------
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 ;; Normally, ido does not include hidden buffers (whose name starts
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
174 ;; with a space) and hidden files and directories (whose name starts
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
175 ;; with `.') in the list of possible completions. However, if the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
176 ;; substring you enter does not match any of the visible buffers or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
177 ;; files, ido will automatically look for completions among the hidden
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
178 ;; buffers or files.
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 ;; 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
181
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
182 ;; Additional functionality
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
183 ;; ------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
184 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
185 ;; 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
186 ;; pressing C-k. If the buffer needs saving, you will be queried
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
187 ;; before the buffer is killed.
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 ;; 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
190 ;; 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
191 ;; asked for confirmation before the file is deleted.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
192 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
193 ;; 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
194 ;; 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
195 ;; 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
196 ;; switch back to buffer selection with C-b.
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 ;; Prefix matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
199 ;; ---------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
200 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
201 ;; 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
202 ;; PREFIX and then hitting TAB (or another completion key). Cause of this
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
203 ;; 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
204 ;; addition to the default substring-matching-method (look above) also the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
205 ;; prefix-matching-method. The kind of matching is the only difference to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
206 ;; the description of the substring-matching above.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
207 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
208 ;; You can toggle prefix matching with C-p.
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 ;; Example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
211 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
212 ;; If you have again two Buffers "123456" and "123" then hitting "2" does
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
213 ;; not match because "2" is not a PREFIX in any of the buffer-names. This
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
214 ;; is the only difference between the substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
215
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
216 ;; Flexible matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
217 ;; -----------------
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 ;; 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
220 ;; matching (unless regexp matching is active) to find possible matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
221 ;; 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
222 ;; the normal prefix or substring matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
223 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
224 ;; The flexible matching implies that any item which simply contains all
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
225 ;; of the entered characters in the specified sequence will match.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
226 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
227 ;; Example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
228 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
229 ;; If you have four files "alpha", "beta", "gamma", and "delta",
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
230 ;; entering "aa" will match "alpha" and "gamma", while "ea" matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
231 ;; "beta" and "delta". If prefix matching is also active, "aa" only
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
232 ;; matches "alpha", while "ea" does not match any files.
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 ;; Regexp matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
235 ;; ---------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
236 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
237 ;; There is limited provision for regexp matching within ido,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
238 ;; enabled through `ido-enable-regexp' (toggle with C-t).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
239 ;; This allows you to type `c$' for example and see all file names
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
240 ;; ending in `c'. This facility is quite limited though in two
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
241 ;; respects. First, you can't currently type in expressions like
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
242 ;; `[0-9]' directly -- you have to type them in when ido-enable-regexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
243 ;; is nil and then toggle on the regexp functionality. Likewise,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
244 ;; don't enter an expression containing `\' in regexp mode. If you
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
245 ;; try, ido gets confused, so just hit C-g and try again. Secondly,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
246 ;; no completion mechanism is currently offered with regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
247
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 ;; Customization
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
250 ;; -------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
251 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
252 ;; Customize the `ido' group to change the `ido' functionality.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
253 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
254 ;; To modify the keybindings, use the hook provided. For example:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
255 ;;(add-hook 'ido-define-mode-map-hook 'ido-my-keys)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
256 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
257 ;;(defun ido-my-keys ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
258 ;; "Add my keybindings for ido."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
259 ;; (define-key ido-mode-map " " 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
260 ;; )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
261
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
262 ;; Seeing all the matching buffers or files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
263 ;; ----------------------------------------
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 ;; 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
266 ;; line of the minibuffer. Normally, the minibuffer window will grow
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
267 ;; to show you more of the matching files (depending on the setting
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
268 ;; of the variables `resize-mini-windows' and `max-mini-window-height').
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
269 ;; If you want ido to behave differently from the default minibuffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
270 ;; resizing behaviour, set the variable `ido-max-window-height'.
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 ;; Also, to improve the responsiveness of ido, the maximum number of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
273 ;; matching items is limited to 12, but you can increase or removed
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
274 ;; this limit via the `ido-max-prospects' variable.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
275
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
276 ;; 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
277 ;; hit ? or press TAB when there are no further completions to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
278 ;; substring. Repeated TAB presses will scroll you through this
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
279 ;; separate buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
280
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
281 ;; Changing the list of files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
282 ;; --------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
283
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
284 ;; By default, the list of current files is most recent first,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
285 ;; oldest last, with the exception that the files visible in the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
286 ;; 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
287 ;; allow other functions to order the list. For example, if you add:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
288 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
289 ;; (add-hook 'ido-make-buffer-list-hook 'ido-summary-buffers-to-end)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
290 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
291 ;; then all files matching "Summary" are moved to the end of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
292 ;; 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
293 ;; 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
294 ;; end of the list (these are created by AUCTeX when compiling.)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
295 ;; Other functions could be made available which alter the list of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
296 ;; matching files (either deleting or rearranging elements.)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
297
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
298 ;; Highlighting
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
299 ;; ------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
300
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
301 ;; The highlighting of matching items is controlled via ido-use-faces.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
302 ;; The faces used are ido-first-match-face, ido-only-match-face and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
303 ;; ido-subdir-face.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
304 ;; Colouring of the matching item was suggested by
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
305 ;; Carsten Dominik (dominik@strw.leidenuniv.nl).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
306
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
307 ;; Replacement for read-buffer and read-file-name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
308 ;; ----------------------------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
309
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
310 ;; 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
311 ;; in replacements for the normal buffer and file name reading
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
312 ;; functions `read-buffer' and `read-file-name'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
313
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
314 ;; 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
315 ;; variable `ido-everywhere'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
316
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
317 ;; Using ido-like behaviour in other lisp packages
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
318 ;; -----------------------------------------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
319
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
320 ;; If you don't want to rely on the `ido-everywhere' functionality,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
321 ;; ido-read-buffer, ido-read-file-name, and ido-read-directory-name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
322 ;; 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
323 ;; or a directory name in the `ido' way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
324
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
325
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
326 ;;; Code:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
327
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
328 (provide 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
329
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
330 ;;; User Variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
331 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
332 ;; These are some things you might want to change.
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 (defun ido-fractionp (n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
335 (and (numberp n) (> n 0.0) (<= n 1.0)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
336
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
337 (defgroup ido nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
338 "Switch between files using substrings."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
339 :group 'extensions
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
340 :group 'convenience
57805
668623fd68b1 (group ido): Add :version keyword.
Kim F. Storm <storm@cua.dk>
parents: 57211
diff changeset
341 :version "21.4"
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
342 :link '(emacs-commentary-link :tag "Commentary" "ido.el")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
343 :link '(emacs-library-link :tag "Lisp File" "ido.el"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
344
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
345 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
346 (defcustom ido-mode nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
347 "Determines for which functional group \(buffer and files) ido behavior
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
348 should be enabled. The following values are possible:
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
349 - `buffer': Turn only on ido buffer behavior \(switching, killing,
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
350 displaying...)
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
351 - `file': Turn only on ido file behavior \(finding, writing, inserting...)
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
352 - `both': Turn on ido buffer and file behavior.
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
353 - `nil': Turn off any ido switching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
354
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
355 Setting this variable directly does not take effect;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
356 use either \\[customize] or the function `ido-mode'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
357 :set #'(lambda (symbol value)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
358 (ido-mode value))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
359 :initialize 'custom-initialize-default
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
360 :require 'ido
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
361 :link '(emacs-commentary-link "ido.el")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
362 :set-after '(ido-save-directory-list-file)
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-everywhere nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
370 "Use ido everywhere for reading file names and directories.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
371 Setting this variable directly does not work. Use `customize' or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
372 call the function `ido-everywhere'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
373 :set #'(lambda (symbol value)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
374 (ido-everywhere value))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
375 :initialize 'custom-initialize-default
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
376 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
377 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
378
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
379 (defcustom ido-case-fold case-fold-search
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
380 "*Non-nil if searching of buffer and file names should ignore case."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
381 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
382 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
383
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
384 (defcustom ido-ignore-buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
385 '("\\` ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
386 "*List of regexps or functions matching buffer names to ignore.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
387 For example, traditional behavior is not to list buffers whose names begin
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
388 with a space, for which the regexp is `\\` '. See the source file for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
389 example functions that filter buffernames."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
390 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
391 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
392
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
393 (defcustom ido-ignore-files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
394 '("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
395 "*List of regexps or functions matching file names to ignore.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
396 For example, traditional behavior is not to list files whose names begin
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
397 with a #, for which the regexp is `\\`#'. See the source file for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
398 example functions that filter filenames."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
399 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
400 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
401
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
402 (defcustom ido-ignore-extensions t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
403 "*Non-nil means ignore files in completion-ignored-extensions list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
404 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
405 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
406
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
407 (defcustom ido-show-dot-for-dired nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
408 "*Non-nil means to always put . as the first item in file name lists.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
409 This allows the current directory to be opened immediate with `dired'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
410 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
411 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
412
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
413 (defcustom ido-ignore-directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
414 '("\\`CVS/" "\\`\\.\\./" "\\`\\./")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
415 "*List of regexps or functions matching sub-directory names to ignore."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
416 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
417 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
418
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
419 (defcustom ido-ignore-directories-merge nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
420 "*List of regexps or functions matching directory names to ignore during merge.
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
421 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
422 in merged file and directory lists."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
423 :type '(repeat (choice regexp function))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
424 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
425
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
426 ;;; Examples for setting the value of ido-ignore-buffers
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
427 ;(defun ido-ignore-c-mode (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
428 ; "Ignore all c mode buffers -- example function for ido."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
429 ; (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
430 ; (set-buffer name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
431 ; (string-match "^C$" mode-name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
432 ;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
433 ;(setq ido-ignore-buffers '("^ " ido-ignore-c-mode))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
434
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
435 ;;; Examples for setting the value of ido-ignore-files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
436 ;(setq ido-ignore-files '("^ " "\\.c$" "\\.h$"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
437
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
438 (defcustom ido-default-file-method 'always-frame
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
439 "*How to switch to new file when using `ido-find-file'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
440 Possible values:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
441 `samewindow' Show new file in same window
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
442 `otherwindow' Show new file in another window (same frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
443 `display' Display file in another window without switching to it
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
444 `otherframe' Show new file in another frame
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
445 `maybe-frame' If a file is visible in another frame, prompt to ask if you
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
446 you want to see the file in the same window of the current
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
447 frame or in the other frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
448 `always-frame' If a file is visible in another frame, raise that
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
449 frame. Otherwise, visit the file in the same window."
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
450 :type '(choice (const samewindow)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
451 (const otherwindow)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
452 (const display)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
453 (const otherframe)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
454 (const maybe-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
455 (const always-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
456 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
457
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
458 (defcustom ido-default-buffer-method 'always-frame
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
459 "*How to switch to new buffer when using `ido-switch-buffer'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
460 See ido-default-file-method for details."
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
461 :type '(choice (const samewindow)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
462 (const otherwindow)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
463 (const display)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
464 (const otherframe)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
465 (const maybe-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
466 (const always-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
467 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
468
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
469 (defcustom ido-enable-flex-matching nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
470 "*Non-nil means that `ido' will do flexible string matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
471 Flexible matching means that if the entered string does not
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
472 match any item, any item containing the entered characters
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
473 in the given sequence will match."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
474 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
475 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
476
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
477
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
478 (defcustom ido-enable-regexp nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
479 "*Non-nil means that `ido' will do regexp matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
480 Value can be toggled within `ido' using `ido-toggle-regexp'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
481 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
482 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
483
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
484 (defcustom ido-enable-prefix nil
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
485 "*Non-nil means only match if the entered text is a prefix of file name.
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
486 This behavior is like the standard emacs-completion.
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
487 Nil means to match if the entered text is an arbitrary substring.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
488 Value can be toggled within `ido' using `ido-toggle-prefix'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
489 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
490 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
491
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
492 (defcustom ido-enable-dot-prefix nil
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
493 "*Non-nil means to match leading dot as prefix.
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
494 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
495 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
496 :type 'boolean
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
497 :group 'ido)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
498
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
499 (defcustom ido-confirm-unique-completion nil
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
500 "*Non-nil means that even a unique completion must be confirmed.
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
501 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
502 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
503 :type 'boolean
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
504 :group 'ido)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
505
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
506 (defcustom ido-cannot-complete-command 'ido-completion-help
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
507 "*Command run when `ido-complete' can't complete any more.
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
508 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
509 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
510 `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
511 :type 'function
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
512 :group 'ido)
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
513
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
514
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
515 (defcustom ido-record-commands t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
516 "*Non-nil means that `ido' will record commands in command history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
517 Note that the non-ido equivalent command is recorded."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
518 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
519 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
520
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
521 (defcustom ido-max-prospects 12
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
522 "*Non-zero means that the prospect list will be limited to than number of items.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
523 For a long list of prospects, building the full list for the minibuffer can take a
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
524 non-negletable amount of time; setting this variable reduces that time."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
525 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
526 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
527
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
528 (defcustom ido-max-file-prompt-width 0.35
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
529 "*Non-zero means that the prompt string be limited to than number of characters.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
530 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
531 :type '(choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
532 (integer :tag "Characters" :value 20)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
533 (restricted-sexp :tag "Fraction of frame width"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
534 :value 0.35
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
535 :match-alternatives (ido-fractionp)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
536 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
537
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
538 (defcustom ido-max-window-height nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
539 "*Non-nil specifies a value to override `max-mini-window-height'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
540 :type '(choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
541 (const :tag "Don't override" nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
542 (integer :tag "Number of lines" :value 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
543 (restricted-sexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
544 :tag "Fraction of window height"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
545 :value 0.25
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
546 :match-alternatives (ido-fractionp)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
547 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
548
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
549 (defcustom ido-enable-last-directory-history t
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
550 "*Non-nil means that `ido' will remember latest selected directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
551 See `ido-last-directory-list' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
552 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
553 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
554
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
555 (defcustom ido-max-work-directory-list 50
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
556 "*Maximum number of working directories to record.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
557 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
558 See `ido-work-directory-list' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
559 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
560 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
561
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
562 (defcustom ido-work-directory-list-ignore-regexps nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
563 "*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
564 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
565 the `ido-work-directory-list' list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
566 :type '(repeat regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
567 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
568
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
569
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
570 (defcustom ido-use-filename-at-point nil
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
571 "*Non-nil means that ido shall look for a 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
572 If found, use that as the starting point for filename selection."
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
573 :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
574 :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
575
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
576
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
577 (defcustom ido-use-url-at-point nil
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
578 "*Non-nil means that ido shall look for a URL 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
579 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
580 :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
581 :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
582
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
583
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
584 (defcustom ido-enable-tramp-completion t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
585 "*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
586 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
587 :type 'boolean
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
588 :group 'ido)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
589
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
590 (defcustom ido-record-ftp-work-directories t
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
591 "*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
592 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
593 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
594
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
595 (defcustom ido-merge-ftp-work-directories nil
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
596 "*If nil means merging ignores ftp file names in the work directory list."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
597 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
598 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
599
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
600 (defcustom ido-cache-ftp-work-directory-time 1.0
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
601 "*Maximum time to cache contents of an ftp directory (in hours).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
602 If zero, ftp directories are not cached."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
603 :type 'number
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
604 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
605
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
606 (defcustom ido-slow-ftp-hosts nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
607 "*List of slow ftp hosts where ido prompting should not be used.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
608 If an ftp host is on this list, ido automatically switches to the non-ido
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
609 equivalent function, e.g. find-file rather than ido-find-file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
610 :type '(repeat string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
611 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
612
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
613 (defcustom ido-slow-ftp-host-regexps nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
614 "*List of regexps matching slow ftp hosts (see `ido-slow-ftp-hosts')."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
615 :type '(repeat regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
616 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
617
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
618 (defcustom ido-max-work-file-list 10
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
619 "*Maximum number of names of recently opened files to record.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
620 This is the list the file names (sans directory) which have most recently
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
621 been opened. See `ido-work-file-list' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
622 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
623 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
624
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
625 (defcustom ido-work-directory-match-only t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
626 "*Non-nil means to skip non-matching directories in the directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
627 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
628 \\[ido-prev-work-directory] or \\[ido-next-work-directory] will skip directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
629 without any matching entries."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
630 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
631 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
632
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
633 (defcustom ido-auto-merge-work-directories-length 0
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
634 "*Automatically switch to merged work directories during file name input.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
635 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
636 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
637 Automatic merging is disabled if the value is negative."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
638 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
639 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
640
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
641 (defcustom ido-auto-merge-delay-time 0.70
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
642 "*Delay in seconds to wait for more input before doing auto merge."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
643 :type 'number
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
644 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
645
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
646 (defcustom ido-auto-merge-inhibit-characters-regexp "[][*?~]"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
647 "*Regexp matching characters which should inhibit automatic merging.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
648 When a (partial) file name matches this regexp, merging is inhibited."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
649 :type 'regexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
650 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
651
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
652 (defcustom ido-merged-indicator "^"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
653 "The string appended to first choice if it has multiple directory choices."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
654 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
655 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
656
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
657 (defcustom ido-max-dir-file-cache 100
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
658 "*Maximum number of working directories to be cached.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
659 This is the size of the cache of file-name-all-completions results.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
660 Each cache entry is time stamped with the modification time of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
661 directory. Some systems, like Windows, have unreliable directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
662 modification times, so you may choose to disable caching on such
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
663 systems, or explicitly refresh the cache contents using the command
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
664 `ido-reread-directory' command (C-l) in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
665 See also `ido-dir-file-cache' and `ido-save-directory-list-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
666 :type 'integer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
667 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
668
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
669 (defcustom ido-max-directory-size 30000
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
670 "*Maximum size (in bytes) for directories to use ido completion.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
671 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
672 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
673 :type '(choice (const :tag "No limit" nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
674 (integer :tag "Size in bytes" 30000))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
675 :group 'ido)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
676
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
677 (defcustom ido-rotate-file-list-default nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
678 "*Non-nil means that `ido' will always rotate file list to get default in front."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
679 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
680 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
681
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
682 (defcustom ido-enter-single-matching-directory 'slash
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
683 "*Automatically enter sub-directory if it is the only matching item, if non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
684 If value is 'slash, only enter if typing final slash, else do it always."
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
685 :type '(choice (const :tag "Never" nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
686 (const :tag "When typing /" slash)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
687 (other :tag "Always" t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
688 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
689
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
690 (defcustom ido-create-new-buffer 'prompt
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
691 "*Specify whether a new buffer is created if no buffer matches substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
692 Choices are 'always to create new buffers unconditionally, 'prompt to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
693 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
694 :type '(choice (const always)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
695 (const prompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
696 (const never))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
697 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
698
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
699 (defcustom ido-define-mode-map-hook nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
700 "*Hook to define keys in `ido-mode-map' for extra keybindings."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
701 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
702 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
703
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
704 (defcustom ido-separator nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
705 "*String used by ido to separate the alternatives in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
706 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
707 :type '(choice string (const nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
708 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
709
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
710 (defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
711 "*List of strings used by ido to display the alternatives in the minibuffer.
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
712 There are 10 elements in this list:
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
713 1st and 2nd elements are used as brackets around the prospect list,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
714 3rd element is the separator between prospects (ignored if ido-separator is set),
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
715 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
716 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
717 can be completed using TAB,
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
718 7th element is the string displayed when there are a no matches, and
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
719 8th element is displayed if there is a single match (and faces are not used).
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
720 9th element is displayed when the current directory is non-readable.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
721 10th element is displayed when directory exceeds `ido-max-directory-size'."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
722 :type '(repeat string)
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
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
725 (defcustom ido-use-faces t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
726 "*Non-nil means use ido faces to highlighting first match, only match and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
727 subdirs in the alternatives."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
728 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
729 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
730
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
731 (defface ido-first-match-face '((t (:bold t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
732 "*Font used by ido for highlighting first match."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
733 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
734
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
735 (defface ido-only-match-face '((((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
736 (:foreground "ForestGreen"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
737 (t (:italic t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
738 "*Font used by ido for highlighting only match."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
739 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
740
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
741 (defface ido-subdir-face '((((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
742 (:foreground "red"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
743 (t (:underline t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
744 "*Font used by ido for highlighting subdirs in the alternatives."
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
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
747 (defface ido-indicator-face '((((class color))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
748 (:foreground "yellow"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
749 :background "red"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
750 :width condensed))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
751 (t (:inverse-video t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
752 "*Font used by ido for highlighting its indicators."
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-make-file-list-hook nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
756 "*List of functions to run when the list of matching files is created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
757 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
758 `ido-temp-list' which contains the current list of matching files."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
759 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
760 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
761
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
762 (defcustom ido-make-dir-list-hook nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
763 "*List of functions to run when the list of matching directories is created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
764 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
765 `ido-temp-list' which contains the current list of matching directories."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
766 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
767 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
768
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
769 (defcustom ido-make-buffer-list-hook nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
770 "*List of functions to run when the list of matching buffers is created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
771 Each function on the list may modify the dynamically bound variable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
772 `ido-temp-list' which contains the current list of matching buffer names."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
773 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
774 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
775
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
776 (defcustom ido-rewrite-file-prompt-functions nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
777 "*List of functions to run when the find-file prompt is created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
778 Each function on the list may modify the following dynamically bound
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
779 variables:
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
780 dirname - the (abbreviated) directory name
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
781 to be modified by the hook functions
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
782 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
783 prompt - the basic prompt (e.g. \"Find File: \")
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
784 literal - the string shown if doing \"literal\" find; set to nil to omit
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
785 vc-off - the string shown if version control is inhibited; set to nit to omit
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
786 prefix - either nil or a fixed prefix for the dirname
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
787
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
788 The following variables are available, but should not be changed:
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
789 ido-current-directory - the unabbreviated directory name
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
790 item - equals `file' or `dir' depending on the current mode."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
791 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
792 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
793
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
794 (defvar ido-rewrite-file-prompt-rules nil
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
795 "*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
796 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
797 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
798 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
799 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
800 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
801 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
802 `ido-rewrite-file-prompt-functions'.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
803
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
804 (defcustom ido-completion-buffer "*Ido Completions*"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
805 "*Name of completion buffer used by ido.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
806 Set to nil to disable completion buffers popping up."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
807 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
808 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
809
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
810 (defcustom ido-completion-buffer-all-completions nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
811 "*Non-nil means to show all completions in completion buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
812 Otherwise, only the current list of matches is shown."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
813 :type 'boolean
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
814 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
815
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
816 (defvar ido-all-frames 'visible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
817 "*Argument to pass to `walk-windows' when finding visible files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
818 See documentation of `walk-windows' for useful values.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
819
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
820 (defcustom ido-minibuffer-setup-hook nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
821 "*Ido-specific customization of minibuffer setup.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
822
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
823 This hook is run during minibuffer setup iff `ido' will be active.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
824 It is intended for use in customizing ido for interoperation
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
825 with other packages. For instance:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
826
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
827 \(add-hook 'ido-minibuffer-setup-hook
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
828 \(function
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
829 \(lambda ()
46118
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
830 \(make-local-variable 'max-mini-window-height)
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
831 \(setq max-mini-window-height 3))))
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
832
5631b19e689c (ido-minibuffer-setup-hook): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 46068
diff changeset
833 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
834 ido is running. Copied from `icomplete-minibuffer-setup-hook'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
835 :type 'hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
836 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
837
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
838 (defcustom ido-save-directory-list-file "~/.ido.last"
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
839 "File in which the ido state is saved between invocations.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
840 Variables stored are: `ido-last-directory-list', `ido-work-directory-list',
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
841 `ido-work-file-list', and `ido-dir-file-cache'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
842 Must be set before enabling ido mode."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
843 :type 'string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
844 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
845
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
846 (defcustom ido-read-file-name-as-directory-commands '()
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
847 "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
848 When `ido-everywhere' is non-nil, the commands in this list will read
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
849 the directory using ido-read-directory-name."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
850 :type '(repeat symbol)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
851 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
852
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
853 (defcustom ido-read-file-name-non-ido '()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
854 "List of commands which shall not read file names the ido way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
855 When `ido-everywhere' is non-nil, the commands in this list will read
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
856 the file name using normal read-file-name style."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
857 :type '(repeat symbol)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
858 :group 'ido)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
859
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
860 ;;; Internal Variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
861
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
862 ;; Persistent variables
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
863
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
864 (defvar ido-mode-map nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
865 "Keymap for `ido-find-file' and `ido-switch-buffer'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
866
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
867 (defvar ido-file-history nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
868 "History of files selected using `ido-find-file'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
869
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
870 (defvar ido-buffer-history nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
871 "History of buffers selected using `ido-switch-buffer'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
872
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
873 (defvar ido-last-directory-list nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
874 "List of last selected directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
875 See `ido-enable-last-directory-history' for details.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
876
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
877 (defvar ido-work-directory-list nil
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
878 "List of actual working directory names.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
879 The current directory is inserted at the front of this list whenever a
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
880 file is opened with ido-find-file and family.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
881
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
882 (defvar ido-work-file-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
883 "List of actual work file names.
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
884 Opening a file with `ido-find-file' and similar functions
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
885 inserts the current file name (relative to its containing directory)
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
886 at the front of this list.")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
887
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
888 (defvar ido-dir-file-cache nil
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
889 "List of `file-name-all-completions' results.
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
890 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
891
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
892 (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
893 "List of items to ignore in current ido invocation.
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
894 Intended to be let-bound by functions which calls ido repeatedly.
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
895 Should never be set permanently.")
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
896
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
897 ;; Temporary storage
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
898
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
899 (defvar ido-eoinput 1
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
900 "Point where minibuffer input ends and completion info begins.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
901 Copied from `icomplete-eoinput'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
902 (make-variable-buffer-local 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
903
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
904 (defvar ido-common-match-string nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
905 "Stores the string that is common to all matching files.")
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 (defvar ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
908 "Non-nil means we need to regenerate the list of matching items.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
909
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
910 (defvar ido-rotate nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
911 "Non-nil means we are rotating list of matches.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
912
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
913 (defvar ido-text nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
914 "Stores the users string as it is typed in.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
915
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
916 (defvar ido-text-init nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
917 "The initial string for the users string it is typed in.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
918
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
919 (defvar ido-matches nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
920 "List of files currently matching `ido-text'.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
921
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
922 (defvar ido-report-no-match t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
923 "Report [No Match] when no completions matches ido-text.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
924
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
925 (defvar ido-exit nil
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
926 "Flag to monitor how `ido-find-file' exits.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
927 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
928 selected.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
929
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
930 (defvar ido-current-directory nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
931 "Current directory for ido-find-file.")
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 (defvar ido-auto-merge-timer nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
934 "Delay timer for auto merge.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
935
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
936 (defvar ido-use-mycompletion-depth 0
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
937 "Non-nil means use `ido' completion feedback.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
938 Is set by ido functions to the current minibuffer-depth, so that
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
939 it doesn't interfere with other minibuffer usage.")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
940
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
941
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
942 ;;; Variables with dynamic bindings.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
943 ;;; Declared here to keep the byte compiler quiet.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
944
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
945 ;; Stores the current ido item type ('file, 'dir, 'buffer, or 'list).
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
946 (defvar ido-cur-item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
947
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
948 ;; Stores the current list of items that will be searched through.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
949 ;; The list is ordered, so that the most interesting item comes first,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
950 ;; although by default, the files visible in the current frame are put
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
951 ;; at the end of the list. Created by `ido-make-item-list'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
952 (defvar ido-cur-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
953
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
954 ;; Stores the choice list for ido-completing-read
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
955 (defvar ido-choice-list)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
956
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
957 ;; Stores the list of items which are ignored when building
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
958 ;; `ido-cur-list'. It is in no specific order.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
959 (defvar ido-ignored-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
960
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
961 ;; 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
962 (defvar ido-directory-nonreadable)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
963
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
964 ;; 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
965 (defvar ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
966
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
967 ;; Keep current item list if non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
968 (defvar ido-keep-item-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
969
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
970 ;; Process ido-ignore-* lists.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
971 (defvar ido-process-ignore-lists)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
972
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
973 ;; Don't process ido-ignore- lists once.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
974 (defvar ido-process-ignore-lists-inhibit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
975
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
976 ;; Buffer from which ido was entered.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
977 (defvar ido-entry-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
978
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
979 ;; Non-nil if matching file must be selected.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
980 (defvar ido-require-match)
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 ;; Stores a temporary version of the file list being created.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
983 (defvar ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
984
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
985 ;; Non-nil if default list element should be rotated into place.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
986 (defvar ido-rotate-temp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
987
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
988 ;; Stores current index in ido-work-directory-list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
989 (defvar ido-work-directory-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
990
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
991 ;; Stores current index in ido-work-file-list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
992 (defvar ido-work-file-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
993
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
994 ;; Set when merged work directory list is in use.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
995 (defvar ido-use-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
996
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
997 ;; Set when merged work directory list not yet built.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
998 (defvar ido-try-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
999
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1000 ;; Saved state prior to last work directory merge.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1001 ;; Value is a list (ido-text dir cur-list ignored-list matches).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1002 (defvar ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1003
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1004 ;; 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
1005 (defvar ido-saved-vc-hb)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1006
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1007 ;; Stores temporary state of literal find file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1008 (defvar ido-find-literal)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1009
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1010 ;; 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
1011 (defvar ido-context-switch-command)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1012
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1013 ;;; FUNCTIONS
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 (defun ido-active (&optional merge)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1016 (if merge
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1017 ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1018 (and (boundp 'ido-completing-read) (= ido-use-mycompletion-depth (minibuffer-depth)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1019
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1020 (defvar ido-trace-enable nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1021
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1022 (defun ido-trace (p &optional s retval)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1023 (if ido-trace-enable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1024 (let ((b (get-buffer-create " *IDO Trace*"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1025 (deactivate-mark deactivate-mark))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1026 (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1027 (save-restriction
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1028 (set-buffer b)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1029 (insert p ": " (if (stringp s) s (format "%S" s)) "\n")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1030 retval)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1031
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1032 (defun ido-toggle-trace (arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1033 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1034 (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
1035 (if ido-trace-enable
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1036 (message "IDO trace on"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1037 (let ((b (get-buffer " *IDO Trace*")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1038 (if b
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1039 (if ido-trace-enable
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1040 (kill-buffer b)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1041 (pop-to-buffer b t t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1042 (setq truncate-lines t)))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1043
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1044 (defun ido-is-tramp-root (&optional dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1045 (setq dir (or dir ido-current-directory))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1046 (and ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1047 (string-match "\\`/[^/][^/]+:\\([^/:@]+@\\)?\\'" dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1048
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1049 (defun ido-is-root-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1050 (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
1051 (or
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1052 (string-equal "/" dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1053 (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
1054 (string-match "\\`[a-zA-Z]:[/\\]\\'" dir))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1055 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1056 (ido-is-tramp-root dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1057 (string-match "\\`/[^:/][^:/]+:\\'" dir))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1058
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1059 (defun ido-is-ftp-directory (&optional dir)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1060 (string-match
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1061 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1062 "\\`/[^/:][^/:]+:" ;; 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
1063 "\\`/[^/:][^/:]+:/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1064 (or dir ido-current-directory)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1065
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1066 (defun ido-is-slow-ftp-host (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1067 (and (or ido-slow-ftp-hosts ido-slow-ftp-host-regexps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1068 (setq dir (or dir ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1069 ;; (featurep 'ange-ftp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1070 ;; (ange-ftp-ftp-name dir)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1071 (string-match
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1072 (if ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1073 "\\`/\\([^/]+[@:]\\)*\\([^@/:][^@/:]+\\):"
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1074 "\\`/\\([^/:]*@\\)?\\([^@/:][^@/:]+\\):/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1075 dir)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1076 (let ((host (substring dir (match-beginning 2) (match-end 2))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1077 (or (member host ido-slow-ftp-hosts)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1078 (let ((re ido-slow-ftp-host-regexps))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1079 (while (and re (not (string-match (car re) host)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1080 (setq re (cdr re)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1081 re)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1082
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1083 (defun ido-time-stamp (&optional time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1084 ;; Time is a floating point number (fractions of 1 hour)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1085 (setq time (or time (current-time)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1086 (/ (+ (* (car time) 65536.0) (car (cdr time))) 3600.0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1087
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1088 (defun ido-cache-ftp-valid (&optional time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1089 (and (numberp ido-cache-ftp-work-directory-time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1090 (> ido-cache-ftp-work-directory-time 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1091 (or (not time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1092 (< (- (ido-time-stamp) time) ido-cache-ftp-work-directory-time))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1093
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1094 (defun ido-may-cache-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1095 (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
1096 (cond
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1097 ((ido-directory-too-big-p dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1098 nil)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1099 ((and (ido-is-root-directory dir)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1100 (or ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1101 (memq system-type '(windows-nt ms-dos))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1102 nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1103 ((not (ido-is-ftp-directory dir))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1104 t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1105 ((ido-cache-ftp-valid)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1106 t)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1107
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1108 (defun ido-pp (list &optional sep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1109 (let ((print-level nil) (eval-expression-print-level nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1110 (print-length nil) (eval-expression-print-length nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1111 (insert "\n;; ----- " (symbol-name list) " -----\n(\n ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1112 (setq list (symbol-value list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1113 (while list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1114 (let* ((elt (car list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1115 (s (if (consp elt) (car elt) elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1116 (if (and (stringp s) (= (length s) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1117 (setq s nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1118 (if s
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1119 (prin1 elt (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1120 (if (and (setq list (cdr list)) s)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1121 (insert (or sep "\n ")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1122 (insert "\n)\n")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1123
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1124 (defun ido-save-history ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1125 "Save ido history and cache information between sessions."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1126 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1127 (if (and ido-last-directory-list ido-save-directory-list-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1128 (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1129 (save-window-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1130 (if (find-buffer-visiting ido-save-directory-list-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1131 (kill-buffer (find-buffer-visiting ido-save-directory-list-file)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1132 (if (file-exists-p ido-save-directory-list-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1133 (delete-file ido-save-directory-list-file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1134 (set-buffer (let ((enable-local-variables nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1135 (find-file-noselect ido-save-directory-list-file t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1136 (goto-char (point-min))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1137 (delete-region (point-min) (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1138 (ido-pp 'ido-last-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1139 (ido-pp 'ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1140 (ido-pp 'ido-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1141 (ido-pp 'ido-dir-file-cache "\n\n ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1142 (insert "\n")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1143 (let ((version-control 'never))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1144 (write-file ido-save-directory-list-file nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1145 (kill-buffer (current-buffer))))))
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 (defun ido-load-history (&optional arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1148 "Load ido history and cache information from previous session.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1149 With prefix argument, reload history unconditionally."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1150 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1151 (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
1152 (let ((file (expand-file-name ido-save-directory-list-file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1153 buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1154 (when (file-readable-p file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1155 (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1156 (save-window-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1157 (setq buf (set-buffer (let ((enable-local-variables nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1158 (find-file-noselect file))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1159 (goto-char (point-min))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1160 (condition-case nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1161 (setq ido-last-directory-list (read (current-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1162 ido-work-directory-list (read (current-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1163 ido-work-file-list (read (current-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1164 ido-dir-file-cache (read (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1165 (error nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1166 (kill-buffer buf))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1167 (ido-wash-history))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1168
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1169 (defun ido-wash-history ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1170 "Clean-up ido history and cache information.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1171 Removes badly formatted data and ignored directories."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1172 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1173 ;; Check format of each of our lists, discard bogus elements
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1174 (setq ido-last-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1175 (and (listp ido-last-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1176 (let ((l ido-last-directory-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1177 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1178 (if (and (consp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1179 (stringp (car (car l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1180 (stringp (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1181 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1182 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1183 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1184 (setq ido-work-directory-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1185 (and (listp ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1186 (let ((l ido-work-directory-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1187 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1188 (if (and (stringp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1189 (or ido-record-ftp-work-directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1190 (not (ido-is-ftp-directory (car l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1191 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1192 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1193 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1194 (setq ido-work-file-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1195 (and (listp ido-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1196 (let ((l ido-work-file-list) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1197 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1198 (if (stringp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1199 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1200 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1201 (nreverse r))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1202 (setq ido-dir-file-cache
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1203 (and (listp ido-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1204 (let ((l ido-dir-file-cache) r)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1205 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1206 (if (and (listp (car l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1207 (> (length (car l)) 2)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1208 (let ((dir (car (car l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1209 (time (car (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1210 (files (cdr (cdr (car l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1211 (and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1212 (stringp dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1213 (consp time)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1214 (if (integerp (car time))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1215 (and (/= (car time) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1216 (integerp (car (cdr time)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1217 (/= (car (cdr time)) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1218 (ido-may-cache-directory dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1219 (and (eq (car time) 'ftp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1220 (numberp (cdr time))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1221 (ido-is-ftp-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1222 (ido-cache-ftp-valid (cdr time))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1223 (let ((s files) (ok t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1224 (while s
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1225 (if (stringp (car s))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1226 (setq s (cdr s))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1227 (setq s nil ok nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1228 ok))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1229 (setq r (cons (car l) r)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1230 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1231 (nreverse r))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1232
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1233 ;; Remove ignored directories from work directory list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1234 ;; according to ido-work-directory-list-ignore-regexps
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1235 (if ido-work-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1236 (let ((dirs (reverse ido-work-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1237 (setq ido-work-directory-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1238 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1239 (ido-record-work-directory (car dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1240 (setq dirs (cdr dirs)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1241 ;; Get rid of text properties
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1242 (let ((l ido-last-directory-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1243 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1244 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1245 (set-text-properties 0 (length (car e)) nil (car e))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1246 (set-text-properties 0 (length (cdr e)) nil (cdr e))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1247 (let ((l ido-work-directory-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1248 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1249 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1250 (set-text-properties 0 (length e) nil e)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1251 (let ((l ido-work-file-list) e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1252 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1253 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1254 (set-text-properties 0 (length e) nil e)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1255 (let ((l ido-dir-file-cache) e d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1256 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1257 (setq e (car l) l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1258 (if (listp e)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1259 (while e
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1260 (setq d (car e) e (cdr e))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1261 (if (not (consp d))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1262 (set-text-properties 0 (length d) nil d))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1263 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1264
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1265
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1266 (defun ido-kill-emacs-hook ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1267 ;; ido kill emacs hook
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1268 (ido-save-history))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1269
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1270 (defvar ido-minor-mode-map-entry nil)
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 ;;;###autoload
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1273 (defun ido-mode (&optional arg)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1274 "Toggle ido speed-ups on or off.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1275 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
1276 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
1277 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
1278 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
1279 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
1280 if it equals 'buffers, remap only commands for buffer switching.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1281 This function also adds a hook to the minibuffer."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1282 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1283 (setq ido-mode
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1284 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1285 ((null arg) (if ido-mode nil 'both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1286 ((eq arg t) 'both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1287 ((eq arg 'files) 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1288 ((eq arg 'buffers) 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1289 ((memq arg '(file buffer both)) arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1290 ((> (prefix-numeric-value arg) 0) 'both)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1291 (t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1292
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1293 (ido-everywhere (if ido-everywhere 1 -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1294
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1295 (when ido-mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1296 (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1297 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1298 (ido-load-history)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1299
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1300 (add-hook 'kill-emacs-hook 'ido-kill-emacs-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1301
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1302 (unless ido-minor-mode-map-entry
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1303 (setq ido-minor-mode-map-entry (cons 'ido-mode (make-sparse-keymap)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1304 (add-to-list 'minor-mode-map-alist ido-minor-mode-map-entry))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1305
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1306 (let ((map (cdr ido-minor-mode-map-entry)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1307 (when (memq ido-mode '(file both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1308 (define-key map [remap find-file] 'ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1309 (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
1310 (define-key map [remap find-alternate-file] 'ido-find-alternate-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1311 (define-key map [remap write-file] 'ido-write-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1312 (define-key map [remap insert-file] 'ido-insert-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1313 (define-key map [remap list-directory] 'ido-list-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1314 (define-key map [remap dired] 'ido-dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1315 (define-key map [remap find-file-other-window] 'ido-find-file-other-window)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1316 (define-key map [remap find-file-read-only-other-window] 'ido-find-file-read-only-other-window)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1317 (define-key map [remap find-file-other-frame] 'ido-find-file-other-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1318 (define-key map [remap find-file-read-only-other-frame] 'ido-find-file-read-only-other-frame))
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 (when (memq ido-mode '(buffer both))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1321 (define-key map [remap switch-to-buffer] 'ido-switch-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1322 (define-key map [remap switch-to-buffer-other-window] 'ido-switch-buffer-other-window)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1323 (define-key map [remap switch-to-buffer-other-frame] 'ido-switch-buffer-other-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1324 (define-key map [remap insert-buffer] 'ido-insert-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1325 (define-key map [remap kill-buffer] 'ido-kill-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1326 (define-key map [remap display-buffer] 'ido-display-buffer)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1327
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1328 (defun ido-everywhere (arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1329 "Enable ido everywhere file and directory names are read."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1330 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1331 (setq ido-everywhere (if arg
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1332 (> (prefix-numeric-value arg) 0)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1333 (not ido-everywhere)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1334 (setq read-file-name-function
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1335 (and ido-everywhere (memq ido-mode '(both file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1336 'ido-read-file-name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1337 (setq read-buffer-function
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1338 (and ido-everywhere (memq ido-mode '(both buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1339 'ido-read-buffer)))
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
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1342 ;;; IDO KEYMAP
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1343 (defun ido-define-mode-map ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1344 "Set up the keymap for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1345 (let (map)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1346 ;; generated every time so that it can inherit new functions.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1347
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1348 (setq map (copy-keymap minibuffer-local-map))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1349 (define-key map "\C-a" 'ido-toggle-ignore)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1350 (define-key map "\C-c" 'ido-toggle-case)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1351 (define-key map "\C-e" 'ido-edit-input)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1352 (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
1353 (define-key map " " 'ido-complete-space)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1354 (define-key map "\C-j" 'ido-select-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1355 (define-key map "\C-m" 'ido-exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1356 (define-key map "\C-p" 'ido-toggle-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1357 (define-key map "\C-r" 'ido-prev-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1358 (define-key map "\C-s" 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1359 (define-key map "\C-t" 'ido-toggle-regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1360 (define-key map "\C-z" 'ido-undo-merge-work-directory)
47977
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
1361 (define-key map [(control ? )] 'ido-restrict-to-matches)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
1362 (define-key map [(control ?@)] 'ido-restrict-to-matches)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1363 (define-key map [right] 'ido-next-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1364 (define-key map [left] 'ido-prev-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1365 (define-key map "?" 'ido-completion-help)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1366
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1367 (when (memq ido-cur-item '(file dir))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1368 (define-key map "\C-b" (or ido-context-switch-command 'ido-enter-switch-buffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1369 (define-key map "\C-d" (or (and ido-context-switch-command 'ignore) 'ido-enter-dired))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1370 (define-key map "\C-f" 'ido-fallback-command)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1371 (define-key map [down] 'ido-next-match-dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1372 (define-key map [up] 'ido-prev-match-dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1373 (define-key map [(meta up)] 'ido-prev-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1374 (define-key map [(meta down)] 'ido-next-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1375 (define-key map [backspace] 'ido-delete-backward-updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1376 (define-key map "\d" 'ido-delete-backward-updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1377 (define-key map [(meta backspace)] 'ido-delete-backward-word-updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1378 (define-key map [(control backspace)] 'ido-up-directory)
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
1379 (define-key map "\C-l" 'ido-reread-directory)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1380 (define-key map [(meta ?b)] 'ido-next-work-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1381 (define-key map [(meta ?d)] 'ido-wide-find-dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1382 (define-key map [(meta ?f)] 'ido-wide-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1383 (define-key map [(meta ?k)] 'ido-forget-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1384 (define-key map [(meta ?m)] 'ido-make-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1385 (define-key map [(meta ?n)] 'ido-next-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1386 (define-key map [(meta ?o)] 'ido-prev-work-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1387 (define-key map [(meta ?p)] 'ido-prev-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1388 (define-key map [(meta ?s)] 'ido-merge-work-directories)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1389 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1390
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1391 (when (eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1392 (define-key map "\C-k" 'ido-delete-file-at-head)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1393 (define-key map "\C-o" 'ido-copy-current-word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1394 (define-key map "\C-w" 'ido-copy-current-file-name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1395 (define-key map [(meta ?l)] 'ido-toggle-literal)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1396 (define-key map "\C-v" 'ido-toggle-vc)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1397 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1398
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1399 (when (eq ido-cur-item 'buffer)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1400 (define-key map "\C-f" (or ido-context-switch-command 'ido-enter-find-file))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1401 (define-key map "\C-b" 'ido-fallback-command)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1402 (define-key map "\C-k" 'ido-kill-buffer-at-head)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1403 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1404
49579
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
1405 (when (if (boundp 'viper-mode) viper-mode)
49614
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1406 (define-key map [remap viper-intercept-ESC-key] 'ignore)
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1407 (when (memq ido-cur-item '(file dir))
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1408 (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
1409 (define-key map [remap viper-del-backward-char-in-insert] 'ido-delete-backward-updir)
1da4c425c852 (ido-define-mode-map):
Kim F. Storm <storm@cua.dk>
parents: 49611
diff changeset
1410 (define-key map [remap viper-delete-backward-word] 'ido-delete-backward-word-updir)))
49579
e19c547c5487 (ido-define-mode-map): Remap viper delete char/word
Kim F. Storm <storm@cua.dk>
parents: 49438
diff changeset
1411
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1412 (setq ido-mode-map map)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1413 (run-hooks 'ido-define-mode-map-hook)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1414
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1415 (defun ido-final-slash (dir &optional fix-it)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1416 ;; return DIR if DIR has final slash.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1417 ;; else if FIX-IT is non-nil, return DIR/
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1418 ;; else return nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1419 (setq dir (ido-name dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1420 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1421 ((string-match "/\\'" dir) dir)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1422 ((ido-is-tramp-root dir) dir)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1423 (fix-it (concat dir "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1424 (t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1425
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1426 (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
1427 ;; 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
1428 (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
1429 (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
1430 (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
1431 s)))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1432
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1433 (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
1434 ;; 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
1435 ;; 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
1436 ;; 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
1437 (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
1438 (and (ido-final-slash dir)
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1439 (file-directory-p dir)
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1440 (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
1441
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1442 (defun ido-directory-too-big-p (dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1443 ;; 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
1444 ;; 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
1445 ;; 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
1446 (let ((ido-enable-tramp-completion nil))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1447 (and (numberp ido-max-directory-size)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1448 (ido-final-slash dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1449 (file-directory-p dir)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1450 (> (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
1451
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1452 (defun ido-set-current-directory (dir &optional subdir no-merge)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1453 ;; Set ido's current directory to DIR or DIR/SUBDIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1454 (setq dir (ido-final-slash dir t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1455 (setq ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1456 ido-try-merged-list (not no-merge))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1457 (if subdir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1458 (setq dir (ido-final-slash (concat dir subdir) t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1459 (if (equal dir ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1460 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1461 (ido-trace "cd" dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1462 (setq ido-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1463 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1464 (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
1465 (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
1466 (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
1467 (ido-directory-too-big-p dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1468 t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1469
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1470 (defun ido-set-current-home (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1471 ;; Set ido's current directory to user's home directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1472 (ido-set-current-directory (expand-file-name (or dir "~/"))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1473
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1474 (defun ido-record-command (command arg)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1475 ;; Add (command arg) to command-history if ido-record-commands is t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1476 (if ido-record-commands
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1477 (let ((cmd (list command arg)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1478 (if (or (not command-history)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1479 (not (equal cmd (car command-history))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1480 (setq command-history (cons cmd command-history))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1481
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1482 (defun ido-make-prompt (item prompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1483 ;; Make the prompt for ido-read-internal
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1484 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1485 ((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
1486 (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
1487 (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
1488 (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
1489 ido-max-file-prompt-width))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1490 (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
1491 (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
1492 (prefix nil)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1493 (rule ido-rewrite-file-prompt-rules))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1494 (let ((case-fold-search nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1495 (while rule
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1496 (if (and (consp (car rule))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1497 (string-match (car (car rule)) dirname))
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1498 (setq dirname
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1499 (if (stringp (cdr (car rule)))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1500 (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
1501 (funcall (cdr (car rule)) dirname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1502 (setq rule (cdr rule))))
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1503 (run-hooks 'ido-rewrite-file-prompt-functions)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1504 (concat prompt
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1505 ; (if ido-process-ignore-lists "" "&")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1506 (or literal "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1507 (or vc-off "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1508 (or prefix "")
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1509 (let ((l (length dirname)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1510 (if (and max-width (> max-width 0) (> l max-width))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1511 (let* ((s (substring dirname (- max-width)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1512 (i (string-match "/" s)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1513 (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
1514 dirname)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1515 (t prompt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1516
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1517 ;; Here is very briefly how ido-find-file works:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1518 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1519 ;; (ido-find-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1520 ;; (ido-file-internal method)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1521 ;; set ido-current-directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1522 ;; (ido-read-internal 'file ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1523 ;; (while ...
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1524 ;; (ido-make-item-list ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1525 ;; (ido-set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1526 ;; (completing-read ... ido-text-init ...)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1527 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1528 ;; ... here user is allowed to type characters and commands
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1529 ;; a command may set ido-exit and call (exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1530 ;; to make ido-read-internal do advanced tasks (or return)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1531 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1532 ;; ... ido-tidy and ido-exhibit are pre- and post-hooks
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1533 ;; which are run before and after each user command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1534 ;;
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1535 ;; return value from completing-read is stored in ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1536 ;; - ido-exit may cause further actions to be taken:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1537 ;; 'refresh - repeat loop (make-item-list, set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1538 ;; 'edit - edit the prompt string, then repeat loop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1539 ;; 'keep - repeat loop but don't (re)make-item-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1540 ;; 'updir - go up one directory, repeat loop
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1541 ;; else set ido-selected based on ido-final-text,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1542 ;; optionally update ido-current-directory and repeat loop, or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1543 ;; exit with the return value of ido-selected (file name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1544 ;; selected file name is returned from ido-read-internal,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1545 ;; ido-exit and method determines what action is taken
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1546 ;; 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
1547 ;; the relevant function is called (find-file, write-file, etc).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1548
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1549 (defun ido-read-internal (item prompt history &optional default require-match initial)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1550 "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
1551 Return the name of a buffer or file selected.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1552 PROMPT is the prompt to give to the user.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1553 DEFAULT if given is the default directory to start with.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1554 If REQUIRE-MATCH is non-nil, an existing file must be selected.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1555 If INITIAL is non-nil, it specifies the initial input string."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1556 (let
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1557 ((ido-cur-item item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1558 (ido-entry-buffer (current-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1559 (ido-process-ignore-lists t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1560 (ido-process-ignore-lists-inhibit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1561 (ido-set-default-item t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1562 ido-default-item
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1563 ido-selected
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1564 ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1565 (done nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1566 (icomplete-mode nil) ;; prevent icomplete starting up
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1567 ;; Exported dynamic variables:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1568 ido-cur-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1569 ido-ignored-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1570 (ido-rotate-temp nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1571 (ido-keep-item-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1572 (ido-use-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1573 (ido-try-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1574 (ido-pre-merge-state nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1575 (ido-case-fold ido-case-fold)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1576 (ido-enable-prefix ido-enable-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1577 (ido-enable-regexp ido-enable-regexp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1578 )
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1579
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1580 (ido-define-mode-map)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1581 (setq ido-text-init initial)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1582 (while (not done)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1583 (ido-trace "\n_LOOP_" ido-text-init)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1584 (setq ido-exit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1585 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1586 (setq ido-rotate nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1587 (setq ido-text "")
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1588 (when ido-set-default-item
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1589 (setq ido-default-item
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1590 (cond
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1591 ((eq item 'buffer)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1592 (if (bufferp default) (buffer-name default) default))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1593 ((stringp default) default)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1594 ((eq item 'file)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1595 (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
1596 (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
1597 (and d (cdr d)))))))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1598 (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
1599 (setq ido-default-item nil))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1600 (setq ido-set-default-item nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1601
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1602 (if ido-process-ignore-lists-inhibit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1603 (setq ido-process-ignore-lists nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1604
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1605 (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
1606 (let ((olist ido-cur-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1607 (oign ido-ignored-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1608 (omat ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1609 (l (ido-make-merged-file-list ido-text-init
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1610 (eq ido-use-merged-list 'auto)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1611 (eq ido-try-merged-list 'wide))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1612 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1613 ((not l)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1614 (if (eq ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1615 (setq ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1616 (list "" ido-current-directory olist oign omat)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1617 ido-cur-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1618 ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1619 ido-matches nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1620 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1621 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
1622 ido-use-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1623 (setq ido-cur-list olist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1624 ido-ignored-list oign
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1625 ido-matches omat
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1626 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1627 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
1628 ido-use-merged-list nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1629 ((eq l t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1630 (setq ido-use-merged-list nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1631 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1632 (setq ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1633 (list ido-text-init ido-current-directory olist oign omat))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1634 (ido-set-current-directory (car (cdr (car l))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1635 (if (ido-final-slash ido-text-init)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1636 (setq ido-text-init ""))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1637 (setq ido-cur-list l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1638 ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1639 ido-matches l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1640 ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1641 ido-keep-item-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1642 ido-use-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1643 (ido-trace "Merged" t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1644 ))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1645
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1646 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1647 (ido-keep-item-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1648 (setq ido-keep-item-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1649 ido-rescan nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1650 ((eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1651 (setq ido-ignored-list nil
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1652 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
1653 (not ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1654 (ido-make-file-list ido-default-item))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1655 ((eq ido-cur-item 'dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1656 (setq ido-ignored-list nil
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1657 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
1658 (not ido-directory-too-big)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1659 (ido-make-dir-list ido-default-item))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1660 ((eq ido-cur-item 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1661 (setq ido-ignored-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1662 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
1663 ((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
1664 (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
1665 ido-cur-list (ido-make-choice-list ido-default-item)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1666 (t nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1667 (setq ido-rotate-temp nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1668
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1669 (if ido-process-ignore-lists-inhibit
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1670 (setq ido-process-ignore-lists t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1671 ido-process-ignore-lists-inhibit nil))
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 (ido-set-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1674 (if (and ido-matches (eq ido-try-merged-list 'auto))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1675 (setq ido-try-merged-list t))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1676 (let
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1677 ((minibuffer-local-completion-map ido-mode-map)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1678 (max-mini-window-height (or ido-max-window-height
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1679 (and (boundp 'max-mini-window-height) max-mini-window-height)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1680 (ido-completing-read t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1681 (ido-require-match require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1682 (ido-use-mycompletion-depth (1+ (minibuffer-depth)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1683 (show-paren-mode nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1684 ;; prompt the user for the file name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1685 (setq ido-exit nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1686 (setq ido-final-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1687 (catch 'ido
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1688 (completing-read
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1689 (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
1690 '(("dummy" . 1)) nil nil ; table predicate require-match
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1691 (prog1 ido-text-init (setq ido-text-init nil)) ;initial-contents
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1692 history))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1693 (ido-trace "completing-read" ido-final-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1694 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1695 (kill-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1696
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1697 (ido-trace "\n_EXIT_" ido-exit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1698
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1699 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1700 ((eq ido-exit 'refresh)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1701 (if (and (eq ido-use-merged-list 'auto)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1702 (or (input-pending-p)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1703 (setq ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1704 ido-keep-item-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1705 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1706
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1707 ((eq ido-exit 'done)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1708 (setq done t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1709 ido-selected ido-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1710 ido-exit nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1711
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1712 ((memq ido-exit '(edit chdir))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1713 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1714 ((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
1715 (let* ((read-file-name-function nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1716 (edit (eq ido-exit 'edit))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1717 (d ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1718 (f ido-text-init)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1719 (new t))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1720 (setq ido-text-init "")
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1721 (while new
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1722 (setq new (if edit
55359
fa5273a32653 (ido-read-internal): Fix call to read-file-name for edit.
Kim F. Storm <storm@cua.dk>
parents: 54776
diff changeset
1723 (read-file-name (concat prompt "[EDIT] ")
fa5273a32653 (ido-read-internal): Fix call to read-file-name for edit.
Kim F. Storm <storm@cua.dk>
parents: 54776
diff changeset
1724 (expand-file-name d)
fa5273a32653 (ido-read-internal): Fix call to read-file-name for edit.
Kim F. Storm <storm@cua.dk>
parents: 54776
diff changeset
1725 (concat d f) nil f)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1726 f)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1727 d (or (file-name-directory new) "/")
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1728 f (file-name-nondirectory new)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1729 edit t)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1730 (if (or
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1731 (file-directory-p d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1732 (and (yes-or-no-p (format "Create directory %s? " d))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1733 (condition-case nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1734 (progn (make-directory d t) t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1735 (error
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1736 (message "Could not create directory")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1737 (sit-for 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1738 nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1739 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1740 (ido-set-current-directory d nil (eq ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1741 (setq ido-text-init f
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
1742 new nil))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1743 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1744 (setq ido-text-init (read-string (concat prompt "[EDIT] ") ido-final-text))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1745 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1746
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1747 ((eq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1748 (setq ido-keep-item-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1749
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1750 ((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
1751 (setq done t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1752
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1753 ((eq ido-exit 'updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1754 ;; 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
1755 ;; 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
1756 (if (ido-is-tramp-root)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1757 (when (string-match "\\`\\(/\\([^/]+[:@]\\)*\\)\\([^/]+\\)[:@]\\'" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1758 (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
1759 (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
1760 (setq ido-set-default-item t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1761 (unless (ido-is-root-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1762 (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
1763 (setq ido-set-default-item t))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1764
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1765 ;; Handling the require-match must be done in a better way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1766 ((and require-match (not (ido-existing-item-p)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1767 (error "must specify valid item"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1768
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1769 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1770 (setq ido-selected
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1771 (if (or (eq ido-exit 'takeprompt)
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1772 (null ido-matches))
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1773 ido-final-text
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1774 ;; else take head of list
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1775 (ido-name (car ido-matches))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1776
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1777 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1778 ((eq item 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1779 (setq done t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1780
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1781 ((string-equal "./" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1782 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1783
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1784 ((string-equal "../" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1785 ;; 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
1786 ;; root-dir of a certain drive (Windows or MS-DOS).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1787 (or (ido-is-root-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1788 (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
1789 (setq ido-set-default-item t))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1790
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1791 ((and (string-match (if ido-enable-tramp-completion "..[:@]\\'" "..:\\'") ido-selected)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1792 (ido-is-root-directory)) ;; Ange-ftp or Tramp
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
1793 (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
1794 (ido-trace "tramp prefix" ido-selected)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1795 (if (ido-is-slow-ftp-host)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1796 (setq ido-exit 'fallback
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1797 done t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1798 (setq ido-set-default-item t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1799 ((or (string-match "[/\\][^/\\]" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1800 (and (memq system-type '(windows-nt ms-dos))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1801 (string-match "\\`.:" ido-selected)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1802 (ido-set-current-directory (file-name-directory ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1803 (setq ido-set-default-item t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1804
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1805 ((string-match "\\`~" ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1806 (ido-set-current-home ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1807
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1808 ((ido-final-slash ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1809 (if ido-enable-last-directory-history
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1810 (let ((x (assoc ido-current-directory ido-last-directory-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1811 (if x
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1812 (setcdr x ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1813 (setq ido-last-directory-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1814 (cons (cons ido-current-directory ido-selected) ido-last-directory-list)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1815 (ido-set-current-directory ido-current-directory ido-selected)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1816 (setq ido-set-default-item t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1817
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1818 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1819 (setq done t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1820 ido-selected))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1821
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1822 (defun ido-edit-input ()
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
1823 "Edit absolute file name entered so far with ido; terminate by RET."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1824 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1825 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1826 (setq ido-exit 'edit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1827 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1828
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1829 ;;; MAIN FUNCTIONS
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1830 (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
1831 ;; Internal function for ido-switch-buffer and friends
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1832 (if (not ido-mode)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1833 (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
1834 (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
1835 (ido-current-directory nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1836 (ido-directory-nonreadable nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1837 (ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1838 (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default nil initial)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1839
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1840 ;; Choose the buffer name: either the text typed in, or the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1841 ;; of the list of matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1842
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1843 (cond
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1844 ((eq ido-exit 'find-file)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1845 (ido-file-internal ido-default-file-method nil nil nil nil ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1846
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1847 ((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
1848 (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
1849
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1850 ((eq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1851 (let ((read-buffer-function nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1852 (call-interactively (or fallback 'switch-to-buffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1853
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1854 ;; Check buf is non-nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1855 ((not buf) nil)
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
1856 ((= (length buf) 0) nil)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1857
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1858 ;; View buffer if it exists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1859 ((get-buffer buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1860 (if (eq method 'insert)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1861 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1862 (ido-record-command 'insert-buffer buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1863 (insert-buffer buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1864 (ido-visit-buffer buf method t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1865
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1866 ;; buffer doesn't exist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1867 ((eq ido-create-new-buffer 'never)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1868 (message "no buffer matching `%s'" buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1869
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1870 ((and (eq ido-create-new-buffer 'prompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1871 (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
1872 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1873
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1874 ;; create a new buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1875 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1876 (setq buf (get-buffer-create buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1877 (if (fboundp 'set-buffer-major-mode)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1878 (set-buffer-major-mode buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1879 (ido-visit-buffer buf method t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1880
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1881 (defun ido-record-work-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1882 (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
1883 (if (and (setq dir (or dir ido-current-directory)) (> (length dir) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1884 (let ((items ido-work-directory-list-ignore-regexps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1885 (case-fold-search nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1886 (while (and items dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1887 (if (string-match (car items) dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1888 (setq dir nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1889 (setq items (cdr items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1890 (if dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1891 (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
1892 (if (> (length ido-work-directory-list) ido-max-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1893 (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
1894
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1895 (defun ido-forget-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1896 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1897 (when (and ido-current-directory ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1898 (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
1899 (when ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1900 (ido-undo-merge-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1901 (setq ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1902 ido-try-merged-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1903 ido-use-merged-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1904 ido-text-init ido-text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1905 ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1906 (exit-minibuffer))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
1907
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1908 (defun ido-record-work-file (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1909 ;; Save NAME in ido-work-file-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1910 (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
1911 (or
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1912 (and ido-work-file-list (equal (car ido-work-file-list) name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1913 (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
1914 (if (> (length ido-work-file-list) ido-max-work-file-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1915 (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
1916
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1917 (defun ido-expand-directory (dir)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1918 ;; Expand DIR or use DEFAULT-DIRECTORY if nil.
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1919 ;; 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
1920 (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
1921
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1922 (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
1923 ;; 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
1924 (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
1925 (setq item 'file))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1926 (let* ((ido-current-directory (ido-expand-directory default))
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
1927 (ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
1928 (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
1929 (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
1930 (ido-context-switch-command switch-cmd)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
1931 filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1932
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1933 (cond
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1934 ((or (not ido-mode) (ido-is-slow-ftp-host))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1935 (setq 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
1936 ido-exit 'fallback))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1937
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1938 ((and (eq item 'file)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1939 (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
1940 (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
1941 (require 'ffap)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1942 ;; Duplicate code from ffap-guesser as we want different behaviour for files and URLs.
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1943 (cond
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1944 ((and ido-use-url-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
1945 ffap-url-regexp
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1946 (ffap-fixup-url (or (ffap-url-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
1947 (ffap-gopher-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
1948 (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
1949 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
1950
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1951 ((and 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
1952 (setq fn (ffap-string-at-point))
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
1953 (not (string-match "^http:/" 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
1954 (setq d (file-name-directory fn))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1955 (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
1956 (setq ido-current-directory d)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1957 (setq initial (file-name-nondirectory fn)))))))
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1958
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1959 (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
1960 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1961 (ido-work-directory-index -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1962 (ido-work-file-index -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1963 (ido-find-literal nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1964
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1965 (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
1966 (setq ido-saved-vc-hb 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
1967 (setq filename (ido-read-internal item
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1968 (or prompt "Find file: ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1969 'ido-file-history nil nil initial)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1970
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1971 ;; Choose the file name: either the text typed in, or the head
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1972 ;; of the list of matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1973
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1974 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1975 ((eq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1976 ;; Need to guard setting of default-directory here, since
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1977 ;; we don't want to change directory of current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1978 (let ((default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1979 (read-file-name-function nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1980 (call-interactively (or fallback 'find-file))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1981
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1982 ((eq ido-exit 'switch-to-buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1983 (ido-buffer-internal ido-default-buffer-method nil nil nil ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1984
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
1985 ((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
1986 (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
1987
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1988 ((eq ido-exit 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1989 (dired (concat ido-current-directory (or ido-text ""))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1990
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
1991 ((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
1992 (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
1993
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1994 ((eq method 'alt-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1995 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1996 (setq default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1997 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1998 (find-alternate-file filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1999
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2000 ((memq method '(dired list-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2001 (if (equal filename ".")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2002 (setq filename ""))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2003 (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
2004 (file (substring dirname 0 -1)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2005 (cond
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2006 ((file-directory-p dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2007 (ido-record-command method dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2008 (ido-record-work-directory dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2009 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2010 ((file-directory-p ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2011 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2012 ((file-exists-p file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2013 (ido-record-command method ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2014 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2015 (funcall method ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2016 (if (eq method 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2017 (dired-goto-file (expand-file-name file))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2018 ((string-match "[[*?]" filename)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2019 (setq dirname (concat ido-current-directory filename))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2020 (ido-record-command method dirname)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2021 (ido-record-work-directory)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2022 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2023 ((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
2024 (ido-record-command method dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2025 (ido-record-work-directory dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2026 (make-directory-internal dirname)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2027 (funcall method dirname))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2028 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2029 ;; put make-directory command on history
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2030 (ido-record-command 'make-directory dirname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2031 (t (error "No such directory")))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2032
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2033 ((eq method 'write)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2034 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2035 (setq default-directory ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2036 (ido-record-command 'write-file (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2037 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2038 (write-file filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2039
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2040 ((eq method 'read-only)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2041 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2042 (setq filename (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2043 (ido-record-command fallback filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2044 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2045 (funcall fallback filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2046
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2047 ((eq method 'insert)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2048 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2049 (setq filename (concat ido-current-directory filename))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2050 (ido-record-command
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2051 (if ido-find-literal 'insert-file-literally 'insert-file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2052 filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2053 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2054 (if ido-find-literal
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2055 (insert-file-contents-literally filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2056 (insert-file-contents filename)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2057
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2058 (filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2059 (ido-record-work-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2060 (setq filename (concat ido-current-directory filename))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2061 (ido-record-command 'find-file filename)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2062 (ido-record-work-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2063 (ido-visit-buffer (find-file-noselect filename nil ido-find-literal) method))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2064
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2065 (defun ido-existing-item-p ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2066 ;; Return non-nil if there is a matching item
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2067 (not (null ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2069 ;;; COMPLETION CODE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2070
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2071 (defun ido-set-common-completion ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2072 ;; Find common completion of `ido-text' in `ido-matches'
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2073 ;; The result is stored in `ido-common-match-string'
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2074 (let* (val)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2075 (setq ido-common-match-string nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2076 (if (and ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2077 (not ido-enable-regexp) ;; testing
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2078 (stringp ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2079 (> (length ido-text) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2080 (if (setq val (ido-find-common-substring ido-matches ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2081 (setq ido-common-match-string val)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2082 val))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2083
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2084 (defun ido-complete ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2085 "Try and complete the current pattern amongst the file names."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2086 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2087 (let (res)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2088 (cond
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2089 ((and (memq ido-cur-item '(file dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2090 (string-match "[$]" ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2091 (let ((evar (substitute-in-file-name (concat ido-current-directory ido-text))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2092 (if (not (file-exists-p (file-name-directory evar)))
49438
389e078f2b48 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 49412
diff changeset
2093 (message "Expansion generates non-existing directory name")
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2094 (if (file-directory-p evar)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2095 (ido-set-current-directory evar)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2096 (let ((d (or (file-name-directory evar) "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2097 (f (file-name-nondirectory evar)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2098 (when (file-directory-p d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2099 (ido-set-current-directory d)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2100 (setq ido-text-init f))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2101 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2102 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2103
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2104 (ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2105 (setq ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2106 (setq ido-text-init ido-text)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2107 (setq ido-exit 'refresh)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2108 (exit-minibuffer))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2109
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2110 ((not ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2111 (when ido-completion-buffer
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
2112 (call-interactively (setq this-command ido-cannot-complete-command))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2113
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2114 ((and (= 1 (length ido-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2115 (not (and ido-enable-tramp-completion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2116 (string-equal ido-current-directory "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2117 (string-match "..[@:]\\'" (car ido-matches)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2118 ;; only one choice, so select it.
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2119 (if (not ido-confirm-unique-completion)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2120 (exit-minibuffer)
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2121 (setq ido-rescan (not ido-enable-prefix))
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2122 (delete-region (minibuffer-prompt-end) (point))
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
2123 (insert (car ido-matches))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2124
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2125 (t ;; else there could be some completions
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2126 (setq res ido-common-match-string)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2127 (if (and (not (memq res '(t nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2128 (not (equal res ido-text)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2129 ;; found something to complete, so put it in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2130 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2131 ;; move exact match to front if not in prefix mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2132 (setq ido-rescan (not ido-enable-prefix))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2133 (delete-region (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2134 (insert res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2135 ;; else nothing to complete
48030
4086fbc6ad65 (ido-cannot-complete-command): New defcustom, default to
Kim F. Storm <storm@cua.dk>
parents: 47977
diff changeset
2136 (call-interactively (setq this-command ido-cannot-complete-command))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2137 )))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2138
46231
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2139 (defun ido-complete-space ()
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2140 "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
2141 (interactive)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2142 (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
2143 (stringp ido-text)
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2144 (cond
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2145 ((> (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
2146 (= (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
2147 (ido-matches
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2148 (let (insert-space
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2149 (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
2150 (comp ido-matches))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2151 (while comp
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2152 (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
2153 (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
2154 (setq comp (cdr comp))))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2155 insert-space))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2156 (t nil)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2157 (insert " ")
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2158 (ido-complete)))
794e46e1c313 (ido-set-matches1): Use regexp-quote instead of identity.
Kim F. Storm <storm@cua.dk>
parents: 46225
diff changeset
2159
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2160 (defun ido-undo-merge-work-directory (&optional text try refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2161 "Undo or redo last ido directory merge operation.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2162 If no merge has yet taken place, toggle automatic merging option."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2163 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2164 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2165 (ido-pre-merge-state
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2166 (ido-set-current-directory (nth 1 ido-pre-merge-state))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2167 (setq ido-text-init (or text (car ido-pre-merge-state))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2168 ido-cur-list (nth 2 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2169 ido-ignored-list (nth 3 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2170 ido-matches (nth 4 ido-pre-merge-state)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2171 ido-use-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2172 ido-try-merged-list try
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2173 ido-keep-item-list (not refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2174 ido-rescan nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2175 ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2176 ido-pre-merge-state nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2177 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2178 (text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2179 nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2180 (ido-try-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2181 (setq ido-try-merged-list nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2182 (ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2183 (setq ido-try-merged-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2184 ((not ido-use-merged-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2185 (ido-merge-work-directories))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2186
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2187 ;;; TOGGLE FUNCTIONS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2188
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2189 (defun ido-toggle-case ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2190 "Toggle the value of `ido-case-fold'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2191 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2192 (setq ido-case-fold (not ido-case-fold))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2193 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2194 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2195
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2196 (defun ido-toggle-regexp ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2197 "Toggle the value of `ido-enable-regexp'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2198 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2199 (setq ido-enable-regexp (not ido-enable-regexp))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2200 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2201 (setq ido-rescan t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2202
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2203 (defun ido-toggle-prefix ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2204 "Toggle the value of `ido-enable-prefix'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2205 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2206 (setq ido-enable-prefix (not ido-enable-prefix))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2207 ;; ask for list to be regenerated.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2208 (setq ido-rescan t))
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 (defun ido-toggle-ignore ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2211 "Toggle ignoring files specified with `ido-ignore-files'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2212 (interactive)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2213 (if ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2214 (setq ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2215 (setq ido-process-ignore-lists (not ido-process-ignore-lists)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2216 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2217 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2218 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2219
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2220 (defun ido-toggle-vc ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2221 "Disable version control for this file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2222 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2223 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2224 (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
2225 (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
2226 (if vc-handled-backends nil ido-saved-vc-hb))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2227 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2228 (setq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2229 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2230
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2231 (defun ido-toggle-literal ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2232 "Toggle literal reading of this file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2233 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2234 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2235 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2236 (setq ido-find-literal (not ido-find-literal))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2237 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2238 (setq ido-exit 'keep)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2239 (exit-minibuffer))))
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 (defun ido-reread-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2242 "Read current directory again.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2243 May be useful if cached version is no longer valid, but directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2244 timestamp has not changed (e.g. with ftp or on Windows)."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2245 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2246 (if (and ido-mode (eq ido-cur-item 'file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2247 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2248 (ido-remove-cached-dir ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2249 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2250 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2251 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2252 (exit-minibuffer))))
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-exit-minibuffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2255 "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
2256 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2257 (if (or (not ido-require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2258 (ido-existing-item-p))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2259 (throw 'exit nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2260
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2261 (defun ido-select-text ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2262 "Select the buffer or file named by the prompt.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2263 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
2264 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2265 (setq ido-exit 'takeprompt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2266 (exit-minibuffer))
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-fallback-command ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2269 "Fallback to non-ido version of current command."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2270 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2271 (setq ido-exit 'fallback)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2272 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2273
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2274 (defun ido-enter-find-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2275 "Drop into find-file from buffer switching."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2276 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2277 (setq ido-exit 'find-file)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2278 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2279
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2280 (defun ido-enter-switch-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2281 "Drop into ido-switch-buffer from file switching."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2282 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2283 (setq ido-exit 'switch-to-buffer)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2284 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2285
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2286 (defun ido-enter-dired ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2287 "Drop into dired from file switching."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2288 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2289 (setq ido-exit 'dired)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2290 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2291
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2292 (defun ido-enter-insert-buffer ()
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2293 "Drop into insert buffer from insert file."
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2294 (interactive)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2295 (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
2296 (exit-minibuffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2297
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2298 (defun ido-enter-insert-file ()
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2299 "Drop into insert file from insert buffer."
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2300 (interactive)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2301 (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
2302 (exit-minibuffer))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2303
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2304
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2305 (defun ido-up-directory (&optional clear)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2306 "Go up one directory level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2307 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2308 (setq ido-text-init (if clear nil ido-text))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2309 (setq ido-exit 'updir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2310 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2311 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2312
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2313 (defun ido-delete-backward-updir (count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2314 "Delete char backwards, or at beginning of buffer, go up one level."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2315 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2316 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2317 ((= (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2318 (if (not count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2319 (ido-up-directory t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2320 ((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
2321 (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
2322 ((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
2323 (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
2324 ((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
2325 (funcall this-original-command))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2326 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2327 (delete-backward-char (prefix-numeric-value count)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2328
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2329 (defun ido-delete-backward-word-updir (count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2330 "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
2331 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2332 (if (= (minibuffer-prompt-end) (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2333 (if (not count)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2334 (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
2335 (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
2336 (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
2337 (backward-kill-word (prefix-numeric-value count)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2338
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2339 (defun ido-get-work-directory (&optional incr must-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2340 (let ((n (length ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2341 (i ido-work-directory-index)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2342 (j 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2343 dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2344 (if (or (not ido-text) (= (length ido-text) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2345 (setq must-match nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2346 (while (< j n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2347 (setq i (+ i incr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2348 j (1+ j))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2349 (if (> incr 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2350 (if (>= i n) (setq i 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2351 (if (< i 0) (setq i (1- n))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2352 (setq dir (nth i ido-work-directory-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2353 (if (and dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2354 (not (equal dir ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2355 (file-directory-p dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2356 (or (not must-match)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2357 ;; TODO. check for nonreadable and too-big.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2358 (ido-set-matches1
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2359 (if (eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2360 (ido-make-file-list1 dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2361 (ido-make-dir-list1 dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2362 (setq j n)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2363 (setq dir nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2364 (if dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2365 (setq ido-work-directory-index i))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2366 dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2367
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2368 (defun ido-prev-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2369 "Change to next working directory in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2370 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2371 (let ((dir (ido-get-work-directory 1 ido-work-directory-match-only)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2372 (when dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2373 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2374 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2375 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2376 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2377 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2378
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2379 (defun ido-next-work-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2380 "Change to previous working directory in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2381 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2382 (let ((dir (ido-get-work-directory -1 ido-work-directory-match-only)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2383 (when dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2384 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2385 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2386 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2387 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2388 (exit-minibuffer))))
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 (defun ido-merge-work-directories ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2391 "Search (and merge) work directories for files matching the current input string."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2392 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2393 (setq ido-use-merged-list t ido-try-merged-list t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2394 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2395 (setq ido-text-init ido-text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2396 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2397 (exit-minibuffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2398
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2399 (defun ido-wide-find-file (&optional file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2400 "Prompt for FILE to search for using find, starting from current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2401 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2402 (unless file
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2403 (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
2404 (setq file
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2405 (read-string (concat "Wide find file: " ido-current-directory) ido-text))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2406 (when (> (length file) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2407 (setq ido-use-merged-list t ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2408 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2409 (setq ido-text-init file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2410 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2411 (exit-minibuffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2412
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2413 (defun ido-wide-find-dir (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2414 "Prompt for DIR to search for using find, starting from current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2415 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2416 (unless dir
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2417 (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
2418 (setq dir
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2419 (read-string (concat "Wide find directory: " ido-current-directory) ido-text))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2420 (when (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2421 (setq ido-use-merged-list t ido-try-merged-list 'wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2422 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2423 (setq ido-text-init (ido-final-slash dir t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2424 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2425 (exit-minibuffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2426
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2427 (defun ido-make-directory (&optional dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2428 "Prompt for DIR to create in current directory."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2429 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2430 (unless dir
50260
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2431 (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
2432 (setq dir
78ad1c52e368 (ido-mode): Remove unused NOBIND arg. Fix doc string accordingly.
Kim F. Storm <storm@cua.dk>
parents: 49614
diff changeset
2433 (read-string (concat "Make directory: " ido-current-directory) ido-text))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2434 (when (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2435 (setq dir (concat ido-current-directory dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2436 (unless (file-exists-p dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2437 (make-directory dir t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2438 (ido-set-current-directory dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2439 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2440 (setq ido-text-init nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2441 (setq ido-rotate-temp t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2442 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2443
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2444 (defun ido-get-work-file (incr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2445 (let ((n (length ido-work-file-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2446 (i (+ ido-work-file-index incr))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2447 name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2448 (if (> incr 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2449 (if (>= i n) (setq i 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2450 (if (< i 0) (setq i (1- n))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2451 (setq name (nth i ido-work-file-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2452 (setq ido-work-file-index i)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2453 name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2454
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2455 (defun ido-prev-work-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2456 "Change to next working file name in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2457 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2458 (let ((name (ido-get-work-file 1)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2459 (when name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2460 (setq ido-text-init name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2461 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2462 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2463
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2464 (defun ido-next-work-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2465 "Change to previous working file name in list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2466 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2467 (let ((name (ido-get-work-file -1)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2468 (when name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2469 (setq ido-text-init name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2470 (setq ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2471 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2472
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2473 (defun ido-copy-current-file-name (all)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2474 "Insert file name of current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2475 If repeated, insert text from buffer instead."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2476 (interactive "P")
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2477 (let* ((bfname (buffer-file-name ido-entry-buffer))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2478 (name (and bfname (file-name-nondirectory bfname))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2479 (when name
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2480 (setq ido-text-init
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2481 (if (or all
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2482 (not (equal (file-name-directory bfname) ido-current-directory))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2483 (not (string-match "\\.[^.]*\\'" name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2484 name
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2485 (substring name 0 (1+ (match-beginning 0)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2486 (setq ido-exit 'refresh
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2487 ido-try-merged-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2488 (exit-minibuffer))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2489
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2490 (defun ido-copy-current-word (all)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
2491 "Insert current word (file or directory name) from current buffer."
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2492 (interactive "P")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2493 (let ((word (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2494 (set-buffer ido-entry-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2495 (let ((p (point)) start-line end-line start-name name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2496 (beginning-of-line)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2497 (setq start-line (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2498 (end-of-line)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2499 (setq end-line (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2500 (goto-char p)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2501 (if (re-search-backward "[^-_a-zA-Z0-9:./\\~@]" start-line 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2502 (forward-char 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2503 (setq start-name (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2504 (re-search-forward "[-_a-zA-Z0-9:./\\~@]*" end-line 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2505 (if (= start-name (point))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2506 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2507 (buffer-substring-no-properties start-name (point)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2508 (if (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2509 ((not word) nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2510 ((string-match "\\`[~/]" word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2511 (setq ido-text-init word
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2512 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2513 ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2514 ((string-match "/" word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2515 (setq ido-text-init (concat ido-current-directory word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2516 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2517 ido-exit 'chdir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2518 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2519 (setq ido-text-init word
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2520 ido-try-merged-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2521 ido-exit 'refresh)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2522 (exit-minibuffer))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2523
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2524 (defun ido-next-match ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2525 "Put first element of `ido-matches' at the end of the list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2526 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2527 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2528 (let ((next (cadr ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2529 (setq ido-cur-list (ido-chop ido-cur-list next))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2530 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2531 (setq ido-rotate t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2532
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2533 (defun ido-prev-match ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2534 "Put last element of `ido-matches' at the front of the list."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2535 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2536 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2537 (let ((prev (car (last ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2538 (setq ido-cur-list (ido-chop ido-cur-list prev))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2539 (setq ido-rescan t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2540 (setq ido-rotate t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2541
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2542 (defun ido-next-match-dir ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2543 "Find next directory in match list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2544 If work directories have been merged, cycle through directories for
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2545 first matching file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2546 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2547 (if ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2548 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2549 (let* ((elt (car ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2550 (dirs (cdr elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2551 (when (> (length dirs) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2552 (setcdr elt (ido-chop dirs (cadr dirs))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2553 (setq ido-rescan nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2554 (let ((cnt (length ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2555 (i 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2556 (while (and (< i cnt) (not (ido-final-slash (nth i ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2557 (setq i (1+ i)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2558 (if (< i cnt)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2559 (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
2560
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2561 (defun ido-prev-match-dir ()
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2562 "Find previous directory in match list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2563 If work directories have been merged, cycle through directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2564 for first matching file."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2565 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2566 (if ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2567 (if ido-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2568 (let* ((elt (car ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2569 (dirs (cdr elt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2570 (when (> (length dirs) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2571 (setcdr elt (ido-chop dirs (car (last dirs)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2572 (setq ido-rescan nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2573 (let* ((cnt (length ido-matches))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2574 (i (1- cnt)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2575 (while (and (> i 0) (not (ido-final-slash (nth i ido-matches))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2576 (setq i (1- i)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2577 (if (> i 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2578 (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
2579
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2580 (defun ido-restrict-to-matches ()
47977
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2581 "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
2582 (interactive)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2583 (when ido-matches
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2584 (setq ido-cur-list ido-matches
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2585 ido-text-init ""
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2586 ido-rescan nil
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2587 ido-exit 'keep)
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2588 (exit-minibuffer)))
01727f34cb9d (ido-restrict-to-matches): New command.
Kim F. Storm <storm@cua.dk>
parents: 47203
diff changeset
2589
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2590 (defun ido-chop (items elem)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2591 "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
2592 (let ((ret nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2593 (next nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2594 (sofar nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2595 (while (not ret)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2596 (setq next (car items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2597 (if (equal next elem)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2598 (setq ret (append items (nreverse sofar)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2599 ;; else
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2600 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2601 (setq items (cdr items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2602 (setq sofar (cons next sofar)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2603 ret))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2604
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2605 (defun ido-name (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2606 ;; Return file name for current item, whether in a normal list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2607 ;; or a merged work directory list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2608 (if (consp item) (car item) item))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2609
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2610
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2611 ;;; CREATE LIST OF ALL CURRENT FILES
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2612
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2613 (defun ido-all-completions ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2614 ;; Return unsorted list of all competions.
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2615 (let ((ido-process-ignore-lists nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2616 (ido-directory-too-big nil))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2617 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2618 ((eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2619 (ido-make-file-list1 ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2620 ((eq ido-cur-item 'dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2621 (ido-make-dir-list1 ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2622 ((eq ido-cur-item 'buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2623 (ido-make-buffer-list1))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2624 ((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
2625 ido-choice-list)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2626 (t nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2627
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2628
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2629 (defun ido-sort-list (items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2630 ;; Simple list of file or buffer names
53166
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2631 (sort items (lambda (a b) (string-lessp (ido-no-final-slash a)
77088b91def1 * ido.el (ido-use-filename-at-point, ido-use-url-at-point):
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2632 (ido-no-final-slash b)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2633
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2634 (defun ido-sort-merged-list (items promote)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2635 ;; Input is list of ("file" . "dir") cons cells.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2636 ;; Output is sorted list of ("file "dir" ...) lists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2637 (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
2638 res a cur dirs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2639 (while l
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2640 (setq a (car l)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2641 l (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2642 (if (and res (string-equal (car (car res)) (car a)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2643 (progn
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2644 (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
2645 (if (and promote (string-equal ido-current-directory (cdr a)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2646 (setq cur t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2647 (setq res (cons (list (car a) (cdr a)) res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2648 cur nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2649 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2650
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2651 (defun ido-wide-find-dirs-or-files (dir file &optional prefix finddir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2652 ;; 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
2653 (let ((filenames
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2654 (split-string
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2655 (shell-command-to-string
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2656 (concat "find " dir " -name \"" (if prefix "" "*") file "*\" -type " (if finddir "d" "f") " -print"))))
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2657 filename d f
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2658 res)
49235
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2659 (while filenames
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2660 (setq filename (car filenames)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2661 filenames (cdr filenames))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2662 (if (and (string-match "^/" filename)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2663 (file-exists-p filename))
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2664 (setq d (file-name-directory filename)
beca89eeabb3 (ido-read-internal, ido-file-internal)
Kim F. Storm <storm@cua.dk>
parents: 49233
diff changeset
2665 f (file-name-nondirectory filename)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2666 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
2667 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2668
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2669 (defun ido-flatten-merged-list (items)
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
2670 ;; 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
2671 (let (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2672 (while items
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2673 (let* ((item (car items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2674 (file (car item))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2675 (dirs (cdr item)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2676 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2677 (setq res (cons (concat (car dirs) file) res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2678 dirs (cdr dirs))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2679 (setq items (cdr items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2680 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2681
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2682 (defun ido-make-merged-file-list (text auto wide)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2683 (let (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2684 (message "Searching for `%s'...." text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2685 (if (and (ido-final-slash text) ido-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2686 (if wide
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2687 (setq res (ido-wide-find-dirs-or-files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2688 ido-current-directory (substring text 0 -1) ido-enable-prefix t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2689 ;; Use list of cached directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2690 (let ((re (concat (regexp-quote (substring text 0 -1)) "[^/:]*/\\'"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2691 (dirs ido-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2692 dir b d f)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2693 (if nil ;; simple
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2694 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2695 (setq dir (car (car dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2696 dirs (cdr dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2697 (when (and (string-match re dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2698 (not (ido-ignore-item-p dir ido-ignore-directories-merge))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2699 (file-directory-p dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2700 (setq b (substring dir 0 -1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2701 f (concat (file-name-nondirectory b) "/")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2702 d (file-name-directory b)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2703 res (cons (cons f d) res))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2704 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2705 (setq dir (car dirs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2706 d (car dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2707 dirs (cdr dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2708 (when (not (ido-ignore-item-p d ido-ignore-directories-merge))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2709 (setq dir (cdr (cdr dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2710 (while dir
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2711 (setq f (car dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2712 dir (cdr dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2713 (if (and (string-match re f)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2714 (not (ido-ignore-item-p f ido-ignore-directories)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2715 (setq res (cons (cons f d) res)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2716 (if (and auto (input-pending-p))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2717 (setq dirs nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2718 res t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2719 (if wide
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2720 (setq res (ido-wide-find-dirs-or-files
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2721 ido-current-directory text ido-enable-prefix nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2722 (let ((ido-text text)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2723 (dirs ido-work-directory-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2724 (must-match (and text (> (length text) 0)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2725 dir fl)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2726 (if (and auto (not (member ido-current-directory dirs)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2727 (setq dirs (cons ido-current-directory dirs)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2728 (while dirs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2729 (setq dir (car dirs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2730 dirs (cdr dirs))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2731 (when (and dir (stringp dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2732 (or ido-merge-ftp-work-directories
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2733 (not (ido-is-ftp-directory dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2734 (file-directory-p dir)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2735 ;; TODO. check for nonreadable and too-big.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2736 (setq fl (if (eq ido-cur-item 'file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2737 (ido-make-file-list1 dir t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2738 (ido-make-dir-list1 dir t))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2739 (if must-match
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2740 (setq fl (ido-set-matches1 fl)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2741 (if fl
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2742 (setq res (nconc fl res))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2743 (if (and auto (input-pending-p))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2744 (setq dirs nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2745 res t))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2746 (if (and res (not (eq res t)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2747 (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
2748 (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
2749 (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
2750 (> (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
2751 (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
2752 (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
2753 (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
2754 (setq res (cons elt res)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2755 (message nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2756 res))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2757
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2758 (defun ido-make-buffer-list1 (&optional frame visible)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2759 ;; Return list of non-ignored buffer names
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2760 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2761 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2762 (lambda (x)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2763 (let ((name (buffer-name x)))
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
2764 (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
2765 name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2766 (buffer-list frame))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2767
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2768 (defun ido-make-buffer-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2769 ;; Return the current list of buffers.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2770 ;; Currently visible buffers are put at the end of the list.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2771 ;; The hook `ido-make-buflist-hook' is run after the list has been
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2772 ;; 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
2773 ;; 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
2774 ;; it is put to the start of the list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2775 (let* ((ido-current-buffers (ido-get-buffers-in-frames 'current))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2776 (ido-temp-list (ido-make-buffer-list1 (selected-frame) ido-current-buffers)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2777 (if ido-temp-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2778 (nconc ido-temp-list ido-current-buffers)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2779 (setq ido-temp-list ido-current-buffers))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2780 (if default
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2781 (progn
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2782 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2783 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2784 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2785 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2786 (run-hooks 'ido-make-buffer-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2787 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2788
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2789 (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
2790 ;; 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
2791 ;; 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
2792 ;; 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
2793 (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
2794 (if default
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2795 (progn
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2796 (setq ido-temp-list
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2797 (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
2798 (setq ido-temp-list
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2799 (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
2800 ; (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
2801 ido-temp-list))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
2802
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2803 (defun ido-to-end (items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2804 ;; Move the elements from ITEMS to the end of `ido-temp-list'
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2805 (mapcar
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2806 (lambda (elem)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2807 (setq ido-temp-list (delq elem ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2808 items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2809 (if ido-temp-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2810 (nconc ido-temp-list items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2811 (setq ido-temp-list items)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2812
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2813 (defun ido-file-name-all-completions1 (dir)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2814 (cond
53459
4b85f31aef7c (ido-nonreadable-directory-p): New defun to check for
Kim F. Storm <storm@cua.dk>
parents: 53323
diff changeset
2815 ((ido-nonreadable-directory-p dir) '())
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
2816 ;; 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
2817 ;; Caller must have done that if necessary.
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2818 ((and ido-enable-tramp-completion
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2819 (string-match "\\`/\\([^/:]+:\\([^/:@]+@\\)?\\)\\'" dir))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2820
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2821 ;; Trick tramp's file-name-all-completions handler to DTRT, as it
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2822 ;; has some pretty obscure requirements. This seems to work...
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2823 ;; /ftp: => (f-n-a-c "/ftp:" "")
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2824 ;; /ftp:kfs: => (f-n-a-c "" "/ftp:kfs:")
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2825 ;; /ftp:kfs@ => (f-n-a-c "ftp:kfs@" "/")
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2826 ;; /ftp:kfs@kfs: => (f-n-a-c "" "/ftp:kfs@kfs:")
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2827 ;; Currently no attempt is made to handle multi: stuff.
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2828
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2829 (let* ((prefix (match-string 1 dir))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2830 (user-flag (match-beginning 2))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2831 (len (and prefix (length prefix)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2832 compl)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2833 (if user-flag
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2834 (setq dir (substring dir 1)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2835 (require 'tramp nil t)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2836 (ido-trace "tramp complete" dir)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2837 (setq compl (file-name-all-completions dir (if user-flag "/" "")))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2838 (if (> len 0)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2839 (mapcar (lambda (c) (substring c len)) compl)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2840 compl)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2841 (t
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
2842 (file-name-all-completions "" dir))))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2843
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2844 (defun ido-file-name-all-completions (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2845 ;; Return name of all files in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2846 ;; Uses and updates ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2847 (if (and (numberp ido-max-dir-file-cache) (> ido-max-dir-file-cache 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2848 (stringp dir) (> (length dir) 0)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2849 (ido-may-cache-directory dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2850 (let* ((cached (assoc dir ido-dir-file-cache))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2851 (ctime (nth 1 cached))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2852 (ftp (ido-is-ftp-directory dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2853 (attr (if ftp nil (file-attributes dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2854 (mtime (nth 5 attr))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2855 valid)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2856 (when cached ; should we use the cached entry ?
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2857 (if ftp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2858 (setq valid (and (eq (car ctime) 'ftp)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2859 (ido-cache-ftp-valid (cdr ctime))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2860 (if attr
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2861 (setq valid (and (= (car ctime) (car mtime))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2862 (= (car (cdr ctime)) (car (cdr mtime)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2863 (if (not valid)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2864 (setq ido-dir-file-cache (delq cached ido-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2865 cached nil)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2866 (unless cached
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2867 (if (and ftp (file-readable-p dir))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2868 (setq mtime (cons 'ftp (ido-time-stamp))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2869 (if mtime
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2870 (setq cached (cons dir (cons mtime (ido-file-name-all-completions1 dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2871 ido-dir-file-cache (cons cached ido-dir-file-cache)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2872 (if (> (length ido-dir-file-cache) ido-max-dir-file-cache)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2873 (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
2874 (and cached
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2875 (cdr (cdr cached))))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2876 (ido-file-name-all-completions1 dir)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2877
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2878 (defun ido-remove-cached-dir (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2879 ;; Remove dir from ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2880 (if (and ido-dir-file-cache
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2881 (stringp dir) (> (length dir) 0))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2882 (let ((cached (assoc dir ido-dir-file-cache)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2883 (if cached
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2884 (setq ido-dir-file-cache (delq cached ido-dir-file-cache))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2885
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2886
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2887 (defun ido-make-file-list1 (dir &optional merged)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2888 ;; Return list of non-ignored files in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2889 ;; If MERGED is non-nil, each file is cons'ed with DIR
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
2890 (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
2891 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2892 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2893 (lambda (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2894 (if (not (ido-ignore-item-p name ido-ignore-files t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2895 (if merged (cons name dir) name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2896 (ido-file-name-all-completions dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2897
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2898 (defun ido-make-file-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2899 ;; Return the current list of files.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2900 ;; 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
2901 ;; 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
2902 ;; 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
2903 ;; in this list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2904 (let ((ido-temp-list (ido-make-file-list1 ido-current-directory)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2905 (setq ido-temp-list (ido-sort-list ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2906 (let ((default-directory ido-current-directory))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2907 (ido-to-end ;; move ftp hosts and visited files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2908 (delq nil (mapcar
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2909 (lambda (x) (if (or (string-match "..:\\'" x)
49368
52f5fa69909e (ido-make-file-list, ido-make-dir-list): Don't move
Kim F. Storm <storm@cua.dk>
parents: 49235
diff changeset
2910 (and (not (ido-final-slash x))
52f5fa69909e (ido-make-file-list, ido-make-dir-list): Don't move
Kim F. Storm <storm@cua.dk>
parents: 49235
diff changeset
2911 (get-file-buffer x))) x))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2912 ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2913 (ido-to-end ;; move . files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2914 (delq nil (mapcar
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2915 (lambda (x) (if (string-equal (substring x 0 1) ".") x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2916 ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2917 (if (and default (member default ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2918 (if (or ido-rotate-temp ido-rotate-file-list-default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2919 (unless (equal default (car ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2920 (let ((l ido-temp-list) k)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2921 (while (and l (cdr l) (not (equal default (car (cdr l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2922 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2923 (setq k (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2924 (setcdr l nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2925 (nconc k ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2926 (setq ido-temp-list k)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2927 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2928 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2929 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2930 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2931 (when ido-show-dot-for-dired
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2932 (setq ido-temp-list (delete "." ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2933 (setq ido-temp-list (cons "." ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2934 (run-hooks 'ido-make-file-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2935 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2936
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2937 (defun ido-make-dir-list1 (dir &optional merged)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2938 ;; Return list of non-ignored subdirs in DIR
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2939 ;; 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
2940 (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
2941 (delq nil
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2942 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2943 (lambda (name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2944 (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
2945 (if merged (cons name dir) name)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2946 (ido-file-name-all-completions dir)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2947
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2948 (defun ido-make-dir-list (default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2949 ;; Return the current list of directories.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2950 ;; 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
2951 ;; created to allow the user to further modify the order of the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2952 ;; directory names in this list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2953 (let ((ido-temp-list (ido-make-dir-list1 ido-current-directory)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2954 (setq ido-temp-list (ido-sort-list ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2955 (ido-to-end ;; move . files to end
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2956 (delq nil (mapcar
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2957 (lambda (x) (if (string-equal (substring x 0 1) ".") x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2958 ido-temp-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2959 (if (and default (member default ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2960 (if (or ido-rotate-temp ido-rotate-file-list-default)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2961 (unless (equal default (car ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2962 (let ((l ido-temp-list) k)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2963 (while (and l (cdr l) (not (equal default (car (cdr l)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2964 (setq l (cdr l)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2965 (setq k (cdr l))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2966 (setcdr l nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2967 (nconc k ido-temp-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2968 (setq ido-temp-list k)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2969 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2970 (delete default ido-temp-list))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2971 (setq ido-temp-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2972 (cons default ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2973 (setq ido-temp-list (delete "." ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2974 (setq ido-temp-list (cons "." ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2975 (run-hooks 'ido-make-dir-list-hook)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2976 ido-temp-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2977
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2978 ;; List of the files visible in the current frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2979 (defvar ido-bufs-in-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2980
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2981 (defun ido-get-buffers-in-frames (&optional current)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2982 ;; Return the list of buffers that are visible in the current frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2983 ;; If optional argument `current' is given, restrict searching to the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2984 ;; current frame, rather than all frames, regardless of value of
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2985 ;; `ido-all-frames'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2986 (let ((ido-bufs-in-frame nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2987 (walk-windows 'ido-get-bufname nil
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
2988 (if current
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2989 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2990 ido-all-frames))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2991 ido-bufs-in-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2992
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2993 (defun ido-get-bufname (win)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2994 ;; Used by `ido-get-buffers-in-frames' to walk through all windows
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2995 (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
2996 (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
2997 (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
2998 ;; 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
2999 ;; 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
3000 ;; put into the list twice.
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3001 (setq ido-bufs-in-frame
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3002 (cons buf ido-bufs-in-frame)))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3003
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3004 ;;; FIND MATCHING ITEMS
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3005
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3006 (defun ido-set-matches1 (items &optional do-full)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3007 ;; Return list of matches in items
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3008 (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
3009 (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
3010 (text (if slash (substring ido-text 0 -1) ido-text))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3011 (rexq (concat (if ido-enable-regexp text (regexp-quote text)) (if slash ".*/" "")))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3012 (re (if ido-enable-prefix (concat "\\`" rexq) rexq))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3013 (full-re (and do-full (not ido-enable-regexp) (not (string-match "\$\\'" re))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3014 (concat "\\`" re "\\'")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3015 (prefix-re (and full-re (not ido-enable-prefix)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3016 (concat "\\`" rexq)))
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3017 (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
3018 (not ido-process-ignore-lists)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3019 ido-enable-prefix
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3020 (= (length ido-text) 0)))
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3021
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3022 full-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3023 prefix-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3024 matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3025 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3026 (lambda (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3027 (let ((name (ido-name item)))
57065
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3028 (if (and (or non-prefix-dot
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3029 (if (= (aref ido-text 0) ?.)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3030 (= (aref name 0) ?.)
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3031 (/= (aref name 0) ?.)))
4bf76a50a989 (ido-enable-dot-prefix): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 56754
diff changeset
3032 (string-match re name))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3033 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3034 ((and full-re (string-match full-re name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3035 (setq full-matches (cons item full-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3036 ((and prefix-re (string-match prefix-re name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3037 (setq prefix-matches (cons item prefix-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3038 (t (setq matches (cons item matches))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3039 t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3040 items)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3041 (if prefix-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3042 (setq matches (nconc prefix-matches matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3043 (if full-matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3044 (setq matches (nconc full-matches matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3045 (when (and (null matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3046 ido-enable-flex-matching
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3047 (> (length ido-text) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3048 (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
3049 (setq re (mapconcat #'regexp-quote (split-string ido-text "") ".*"))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3050 (if ido-enable-prefix
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3051 (setq re (concat "\\`" re)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3052 (mapcar
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3053 (lambda (item)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3054 (let ((name (ido-name item)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3055 (if (string-match re name)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3056 (setq matches (cons item matches)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3057 items))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3058 matches))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3059
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3060
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3061 (defun ido-set-matches ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3062 ;; Set `ido-matches' to the list of items matching prompt
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3063 (when ido-rescan
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3064 (setq ido-matches (ido-set-matches1 (reverse ido-cur-list) (not ido-rotate))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3065 ido-rotate nil)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3066
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3067 (defun ido-ignore-item-p (name re-list &optional ignore-ext)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3068 ;; 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
3069 (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
3070 (and
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3071 ido-process-ignore-lists re-list
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3072 (let ((data (match-data))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3073 (ext-list (and ignore-ext ido-ignore-extensions
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3074 completion-ignored-extensions))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3075 ignorep nextstr
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3076 (flen (length name)) slen)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3077 (while ext-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3078 (setq nextstr (car ext-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3079 (if (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3080 ((stringp nextstr)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3081 (and (>= flen (setq slen (length nextstr)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3082 (string-equal (substring name (- flen slen)) nextstr)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3083 ((fboundp nextstr) (funcall nextstr name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3084 (t nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3085 (setq ignorep t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3086 ext-list nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3087 re-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3088 (setq ext-list (cdr ext-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3089 (while re-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3090 (setq nextstr (car re-list))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3091 (if (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3092 ((stringp nextstr) (string-match nextstr name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3093 ((fboundp nextstr) (funcall nextstr name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3094 (t nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3095 (setq ignorep t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3096 re-list nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3097 (setq re-list (cdr re-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3098 ;; return the result
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3099 (if ignorep
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3100 (setq ido-ignored-list (cons name ido-ignored-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3101 (set-match-data data)
47203
d7ff55da60cd (ido-ignore-item-temp-list): New variable.
Kim F. Storm <storm@cua.dk>
parents: 46631
diff changeset
3102 ignorep))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3103
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3104
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3105 ;; Private variable used by `ido-word-matching-substring'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3106 (defvar ido-change-word-sub)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3107
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3108 (defun ido-find-common-substring (items subs)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3109 ;; Return common string following SUBS in each element of ITEMS.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3110 (let (res
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3111 alist
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3112 ido-change-word-sub)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3113 (setq ido-change-word-sub
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3114 (if ido-enable-regexp
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3115 subs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3116 (regexp-quote subs)))
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3117 (setq res (mapcar #'ido-word-matching-substring items))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3118 (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
3119 (setq alist (mapcar #'ido-makealist res)) ;; could use an OBARRAY
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3120
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3121 ;; 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
3122 (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
3123 (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
3124 (if (eq comp t)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3125 subs
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3126 comp))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3127
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3128 (defun ido-word-matching-substring (word)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3129 ;; Return part of WORD before 1st match to `ido-change-word-sub'.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3130 ;; 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
3131 (let ((case-fold-search ido-case-fold))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3132 (let ((m (string-match ido-change-word-sub (ido-name word))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3133 (if m
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3134 (substring (ido-name word) m)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3135 ;; else no match
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3136 nil))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3137
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3138 (defun ido-makealist (res)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3139 ;; Return dotted pair (RES . 1).
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3140 (cons res 1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3141
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3142 (defun ido-choose-completion-string (choice buffer mini-p base-size)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3143 (when (ido-active)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3144 ;; Insert the completion into the buffer where completion was requested.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3145 (if (get-buffer ido-completion-buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3146 (kill-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3147 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3148 ((ido-active t) ;; ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3149 (setq ido-current-directory ""
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3150 ido-text choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3151 ido-exit 'done))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3152 ((not (ido-final-slash choice))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3153 (setq ido-text choice
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3154 ido-exit 'done))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3155 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3156 (ido-set-current-directory ido-current-directory choice)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3157 (setq ido-exit 'refresh)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3158 (exit-minibuffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3159 t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3160
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3161 (defun ido-completion-help ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3162 "Show possible completions in a *File Completions* buffer."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3163 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3164 (setq ido-rescan nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3165 (let ((temp-buf (get-buffer ido-completion-buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3166 display-it full-list)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3167 (if (and (eq last-command this-command) temp-buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3168 ;; scroll buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3169 (let (win (buf (current-buffer)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3170 (display-buffer temp-buf nil nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3171 (set-buffer temp-buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3172 (setq win (get-buffer-window temp-buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3173 (if (pos-visible-in-window-p (point-max) win)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3174 (if (or ido-completion-buffer-all-completions (boundp 'ido-completion-buffer-full))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3175 (set-window-start win (point-min))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3176 (set (make-local-variable 'ido-completion-buffer-full) t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3177 (setq full-list t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3178 display-it t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3179 (scroll-other-window))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3180 (set-buffer buf))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3181 (setq display-it t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3182 (if display-it
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3183 (with-output-to-temp-buffer ido-completion-buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3184 (let ((completion-list (ido-sort-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3185 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3186 (ido-use-merged-list
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3187 (ido-flatten-merged-list (or ido-matches ido-cur-list)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3188 ((or full-list ido-completion-buffer-all-completions)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3189 (ido-all-completions))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3190 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3191 (copy-sequence (or ido-matches ido-cur-list)))))))
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3192 (if (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3193 ;; XEmacs extents are put on by default, doesn't seem to be
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3194 ;; any way of switching them off.
46333
a86a0859521a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46292
diff changeset
3195 ;; 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
3196 (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
3197 (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
3198 :help-string "ido "
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3199 :activate-callback
46225
172a10dd044b Changed xemacs specific code to avoid byte compiler warning in GNU
Kim F. Storm <storm@cua.dk>
parents: 46118
diff changeset
3200 '(lambda (x y z) (message "doesn't work yet, sorry!"))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3201 ;; else running Emacs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3202 ;;(add-hook 'completion-setup-hook 'completion-setup-function)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3203 (display-completion-list completion-list)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3204
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3205 ;;; KILL CURRENT BUFFER
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3206 (defun ido-kill-buffer-at-head ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3207 "Kill the buffer at the head of `ido-matches'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3208 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3209 (let ((enable-recursive-minibuffers t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3210 (buf (car ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3211 (when buf
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3212 (kill-buffer buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3213 ;; Check if buffer still exists.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3214 (if (get-buffer buf)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3215 ;; buffer couldn't be killed.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3216 (setq ido-rescan t)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3217 ;; else buffer was killed so remove name from list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3218 (setq ido-cur-list (delq buf ido-cur-list))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3219
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3220 ;;; DELETE CURRENT FILE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3221 (defun ido-delete-file-at-head ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3222 "Delete the file at the head of `ido-matches'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3223 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3224 (let ((enable-recursive-minibuffers t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3225 (file (car ido-matches)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3226 (if file
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3227 (setq file (concat ido-current-directory file)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3228 (when (and file
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3229 (file-exists-p file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3230 (not (file-directory-p file))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3231 (file-writable-p ido-current-directory)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3232 (yes-or-no-p (concat "Delete " file " ")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3233 (delete-file file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3234 ;; Check if file still exists.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3235 (if (file-exists-p file)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3236 ;; file could not be deleted
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3237 (setq ido-rescan t)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3238 ;; else file was killed so remove name from list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3239 (setq ido-cur-list (delq (car ido-matches) ido-cur-list))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3240
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3241
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3242 ;;; VISIT CHOSEN BUFFER
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3243 (defun ido-visit-buffer (buffer method &optional record)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3244 "Visit file named FILE according to METHOD.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3245 Record command in command-history if optional RECORD is non-nil."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3246
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3247 (let (win newframe)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3248 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3249 ((eq method 'kill)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3250 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3251 (ido-record-command 'kill-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3252 (kill-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3253
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3254 ((eq method 'samewindow)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3255 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3256 (ido-record-command 'switch-to-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3257 (switch-to-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3258
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3259 ((memq method '(always-frame maybe-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3260 (cond
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3261 ((and window-system
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3262 (setq win (ido-window-buffer-p buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3263 (or (eq method 'always-frame)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3264 (y-or-n-p "Jump to frame? ")))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3265 (setq newframe (window-frame win))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3266 (if (fboundp 'select-frame-set-input-focus)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3267 (select-frame-set-input-focus newframe)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3268 (raise-frame newframe)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3269 (select-frame newframe)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3270 (unless (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3271 (set-mouse-position (selected-frame) (1- (frame-width)) 0)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3272 (select-window win))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3273 (t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3274 ;; No buffer in other frames...
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3275 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3276 (ido-record-command 'switch-to-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3277 (switch-to-buffer buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3278 )))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3279
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3280 ((eq method 'otherwindow)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3281 (if record
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3282 (ido-record-command 'switch-to-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3283 (switch-to-buffer-other-window buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3284
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3285 ((eq method 'display)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3286 (display-buffer buffer))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3287
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3288 ((eq method 'otherframe)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3289 (switch-to-buffer-other-frame buffer)
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3290 (unless (featurep 'xemacs)
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3291 (select-frame-set-input-focus (selected-frame)))
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3292 ))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3293
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3294
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3295 (defun ido-window-buffer-p (buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3296 ;; Return window pointer if BUFFER is visible in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3297 ;; If BUFFER is visible in the current frame, return nil.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3298 (let ((blist (ido-get-buffers-in-frames 'current)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3299 ;;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
3300 (if (member buffer blist)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3301 nil
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3302 ;; maybe in other frame or icon
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3303 (get-buffer-window buffer 0) ; better than 'visible
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3304 )))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3305
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3306
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3307 ;;; ----------- IDONIZED FUNCTIONS ------------
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3308
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3309 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3310 (defun ido-switch-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3311 "Switch to another buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3312 The buffer is displayed according to `ido-default-buffer-method' -- the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3313 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
3314 in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3315
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3316 As you type in a string, all of the buffers matching the string are
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3317 displayed if substring-matching is used \(default). Look at
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3318 `ido-enable-prefix' and `ido-toggle-prefix'. When you have found the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3319 buffer you want, it can then be selected. As you type, most keys have their
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3320 normal keybindings, except for the following: \\<ido-mode-map>
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3321
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3322 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
3323 list is empty, possibly prompt to create new buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3324
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3325 \\[ido-select-text] Select the current prompt as the buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3326 If no buffer is found, prompt for a new one.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3327
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3328 \\[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
3329 \\[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
3330 \\[ido-complete] Complete a common suffix to the current string that
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3331 matches all buffers. If there is only one match, select that buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3332 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
3333 in a separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3334 \\[ido-edit-input] Edit input string.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3335 \\[ido-fallback-command] Fallback to non-ido version of current command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3336 \\[ido-toggle-regexp] Toggle regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3337 \\[ido-toggle-prefix] Toggle between substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3338 \\[ido-toggle-case] Toggle case-sensitive searching of buffer names.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3339 \\[ido-completion-help] Show list of matching buffers in separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3340 \\[ido-enter-find-file] Drop into ido-find-file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3341 \\[ido-kill-buffer-at-head] Kill buffer at head of buffer list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3342 \\[ido-toggle-ignore] Toggle ignoring buffers listed in `ido-ignore-buffers'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3343 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3344 (ido-buffer-internal ido-default-buffer-method))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3345
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3346 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3347 (defun ido-switch-buffer-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3348 "Switch to another buffer and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3349 The buffer name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3350 For details of keybindings, do `\\[describe-function] ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3351 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3352 (ido-buffer-internal 'otherwindow 'switch-to-buffer-other-window))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3353
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3354 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3355 (defun ido-display-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3356 "Display a buffer in another window but don't select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3357 The buffer name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3358 For details of keybindings, do `\\[describe-function] ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3359 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3360 (ido-buffer-internal 'display 'display-buffer nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3361
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3362 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3363 (defun ido-kill-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3364 "Kill a buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3365 The buffer name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3366 For details of keybindings, do `\\[describe-function] ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3367 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3368 (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
3369
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3370 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3371 (defun ido-insert-buffer ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3372 "Insert contents of a buffer in current buffer after point.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3373 The buffer name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3374 For details of keybindings, do `\\[describe-function] ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3375 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3376 (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
3377
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3378 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3379 (defun ido-switch-buffer-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3380 "Switch to another buffer and show it in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3381 The buffer name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3382 For details of keybindings, do `\\[describe-function] ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3383 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3384 (if ido-mode
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3385 (ido-buffer-internal 'otherframe)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3386 (call-interactively 'switch-to-buffer-other-frame)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3387
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3388 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3389 (defun ido-find-file-in-dir (dir)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3390 "Switch to another file starting from DIR."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3391 (interactive "DDir: ")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3392 (if (not (equal (substring dir -1) "/"))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3393 (setq dir (concat dir "/")))
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3394 (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
3395
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3396 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3397 (defun ido-find-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3398 "Edit file with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3399 The file is displayed according to `ido-default-file-method' -- the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3400 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
3401 visible in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3402
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3403 The file name is selected interactively by typing a substring. As you type
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3404 in a string, all of the filenames matching the string are displayed if
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3405 substring-matching is used \(default). Look at `ido-enable-prefix' and
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3406 `ido-toggle-prefix'. When you have found the filename you want, it can
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3407 then be selected. As you type, most keys have their normal keybindings,
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3408 except for the following: \\<ido-mode-map>
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3409
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3410 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
3411 list is empty, possibly prompt to create new file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3412
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3413 \\[ido-select-text] Select the current prompt as the buffer or file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3414 If no buffer or file is found, prompt for a new one.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3415
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3416 \\[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
3417 \\[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
3418 \\[ido-complete] Complete a common suffix to the current string that
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3419 matches all files. If there is only one match, select that file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3420 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
3421 in a separate window.
49208
5a945cb7d742 (ido-ignore-directories-merge): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 49180
diff changeset
3422 \\[ido-edit-input] Edit input string (including directory).
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3423 \\[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
3424 \\[ido-merge-work-directories] search for file in the work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3425 \\[ido-forget-work-directory] removes current directory from the work directory history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3426 \\[ido-prev-work-file] or \\[ido-next-work-file] cycle through the work file history.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3427 \\[ido-wide-find-file] and \\[ido-wide-find-dir] prompts and uses find to locate files or directories.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3428 \\[ido-make-directory] prompts for a directory to create in current directory.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3429 \\[ido-fallback-command] Fallback to non-ido version of current command.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3430 \\[ido-toggle-regexp] Toggle regexp searching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3431 \\[ido-toggle-prefix] Toggle between substring and prefix matching.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3432 \\[ido-toggle-case] Toggle case-sensitive searching of file names.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3433 \\[ido-toggle-vc] Toggle version control for this file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3434 \\[ido-toggle-literal] Toggle literal reading of this file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3435 \\[ido-completion-help] Show list of matching files in separate window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3436 \\[ido-toggle-ignore] Toggle ignoring files listed in `ido-ignore-files'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3437
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3438 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3439 (ido-file-internal ido-default-file-method))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3440
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3441 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3442 (defun ido-find-file-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3443 "Switch to another file and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3444 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3445 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3446 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3447 (ido-file-internal 'otherwindow 'find-file-other-window))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3448
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3449 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3450 (defun ido-find-alternate-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3451 "Switch to another file and show it in another window.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3452 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3453 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3454 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3455 (ido-file-internal 'alt-file 'find-alternate-file nil "Find alternate file: "))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3456
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3457 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3458 (defun ido-find-file-read-only ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3459 "Edit file read-only with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3460 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3461 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3462 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3463 (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
3464
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3465 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3466 (defun ido-find-file-read-only-other-window ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3467 "Edit file read-only in other window with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3468 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3469 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3470 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3471 (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
3472
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3473 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3474 (defun ido-find-file-read-only-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3475 "Edit file read-only in other frame with name obtained via minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3476 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3477 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3478 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3479 (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
3480
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3481 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3482 (defun ido-display-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3483 "Display a file in another window but don't select it.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3484 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3485 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3486 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3487 (ido-file-internal 'display nil nil nil nil nil 'ignore))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3488
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3489 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3490 (defun ido-find-file-other-frame ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3491 "Switch to another file and show it in another frame.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3492 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3493 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3494 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3495 (ido-file-internal 'otherframe 'find-file-other-frame))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3496
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3497 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3498 (defun ido-write-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3499 "Write current buffer to a file.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3500 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3501 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3502 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3503 (let ((ido-process-ignore-lists t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3504 (ido-work-directory-match-only nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3505 (ido-ignore-files (cons "[^/]\\'" ido-ignore-files))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3506 (ido-report-no-match nil)
54776
ae50ef10fab5 (ido-confirm-unique-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 53459
diff changeset
3507 (ido-confirm-unique-completion t)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3508 (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
3509 (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
3510
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3511 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3512 (defun ido-insert-file ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3513 "Insert contents of file in current buffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3514 The file name is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3515 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3516 (interactive)
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3517 (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
3518
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3519 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3520 (defun ido-dired ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3521 "Call dired the ido way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3522 The directory is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3523 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3524 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3525 (let ((ido-report-no-match nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3526 (ido-auto-merge-work-directories-length -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3527 (ido-file-internal 'dired 'dired nil "Dired: " 'dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3528
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3529 (defun ido-list-directory ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3530 "Call list-directory the ido way.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3531 The directory is selected interactively by typing a substring.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3532 For details of keybindings, do `\\[describe-function] ido-find-file'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3533 (interactive)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3534 (let ((ido-report-no-match nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3535 (ido-auto-merge-work-directories-length -1))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3536 (ido-file-internal 'list-directory 'list-directory nil "List directory: " 'dir)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3537
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3538 ;;; XEmacs hack for showing default buffer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3539
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3540 ;; The first time we enter the minibuffer, Emacs puts up the default
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3541 ;; buffer to switch to, but XEmacs doesn't -- presumably there is a
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3542 ;; subtle difference in the two versions of post-command-hook. The
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3543 ;; default is shown for both whenever we delete all of our text
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3544 ;; though, indicating its just a problem the first time we enter the
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3545 ;; function. To solve this, we use another entry hook for emacs to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3546 ;; show the default the first time we enter the minibuffer.
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
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3549 ;;; ICOMPLETE TYPE CODE
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3550
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3551 (defun ido-initiate-auto-merge (buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3552 (ido-trace "\n*merge timeout*" buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3553 (setq ido-auto-merge-timer nil)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3554 (when (and (buffer-live-p buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3555 (= ido-use-mycompletion-depth (minibuffer-depth))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3556 (boundp 'ido-eoinput) ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3557 (let ((contents (buffer-substring-no-properties (minibuffer-prompt-end) ido-eoinput)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3558 (ido-trace "request merge")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3559 (setq ido-use-merged-list 'auto
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3560 ido-text-init contents
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3561 ido-rotate-temp t
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3562 ido-exit 'refresh)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3563 (save-excursion
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3564 (set-buffer buffer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3565 (ido-tidy))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3566 (throw 'ido contents))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3567
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3568 (defun ido-exhibit ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3569 "Post command hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3570 ;; Find matching files and display a list in the minibuffer.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3571 ;; Copied from `icomplete-exhibit' with two changes:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3572 ;; 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
3573 ;; 2. It calls my completion routine rather than the standard completion.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3574
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3575 (when (= ido-use-mycompletion-depth (minibuffer-depth))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3576 (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
3577 (buffer-undo-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3578 try-single-dir-match
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3579 refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3580
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3581 (ido-trace "\nexhibit" this-command)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3582 (ido-trace "dir" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3583 (ido-trace "contents" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3584 (ido-trace "list" ido-cur-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3585 (ido-trace "matches" ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3586 (ido-trace "rescan" ido-rescan)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3587
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3588 (save-excursion
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3589 (goto-char (point-max))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3590 ;; 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
3591 (unless (boundp 'ido-eoinput)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3592 ;; 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
3593 (make-local-variable 'ido-eoinput))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3594 (setq ido-eoinput (point))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3595
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3596 ;; Handle explicit directory changes
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3597 (cond
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3598 ((memq ido-cur-item '(buffer list))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3599 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3600
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3601 ((= (length contents) 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3602 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3603
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3604 ((= (length contents) 1)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3605 (when (and (ido-is-tramp-root) (string-equal contents "/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3606 (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
3607 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3608 )
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3609
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3610 ((and (string-match (if ido-enable-tramp-completion "..[:@]\\'" "..:\\'") contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3611 (ido-is-root-directory)) ;; Ange-ftp or tramp
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3612 (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
3613 (when (ido-is-slow-ftp-host)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3614 (setq ido-exit 'fallback)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3615 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3616 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3617
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3618 ((ido-final-slash contents) ;; xxx/
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3619 (ido-trace "final slash" contents)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3620 (cond
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3621 ((string-equal contents "~/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3622 (ido-set-current-home)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3623 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3624 ((string-equal contents "../")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3625 (ido-up-directory t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3626 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3627 ((string-equal contents "./")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3628 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3629 ((string-match "\\`~[a-zA-Z0-9]+/\\'" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3630 (ido-trace "new home" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3631 (ido-set-current-home contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3632 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3633 ((string-match "[$][A-Za-z0-9_]+/\\'" contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3634 (let ((exp (condition-case ()
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3635 (expand-file-name
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3636 (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
3637 ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3638 (error nil))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3639 (ido-trace contents exp)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3640 (when (and exp (file-directory-p exp))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3641 (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
3642 (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
3643 (setq refresh t))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3644 ((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
3645 (string-equal (substring contents 1) ":/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3646 (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
3647 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3648 ((string-equal (substring contents -2 -1) "/")
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3649 (ido-set-current-directory
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3650 (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
3651 (expand-file-name "/" ido-current-directory)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3652 "/"))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3653 (setq refresh t))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3654 ((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
3655 (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
3656 (ido-set-current-directory
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3657 (concat ido-current-directory (file-name-directory contents)))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3658 (setq refresh t))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3659 (t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3660 (ido-trace "try single dir")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3661 (setq try-single-dir-match t))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3662
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3663 ((and (string-equal (substring contents -2 -1) "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3664 (not (string-match "[$]" contents)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3665 (ido-set-current-directory
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3666 (cond
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3667 ((= (length contents) 2)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3668 "/")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3669 (ido-matches
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3670 (concat ido-current-directory (car ido-matches)))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3671 (t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3672 (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
3673 (setq ido-text-init (substring contents -1))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3674 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3675
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3676 ((and (not ido-use-merged-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3677 (not (ido-final-slash contents))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3678 (eq ido-try-merged-list t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3679 (numberp ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3680 (> ido-auto-merge-work-directories-length 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3681 (= (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
3682 (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
3683 (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
3684 (not (input-pending-p)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3685 (setq ido-use-merged-list 'auto
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3686 ido-text-init contents
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3687 ido-rotate-temp t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3688 (setq refresh t))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3689
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3690 (t nil))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3691
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3692 (when refresh
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3693 (ido-trace "refresh on /" ido-text-init)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3694 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3695 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3696
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3697 ;; Update the list of matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3698 (setq ido-text contents)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3699 (ido-set-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3700 (ido-trace "new " ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3701
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3702 (when (and ido-enter-single-matching-directory
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3703 ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3704 (null (cdr ido-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3705 (ido-final-slash (car ido-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3706 (or try-single-dir-match
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3707 (eq ido-enter-single-matching-directory t)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3708 (ido-trace "single match" (car ido-matches))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3709 (ido-set-current-directory
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3710 (concat ido-current-directory (car ido-matches)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3711 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3712 (exit-minibuffer))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3713
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3714 (when (and (not ido-matches)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3715 (not ido-directory-nonreadable)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3716 (not ido-directory-too-big)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3717 ;; ido-rescan ?
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3718 ido-process-ignore-lists
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3719 ido-ignored-list)
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3720 (let ((ido-process-ignore-lists nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3721 (ido-rotate ido-rotate)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3722 (ido-cur-list ido-ignored-list))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3723 (ido-trace "try all" ido-ignored-list)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3724 (ido-set-matches))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3725 (when ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3726 (ido-trace "found " ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3727 (setq ido-rescan t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3728 (setq ido-process-ignore-lists-inhibit t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3729 (setq ido-text-init ido-text)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3730 (setq ido-exit 'refresh)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3731 (exit-minibuffer)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3732
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3733 (when (and
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3734 ido-rescan
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3735 (not ido-matches)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3736 (memq ido-cur-item '(file dir))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3737 (not (ido-is-root-directory))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3738 (> (length contents) 1)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3739 (not (string-match "[$]" contents))
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3740 (not ido-directory-nonreadable)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3741 (not ido-directory-too-big))
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3742 (ido-trace "merge?")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3743 (if ido-use-merged-list
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3744 (ido-undo-merge-work-directory contents nil)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3745 (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
3746 (numberp ido-auto-merge-work-directories-length)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3747 (= ido-auto-merge-work-directories-length 0)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3748 (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
3749 (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
3750 (not (input-pending-p)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3751 (ido-trace "\n*start timer*")
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3752 (setq ido-auto-merge-timer
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3753 (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
3754
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3755 (setq ido-rescan t)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3756
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3757 (if (and ido-use-merged-list
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3758 ido-matches
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3759 (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
3760 (progn
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3761 (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
3762 (setq ido-use-merged-list t
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3763 ido-exit 'keep
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3764 ido-text-init ido-text)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3765 (exit-minibuffer)))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3766
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3767 ;; Insert the match-status information:
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3768 (ido-set-common-completion)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3769 (let ((inf (ido-completions
49180
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3770 contents
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3771 minibuffer-completion-table
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3772 minibuffer-completion-predicate
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3773 (not minibuffer-completion-confirm))))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3774 (ido-trace "inf" inf)
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3775 (insert inf))
b76c3354f4e7 (ido-enable-tramp-completion): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48867
diff changeset
3776 ))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3777
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3778 (defun ido-completions (name candidates predicate require-match)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3779 ;; Return the string that is displayed after the user's text.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3780 ;; Modified from `icomplete-completions'.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3781
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3782 (let* ((comps ido-matches)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3783 (ind (and (consp (car comps)) (> (length (cdr (car comps))) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3784 ido-merged-indicator))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3785 first)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3786
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3787 (if (and ind ido-use-faces)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3788 (put-text-property 0 1 'face 'ido-indicator-face ind))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3789
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3790 (if (and ido-use-faces comps)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3791 (let* ((fn (ido-name (car comps)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3792 (ln (length fn)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3793 (setq first (format "%s" fn))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3794 (put-text-property 0 ln 'face
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3795 (if (= (length comps) 1)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3796 'ido-only-match-face
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3797 'ido-first-match-face)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3798 first)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3799 (if ind (setq first (concat first ind)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3800 (setq comps (cons first (cdr comps)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3801
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3802 (cond ((null comps)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3803 (cond
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3804 (ido-directory-nonreadable
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3805 (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
3806 (ido-directory-too-big
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3807 (or (nth 9 ido-decorations) " [Too big]"))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3808 (ido-report-no-match
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3809 (nth 6 ido-decorations)) ;; [No match]
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3810 (t "")))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3811
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3812 ((null (cdr comps)) ;one match
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3813 (concat (if (> (length (ido-name (car comps))) (length name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3814 ;; when there is one match, show the matching file name in full
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3815 (concat (nth 4 ido-decorations) ;; [ ... ]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3816 (ido-name (car comps))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3817 (nth 5 ido-decorations))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3818 "")
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3819 (if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3820 (t ;multiple matches
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3821 (let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3822 (alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3823 (apply
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3824 #'concat
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3825 (cdr (apply
46256
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3826 #'nconc
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3827 (mapcar
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3828 (lambda (com)
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3829 (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
3830 (setq items (1- items))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3831 (cond
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3832 ((< items 0) ())
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3833 ((= 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
3834 (t
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3835 (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
3836 (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
3837 (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
3838 (not (string= str first))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3839 (ido-final-slash str))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3840 (put-text-property 0 (length str) 'face 'ido-subdir-face str))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3841 str)))))
88bc5ce0674c (ido-find-common-substring): Return substring instead of t.
Kim F. Storm <storm@cua.dk>
parents: 46231
diff changeset
3842 comps))))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3843
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3844 (concat
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3845 ;; 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
3846 (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
3847 (> (length ido-common-match-string) (length name)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3848 (concat (nth 4 ido-decorations) ;; [ ... ]
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3849 (substring ido-common-match-string (length name))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3850 (nth 5 ido-decorations)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3851 ;; list all alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3852 (nth 0 ido-decorations) ;; { ... }
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3853 alternatives
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3854 (nth 1 ido-decorations)))))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3855
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3856 (defun ido-minibuffer-setup ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3857 "Minibuffer setup hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3858 ;; Copied from `icomplete-minibuffer-setup-hook'.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3859 (when (and (boundp 'ido-completing-read)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3860 (or (featurep 'xemacs)
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3861 (= ido-use-mycompletion-depth (minibuffer-depth))))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3862 (add-hook 'pre-command-hook 'ido-tidy nil t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3863 (add-hook 'post-command-hook 'ido-exhibit nil t)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3864 (setq cua-inhibit-cua-keys t)
48559
f694cedb78e4 (ido-xemacs): Remove defvar. All uses changed to
Kim F. Storm <storm@cua.dk>
parents: 48108
diff changeset
3865 (when (featurep 'xemacs)
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3866 (ido-exhibit)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3867 (goto-char (point-min)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3868 (run-hooks 'ido-minibuffer-setup-hook)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3869
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3870 (defun ido-tidy ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3871 "Pre command hook for `ido'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3872 ;; Remove completions display, if any, prior to new user input.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3873 ;; Copied from `icomplete-tidy'."
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3874
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3875 (when ido-auto-merge-timer
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3876 (ido-trace "\n*cancel timer*" this-command)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3877 (cancel-timer ido-auto-merge-timer)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3878 (setq ido-auto-merge-timer nil))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3879
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3880 (if (and (boundp 'ido-use-mycompletion-depth)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3881 (= ido-use-mycompletion-depth (minibuffer-depth)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3882 (if (and (boundp 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3883 ido-eoinput)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3884
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3885 (if (> ido-eoinput (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3886 ;; Oops, got rug pulled out from under us - reinit:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3887 (setq ido-eoinput (point-max))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3888 (let ((buffer-undo-list t))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3889 (delete-region ido-eoinput (point-max))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3890
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3891 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3892 (make-local-variable 'ido-eoinput)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3893 (setq ido-eoinput 1))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3894
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3895 (defun ido-summary-buffers-to-end ()
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3896 ;; Move the summaries to the end of the buffer list.
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3897 ;; This is an example function which can be hooked on to
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3898 ;; `ido-make-buffer-list-hook'. Any buffer matching the regexps
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3899 ;; `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
3900 (let ((summaries (delq nil (mapcar
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3901 (lambda (x)
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49579
diff changeset
3902 (if (or
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3903 (string-match "Summary" x)
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3904 (string-match "output\\*\\'" x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3905 x))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3906 ido-temp-list))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3907 (ido-to-end summaries)))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3908
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3909 ;;; Helper functions for other programs
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3910
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
3911 (put 'dired-do-rename 'ido 'ignore)
c1239eb451dc (ido-read-file-name): If command has ido property, don't use ido
Kim F. Storm <storm@cua.dk>
parents: 55359
diff changeset
3912
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3913 ;;;###autoload
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3914 (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
3915 "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
3916 Return the name of a buffer selected.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3917 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
3918 buffer to be selected, which will go to the front of the list.
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3919 If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3920 (let* ((ido-current-directory nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3921 (ido-directory-nonreadable nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3922 (ido-directory-too-big nil)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3923 (ido-context-switch-command 'ignore)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3924 (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
3925 (if (eq ido-exit 'fallback)
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3926 (let ((read-buffer-function nil))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3927 (read-buffer prompt default require-match))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3928 buf)))
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3929
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
3930 ;;;###autoload
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3931 (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
3932 "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
3933 Read file name, prompting with PROMPT and completing in directory DIR.
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3934 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
3935 (let (filename)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3936 (cond
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3937 ((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
3938 (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
3939 (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
3940 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3941 (ido-read-directory-name prompt dir default-filename mustmatch initial)))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3942 ((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
3943 (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
3944 (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
3945 (let* (ido-saved-vc-hb
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3946 (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
3947 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3948 (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
3949 (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
3950 (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
3951 (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
3952 (ido-work-directory-index -1)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3953 (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
3954 (ido-find-literal nil))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3955 (setq ido-exit nil)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3956 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3957 (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
3958 (cond
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3959 ((eq ido-exit 'fallback)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3960 (setq filename 'fallback))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3961 (filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3962 (setq filename
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3963 (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
3964 (t
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3965 (setq filename 'fallback)))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3966 (if (eq filename 'fallback)
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3967 (let ((read-file-name-function nil))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3968 (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
3969 filename)))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3970
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3971 ;;;###autoload
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3972 (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
3973 "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
3974 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
3975 See `read-directory-name' for additional parameters."
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3976 (let* (filename
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3977 (ido-context-switch-command 'ignore)
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3978 ido-saved-vc-hb
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3979 (ido-current-directory (ido-expand-directory dir))
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3980 (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
3981 (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
3982 (ido-directory-too-big-p ido-current-directory)))
53323
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3983 (ido-work-directory-index -1)
a053c8c470f3 Handle non-readable directories.
Kim F. Storm <storm@cua.dk>
parents: 53166
diff changeset
3984 (ido-work-file-index -1))
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3985 (setq filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3986 (ido-read-internal 'dir prompt 'ido-file-history default-dirname mustmatch initial))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3987 (if filename
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3988 (if (and (stringp filename) (string-equal filename "."))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3989 ido-current-directory
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3990 (concat ido-current-directory filename)))))
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3991
57191
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3992 ;;;###autoload
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
3993 (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
3994 "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
3995 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
3996 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
3997 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
3998 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
3999 with `completing-read'.
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4000 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
4001 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
4002 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
4003 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
4004 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
4005 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
4006 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
4007 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
4008 (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
4009 (ido-directory-nonreadable nil)
57211
98f763c22ee4 (ido-max-directory-size): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 57191
diff changeset
4010 (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
4011 (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
4012 (ido-choice-list choices))
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4013 (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
4014
bd5d1158ebcf (ido-choice-list): New dynamic var for `list' context.
Kim F. Storm <storm@cua.dk>
parents: 57065
diff changeset
4015
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50260
diff changeset
4016 ;;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da
46068
5769eed50ff7 New file.
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4017 ;;; ido.el ends here