在emacs的编译模式下执行带有参数的python脚本



我正在为python脚本编写一个连写模式。

脚本可以通过以下命令启动:

/usr/bin/python3.3 tool-name arg0

我使用的是写模式,因为这个调用在运行之前会在提示符中询问一些信息。

创建:

(defun create-app ()
  "create application by using python tool"
  (interactive)
  (progn 
    (setq default-directory "/path/to/tool")
    (setq buffer (get-buffer-create "*buffer_name*"))
    (apply 'make-comint-in-buffer "tool" buffer "/usr/bin/python3.3" nil nil)
    )
  )

一切正常,python启动,但如果我写:

(defun create-app ()
  "create application by using python tool"
  (interactive)
  (progn 
    (setq default-directory "/path/to/tool")
    (setq buffer (get-buffer-create "*buffer_name*"))
    (apply 'make-comint-in-buffer "tool" buffer "/usr/bin/python3.3 tool-name arg0" nil nil)
    )
  )

缓冲区告诉我它不能执行程序"/usr/bin/python3.3 tool-name arg0"

有没有人有一个想法(有或没有comint)我如何启动这个python进程,并有脚本在启动前询问一些信息?

make-comint-in-buffer (C-hf make-comint-in-buffer RET)的文档字符串如下

<>之前make-comint-in-buffer NAME BUFFER PROGRAM &可选STARTFILE &rest开关)在正在运行的程序的缓冲区中创建一个统一的进程名。如果BUFFER为nil,则默认为由' *'包围的NAME。如果BUFFER中有一个正在运行的进程,它不会重新启动。程序应是下列之一:-一个字符串,表示要创建的可执行程序"start-file-process"-一个形式为(HOST。SERVICE),表示TCP通过"open-network-stream"打开连接- nil,表示新分配的pty。...如果PROGRAM是一个字符串,任何更多的参数都是PROGRAM的实参。之前因此,使用该函数的正确方法是将程序的only名称作为字符串,并将要传递给程序的参数作为make-comint-in-buffer的附加参数,如下所示
(apply 'make-comint-in-buffer "tool" buffer "/usr/bin/python3.3" nil "tool-name" "arg0")

您必须将tool-namearg0放在字符串之外。你想以交互的方式询问用户吗?您可以很容易地做到这一点,参见http://ergoemacs.org/emacs/elisp_basics.html(在最后)。

exple:

defun myFunc (firstArg)
  (interactive "sWhat is first arg ? ") ;; note the s
  ( ;; use firstArg)

相关内容

  • 没有找到相关文章

最新更新