我正在尝试从xemacs直接运行P4V命令。 在将p4.el导入到emacs后,我编写了以下内容:
(defun p4v-command (cmd)
(get-buffer-create p4-output-buffer-name);; We do these two lines
(kill-buffer p4-output-buffer-name) ;; to ensure no duplicates
(call-process "p4v" nil (get-buffer-create p4-output-buffer-name) nil
"-p" (p4-get-p4-port)
"-u" "UserName"
"-c" (p4-current-client)
"-cmd" (shell-quote-argument (concat cmd " " (buffer-name))))
(display-buffer p4-output-buffer-name))
我正在尝试获取Shell命令的以下内容(当cmd等于prevdiff时):
p4v -p port -u user -c client -cmd "prevdiff file.txt"
然而,当我使用prevdiff执行上述功能时,我收到以下错误信息。
P4V: unrecognized argument '"prevdiff' for '-cmd' option.
看起来,call-process正在将带引号的字符串“prevdiff file.txt”拆分为单独的参数,并且P4V仅处理第一个参数。
我尝试了其他命令使用call-process并没有这种情况,所以我不确定是Lisp的问题还是与P4V有关。
有人知道如何解决吗?
(shell-quote-argument ...)
吗?似乎call-process
直接将参数传递给进程,而不使用shell。如果您不尝试引用参数会发生什么? - Mike Dinsdale