changeset 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 1abc842b1ca7
children 53c330e846d0
files lisp/comint.el
diffstat 1 files changed, 12 insertions(+), 7 deletions(-) [+]
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))