From: Geoff Voelker Date: Mon, 7 Sep 1998 23:39:23 +0000 (+0000) Subject: (comint-arguments): Ignore backslashes when using X-Git-Tag: emacs-20.4~1740 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=21a003b90ff24779c1faa0c620e496269c8f7074;p=emacs.git (comint-arguments): Ignore backslashes when using w32 shells that expect backslashes as the directory separator. --- diff --git a/lisp/comint.el b/lisp/comint.el index 42c2fb88308..563c6e7d770 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -1180,18 +1180,23 @@ We assume whitespace separates arguments, except within quotes. 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))