Current version, r8407, which works fine with single arguments is sufficient for my current needs, so there is no need to hurry with the patch.
Jarek Documentation: Arguments passed to the dtk-program. Usually SPACE is used to separate arguments, so the following string is considered to be a list of 3 arguments: -v eu -s In case where SPACE character must be inside an argument, the argument separator may be changed. To do this prefix argument string with ",<SEP>". This makes <SEP> the argument separator (could be also SPACE). For example this is one argument invocation: ,,C:\Program Files\dir And this is 3 argument invocation, with underline used as the separator: ,_the first arg_the second arg_thethird
Index: lisp/dtk-speak.el
===================================================================
--- lisp/dtk-speak.el	(revision 8407)
+++ lisp/dtk-speak.el	(working copy)
@@ -77,9 +77,24 @@
 The default is dtk-exp.")
 
 (defvar dtk-program-args
-  (or (getenv "DTK_PROGRAM_ARGS") nil)
-  "Arguments passed to the dtk-program")
+  (or (getenv "DTK_PROGRAM_ARGS") "")
+  "Arguments passed to the dtk-program.
+Usually SPACE is used to separate arguments, so the following string is
+considered to be a list of 3 arguments:
 
+-v eu -s
+
+In case where SPACE character must be inside an argument, the argument
+separator may be changed. To do this prefix argument string with
+\",<SEP>\". This makes <SEP> the argument separator (could be also SPACE).
+For example this is one argument invocation:
+
+,,C:\\Program Files\\dir
+
+And this is 3 argument invocation, with underline used as the separator:
+
+,_the first arg_the second arg_thethird")
+
 (defvar emacspeak-pronounce-pronunciation-table)
 (defvar emacspeak-ssh-tts-server )
 (defvar emacspeak-auditory-icon-function )
@@ -1712,16 +1727,24 @@
                     dtk-startup-hook emacspeak-servers-directory))
   (let ((new-process nil)
         (process-connection-type  nil)
-        (prog-file-name
-         (if (file-name-absolute-p dtk-program)
-             dtk-program
-           (expand-file-name dtk-program emacspeak-servers-directory))))
-    (setq new-process
-          (start-process
-           "speaker"
-           (and dtk-debug tts-debug-buffer)
-           prog-file-name
-           (or dtk-program-args "")))
+        ;; args-sep separator for program arguments, usually " ", but
+        ;; may be changed using "," prefix for arguments string
+        (arg-sep (if (string-match "^,." dtk-program-args)
+                      (string (aref dtk-program-args 1)) " "))
+        ;; dtk-program-args-2 argument without the optional "," prefix
+        (dtk-program-args-2 (if (string-match "^,." dtk-program-args)
+                               (substring dtk-program-args 2) dtk-program-args))
+        (proc-fun-args (list
+          "speaker"
+          (and dtk-debug tts-debug-buffer)
+          (expand-file-name dtk-program emacspeak-servers-directory))))
+    ;; some characters must be escaped by \\ to be used in regexp
+    (if (string-match "^[$^.[\\]$" arg-sep)
+      (set 'arg-sep (concat "\\" arg-sep)))
+    (if (> (string-width dtk-program-args) 0)
+      (setq proc-fun-args
+        (append proc-fun-args (split-string dtk-program-args-2 arg-sep))))
+    (setq new-process (apply 'start-process proc-fun-args))
     (setq dtk-speak-server-initialized
           (or (eq 'run (process-status new-process ))
               (eq 'open (process-status new-process))))
If you have questions about this archive or had problems using it, please send mail to:
priestdo@xxxxxxxxxxx No Soliciting!Emacspeak List Archive | 2010 | 2009 | 2008 | 2007 | 2006 | 2005 | 2004 | 2003 | 2002 | 2001 | 2000 | 1999 | 1998 | Pre 1998