X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/8dd59f01de203f3f02c3f898a7015bb522a0e4bc..dabff07c9ea6912f41d273d73efd2b5cbada6c9f:/lisp/shell.el diff --git a/lisp/shell.el b/lisp/shell.el index b4b3dbf528..5c52788b85 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -10,10 +10,10 @@ ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,9 +21,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -174,7 +172,7 @@ This is a fine thing to set in your `.emacs' file.") (defvar shell-file-name-quote-list (if (memq system-type '(ms-dos windows-nt)) nil - (append shell-delimiter-argument-list '(?\s ?\* ?\! ?\" ?\' ?\` ?\# ?\\))) + (append shell-delimiter-argument-list '(?\s ?$ ?\* ?\! ?\" ?\' ?\` ?\# ?\\))) "List of characters to quote when in a file name. This variable is used to initialize `comint-file-name-quote-list' in the shell buffer. The value may depend on the operating system or shell. @@ -186,6 +184,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 + shell-dynamic-complete-filename comint-dynamic-complete-filename) "List of functions called to perform completion. This variable is used to initialize `comint-dynamic-complete-functions' in the @@ -965,7 +964,8 @@ Returns t if successful." (save-match-data (not (string-match "[~/]" filename))) (eq (match-beginning 0) (save-excursion (shell-backward-command 1) (point)))) - (prog2 (message "Completing command name...") + (prog2 (unless (window-minibuffer-p (selected-window)) + (message "Completing command name...")) (shell-dynamic-complete-as-command))))) @@ -1009,6 +1009,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." @@ -1022,7 +1035,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 \"$\". @@ -1040,7 +1052,8 @@ Returns non-nil if successful." (interactive) (let ((variable (shell-match-partial-variable))) (if (and variable (string-match "^\\$" variable)) - (prog2 (message "Completing variable name...") + (prog2 (unless (window-minibuffer-p (selected-window)) + (message "Completing variable name...")) (shell-dynamic-complete-as-environment-variable)))))