# HG changeset patch # User Geoff Voelker # Date 905211563 0 # Node ID 601bf7681009c12d573f1b8d9a6cce06dcd523c3 # Parent 1abc842b1ca72f3f944fd508510a73d826d3c1e6 (comint-arguments): Ignore backslashes when using w32 shells that expect backslashes as the directory separator. diff -r 1abc842b1ca7 -r 601bf7681009 lisp/comint.el --- 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))