Shell Emacs如何在elisp中以交互命令行模式运行命令

Shell Emacs如何在elisp中以交互命令行模式运行命令,shell,emacs,command,interactive,maxima,Shell,Emacs,Command,Interactive,Maxima,我是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-comm

我是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)
  )  
 )
当我在maxima代码中没有断点时,这可以很好地工作。当我有断点“break()”时,我必须与程序交互。当前的shell命令函数不起作用

我还喜欢“shell命令”功能的机制,屏幕将自动分成两部分,并在第二个窗口中显示编程运行信息。如果可能的话,我仍然希望在代码中包含此功能,您可以帮助我

任何帮助都将不胜感激

我想在elisp中定义一个函数,以便在interactive中运行命令 命令行模式(如果可能,异步)


也许
async shell command
就是您要查找的有关函数的帮助信息。请在commint模式下使用内置的
compile
函数

(defun ma (&optional filename)
  (interactive)
  (compile (format "maxima -b %s" (or filename (buffer-file-name))) t))

这将打开一个新窗口,并显示正在运行的程序的输出。提交模式意味着编译过程是交互式的,您将能够从编译缓冲区向程序发送输入

看起来你想重新发明imaxima:or。