我是Emacs的新手。
我想在elisp中定义一个函数,以便在交互式命令行模式下运行命令(如果可能的话,异步)。
我目前的代码是:
(defun ma () ;run maxima batch on the current file
(interactive)
(let*
((fn (buffer-file-name)) (cmd (concat "maxima -b " fn)))
(message "cmd:%s" cmd)
(shell-command cmd)
)
)
当我在最大值代码中没有断点时,这很好用。当我有断点“break()”时,我必须与程序进行交互。当前的shell命令功能不起作用。
我也喜欢“shell-command”功能的机制,屏幕将自动拆分为两个并在第二个窗口中显示编程运行信息。如果可能的话,我仍然希望在您可以帮助我的代码中使用此功能。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我想在elisp中定义一个函数来在交互式中运行命令 命令行模式(如果可能,异步)。
或许async-shell-command
正在寻找C-h f async-shell-command RET
以获取有关该功能的帮助。
答案 1 :(得分:0)
在commint模式下使用内置的compile
功能。
(defun ma (&optional filename)
(interactive)
(compile (format "maxima -b %s" (or filename (buffer-file-name))) t))
这将打开一个新窗口,并显示正在运行的程序的输出。 Commint模式意味着编译过程是交互式的,您将能够从编译缓冲区向程序发送输入。