Mercurial > emacs
diff lisp/comint.el @ 23209:601bf7681009
(comint-arguments): Ignore backslashes when using
w32 shells that expect backslashes as the directory separator.
author | Geoff Voelker <voelker@cs.washington.edu> |
---|---|
date | Mon, 07 Sep 1998 23:39:23 +0000 |
parents | ee3a3af924b4 |
children | 49e47671810d |
line wrap: on
line diff
--- a/lisp/comint.el Mon Sep 07 19:58:05 1998 +0000 +++ b/lisp/comint.el Mon Sep 07 23:39:23 1998 +0000 @@ -1180,18 +1180,23 @@ Also, a run of one or more of a single character in `comint-delimiter-argument-list' is a separate argument. Argument 0 is the command name." - ;; The first line handles ordinary characters and backslash-sequences. + ;; The first line handles ordinary characters and backslash-sequences + ;; (except with w32 msdos-like shells, where backslashes are valid). ;; The second matches "-quoted strings. ;; The third matches '-quoted strings. ;; The fourth matches `-quoted strings. ;; This seems to fit the syntax of BASH 2.0. - (let ((argpart "[^ \n\t\"'`\\]+\\|\\\\[\"'`\\]+\\|\ -\\(\"\\([^\"\\]\\|\\\\.\\)*\"\\|\ + (let* ((first (if (and (eq system-type 'windows-nt) + (w32-shell-dos-semantics)) + "[^ \n\t\"'`]+\\|" + "[^ \n\t\"'`\\]+\\|\\\\[\"'`\\]+\\|")) + (argpart (concat first + "\\(\"\\([^\"\\]\\|\\\\.\\)*\"\\|\ '[^']*'\\|\ -`[^`]*`\\)") - (args ()) (pos 0) - (count 0) - beg str value quotes) +`[^`]*`\\)")) + (args ()) (pos 0) + (count 0) + beg str value quotes) ;; Build a list of all the args until we have as many as we want. (while (and (or (null mth) (<= count mth)) (string-match argpart string pos))