Mercurial > hg > xemacs-beta
comparison lisp/minibuf.el @ 286:57709be46d1b r21-0b41
Import from CVS: tag r21-0b41
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:35:03 +0200 |
parents | 558f606b08ae |
children | e11d67e05968 |
comparison
equal
deleted
inserted
replaced
285:9a3756523c1b | 286:57709be46d1b |
---|---|
203 These are the same places where this behavior would occur later on anyway, | 203 These are the same places where this behavior would occur later on anyway, |
204 in `substitute-in-file-name'." | 204 in `substitute-in-file-name'." |
205 :type 'boolean | 205 :type 'boolean |
206 :group 'minibuffer) | 206 :group 'minibuffer) |
207 | 207 |
208 (defun minibuffer-electric-slash () | 208 ;; originally by Stig@hackvan.com |
209 ;; by Stig@hackvan.com | 209 (defun minibuffer-electric-separator () |
210 (interactive) | 210 (interactive) |
211 (and minibuffer-electric-file-name-behavior | 211 (let ((c last-command-char)) |
212 (eq ?/ (char-before (point))) | 212 (and minibuffer-electric-file-name-behavior |
213 (not (save-excursion | 213 (eq c directory-sep-char) |
214 (eq c (char-before (point))) | |
215 (not (save-excursion | |
214 (goto-char (point-min)) | 216 (goto-char (point-min)) |
215 (and (looking-at "^/.+:~?[^/]*/.+") | 217 (and (looking-at "/.+:~?[^/]*/.+") |
216 (re-search-forward "^/.+:~?[^/]*" nil t) | 218 (re-search-forward "^/.+:~?[^/]*" nil t) |
217 (progn | 219 (progn |
218 (delete-region (point) (point-max)) | 220 (delete-region (point) (point-max)) |
219 t)))) | 221 t)))) |
220 (not (save-excursion | 222 (not (save-excursion |
221 (goto-char (point-min)) | 223 (goto-char (point-min)) |
222 (and (looking-at "^.+://[^/]*/.+") | 224 (and (looking-at ".+://[^/]*/.+") |
223 (re-search-forward "^.+:/" nil t) | 225 (re-search-forward "^.+:/" nil t) |
224 (progn | 226 (progn |
225 (delete-region (point) (point-max)) | 227 (delete-region (point) (point-max)) |
226 t)))) | 228 t)))) |
227 (not (eq (point) (1+ (point-min)))) ; permit `//hostname/path/to/file' | 229 ;; permit `//hostname/path/to/file' |
228 (or (not (eq ?: (char-after (- (point) 2)))) ; permit `http://url/goes/here' | 230 (not (eq (point) (1+ (point-min)))) |
229 (eq ?/ (char-after (point-min)))) | 231 ;; permit `http://url/goes/here' |
232 (or (not (eq ?: (char-after (- (point) 2)))) | |
233 (eq ?/ (char-after (point-min)))) | |
230 (delete-region (point-min) (point))) | 234 (delete-region (point-min) (point))) |
231 (insert ?/)) | 235 (insert c))) |
232 | 236 |
233 (defun minibuffer-electric-tilde () | 237 (defun minibuffer-electric-tilde () |
234 (interactive) | 238 (interactive) |
235 (and minibuffer-electric-file-name-behavior | 239 (and minibuffer-electric-file-name-behavior |
236 (eq ?/ (char-before (point))) | 240 (eq directory-sep-char (char-before (point))) |
237 ;; permit URL's with //, for e.g. http://hostname/~user | 241 ;; permit URL's with //, for e.g. http://hostname/~user |
238 (not (save-excursion (search-backward "//" nil t))) | 242 (not (save-excursion (search-backward "//" nil t))) |
239 (delete-region (point-min) (point))) | 243 (delete-region (point-min) (point))) |
240 (insert ?~)) | 244 (insert ?~)) |
241 | 245 |
242 (defvar read-file-name-map | 246 (defvar read-file-name-map |
243 (let ((map (make-sparse-keymap 'read-file-name-map))) | 247 (let ((map (make-sparse-keymap 'read-file-name-map))) |
244 (set-keymap-parents map (list minibuffer-local-completion-map)) | 248 (set-keymap-parents map (list minibuffer-local-completion-map)) |
245 (define-key map "/" 'minibuffer-electric-slash) | 249 (define-key map (vector directory-sep-char) 'minibuffer-electric-separator) |
246 (define-key map "~" 'minibuffer-electric-tilde) | 250 (define-key map "~" 'minibuffer-electric-tilde) |
247 map | 251 map |
248 )) | 252 )) |
249 | 253 |
250 (defvar read-file-name-must-match-map | 254 (defvar read-file-name-must-match-map |
251 (let ((map (make-sparse-keymap 'read-file-name-map))) | 255 (let ((map (make-sparse-keymap 'read-file-name-map))) |
252 (set-keymap-parents map (list minibuffer-local-must-match-map)) | 256 (set-keymap-parents map (list minibuffer-local-must-match-map)) |
253 (define-key map "/" 'minibuffer-electric-slash) | 257 (define-key map (vector directory-sep-char) 'minibuffer-electric-separator) |
254 (define-key map "~" 'minibuffer-electric-tilde) | 258 (define-key map "~" 'minibuffer-electric-tilde) |
255 map | 259 map |
256 )) | 260 )) |
257 | 261 |
258 (defun minibuffer-keyboard-quit () | 262 (defun minibuffer-keyboard-quit () |