 		      (mapconcat #'identity (mapcar #'cadr args) "\n")
 		    `(list ,@(mapcar #'cadr args))))
 	`(interactive))
-     ,@(if body body
-	`((eci-command
-	 ,(if args
-	      `(format ,(format "%S %s" name (mapconcat #'caddr args " "))
-		       ,@(mapcar
-			  (lambda (arg)
-			    `(if (or (stringp ,(car arg)) (numberp ,(car arg)))
-				 ,(car arg)
-			       (mapconcat #'identity ,(car arg) ",")))
-			  args))
-	    (format "%S" name))
-	 buffer-or-process)))))
+     ,@(cond
+	((eq body nil)
+	 `((eci-command
+	    ,(if args
+		 `(format ,(format "%S %s" name (mapconcat #'caddr args " "))
+			  ,@(mapcar
+			     (lambda (arg)
+			       `(if (or (stringp ,(car arg)) (numberp ,(car arg)))
+				    ,(car arg)
+				  (mapconcat #'identity ,(car arg) ",")))
+			     args))
+	       (format "%S" name))
+	    buffer-or-process)))
+	((eq (car body) :hide-output)
+	 `((let ((eci-hide-output (not (interactive-p))))
+	     (eci-command
+	      ,(if args
+		   `(format ,(format "%S %s" name (mapconcat #'caddr args " "))
+			    ,@(mapcar
+			       (lambda (arg)
+				 `(if (or (stringp ,(car arg)) (numberp ,(car arg)))
+				      ,(car arg)
+				    (mapconcat #'identity ,(car arg) ",")))
+			       args))
+		 (format "%S" name))
+	      buffer-or-process))))
+	(t body))))
 
 (defmacro defecialias (alias def)
   `(defalias ',(intern (format "eci-%S" alias))
      ',(intern (format "eci-%S" def))))
 
+(defeci int-cmd-list ()
+  ""
+  :hide-output)
+
+(defeci map-cop-list ()
+  ""
+  :hide-output)
+
+(defeci map-ctrl-list ()
+  ""
+  :hide-output)
+
+(defeci map-ladspa-list ()
+  ""
+  :hide-output)
+
+(defeci map-preset-list ()
+  ""
+  :hide-output)
+
 (defeci run)
 
 (defeci start)
 
-(defeci cs-add "" ((chainsetup "sChainsetup to add: " "%s")))
+(defeci cs-add ((chainsetup "sChainsetup to add: " "%s")))
 
 (defeci cs-connect)
 

  "Indicates if int-output-mode-wellformed was successfully initialized.")
(make-variable-buffer-local 'eci-int-output-mode-wellformed-flag)

(defvar eci-cop-register nil
  "If non-nil, contains the list of registered chainops.
It has the form
 ((NAME PREFIX (ARGNAME ...)) ...)

Use `eci-cop-register' to fill this list with data.")
(make-variable-buffer-local 'eci-cop-register)

(defvar eci-ctrl-register nil
  "If non-nil, contains the list of registered controllers.
It has the form
 ((NAME PREFIX (ARGNAME ...)) ...)

Use `eci-cop-register' to fill this list with data.")
(make-variable-buffer-local 'eci-ctrl-register)

(defvar eci-preset-register nil
  "If non-nil, contains the list of registered presets.
It has the form
 ((NAME PREFIX (ARGNAME ...)) ...)

Use `eci-preset-register' to fill this list with data.")
(make-variable-buffer-local 'eci-preset-register)

(defvar eci-ladspa-register nil
  "If non-nil, contains the list of registered ladspa plugins.
It has the form
 ((FULL-NAME NAME (ARGNAME ...)) ...)

Use `eci-ladspa-register' to fill this list with data.")
(make-variable-buffer-local 'eci-cop-register)

(defun eci-init ()
  "Initialize a programmatic ECI session.

"
;; End:

(provide 'ecasound)

;;; ecasound.el ends here
