(shell-dynamic-complete-filename): New fun.

(shell-dynamic-complete-functions): Use it.
This commit is contained in:
Chong Yidong 2008-04-03 05:13:15 +00:00
parent 7108216759
commit a086d081fa

View file

@ -186,7 +186,7 @@ This is a fine thing to set in your `.emacs' file.")
shell-dynamic-complete-environment-variable
shell-dynamic-complete-command
shell-replace-by-expanded-directory
comint-dynamic-complete-filename)
shell-dynamic-complete-filename)
"List of functions called to perform completion.
This variable is used to initialize `comint-dynamic-complete-functions' in the
shell buffer.
@ -1010,6 +1010,19 @@ See `shell-dynamic-complete-filename'. Returns t if successful."
(insert " "))
success)))
(defun shell-dynamic-complete-filename ()
"Dynamically complete the filename at point.
This completes only if point is at a suitable position for a
filename argument."
(interactive)
(let ((opoint (point))
(beg (comint-line-beginning-position)))
(when (save-excursion
(goto-char (if (re-search-backward "[;|&]" beg t)
(match-end 0)
beg))
(re-search-forward "[^ \t][ \t]" opoint t))
(comint-dynamic-complete-as-filename))))
(defun shell-match-partial-variable ()
"Return the shell variable at point, or nil if none is found."
@ -1023,7 +1036,6 @@ See `shell-dynamic-complete-filename'. Returns t if successful."
(re-search-forward "\\$?{?[A-Za-z0-9_]*}?" limit)
(buffer-substring (match-beginning 0) (match-end 0))))))
(defun shell-dynamic-complete-environment-variable ()
"Dynamically complete the environment variable at point.
Completes if after a variable, i.e., if it starts with a \"$\".