首次加载主模式时如何自动运行劣质进程?


9

假设我们正在与公司合作使用Python(或Matlab)。没有劣质的公司信息,

Completion needs an inferior Python process running

但是,自动运行劣等流程的明显解决方案

 (add-hook 'python-mode 'run-python)

每次我打开.py文件时都会运行一个新的python进程(对于Matlab来说,这会变得更加昂贵)

是否存在仅在运行主要模式时才运行的钩子?还是有一种方法可以检测python / matlab下级进程是否已经在运行?还是有另一种方法来解决以主要模式自动运行劣质进程但仅运行一次的问题?

Answers:


14

仅供参考,某些模式仅会打开一个劣势流程。例如,run-python仅当尚未运行劣质进程时才打开劣质进程。您所建议的run-python实际上是您想要的。

对于其他模式(Matlab?),您可以使用一个自身脱钩的函数,如下所示:

(defun run-python-once ()
  (remove-hook 'python-mode-hook 'run-python-once)
  (run-python))

(add-hook 'python-mode-hook 'run-python-once)

请注意,在Emacs 24.5(及更早版本?)上,run-python使用强制性CMD参数,因此解决方案将是:

(defun run-python-once ()
  (remove-hook 'python-mode-hook 'run-python-once)
  (run-python (python-shell-parse-command)))

(add-hook 'python-mode-hook 'run-python-once)

这似乎是run-python函数取所需ARG: (run-python CMD &optional DEDICATED SHOW)。它可以以交互方式正常工作,但是当执行此挂钩时,我得到一个Wrong number of arguments错误。
gsingh2011 '16

1
谢谢,该参数在Emacs 25中是可选的,但在24.5中则不是。我使用针对Emacs 24.5的固定解决方案更新了答案
bmag
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.