如何在杀死缓冲区之前杀死与缓冲区关联的进程?

时间:2012-06-17 09:36:26

标签: emacs process elisp

我正在尝试终止Flymake进程,然后关闭它运行的缓冲区,尽管没有成功。以下是我的尝试:

(defun haxe-kill-network-process ()
  "Kill connection to Haxe compiler server and Flymake process in this buffer"
  (when (equal major-mode 'haxe-mode)
    (let ((proc (get-process haxe-compiler-process))
      (fly-proc (get-buffer-process (buffer-name))))
      (when proc
    (delete-process proc)
    (haxe-log 3 "Disconnecting from HaXe compiler server")
    (flymake-mode -1)
    (delete-process fly-proc)
    (haxe-log 3 "Flymake process killed")))))

(add-hook 'kill-buffer-hook #'haxe-kill-network-process)

我得到了这个输出:

  

断开与Haxe编译器服务器的连接

     

关闭Flymake模式   缓冲StripArray.hx由于致命状态CFGERR,警告   运行时出现配置错误(haxe --connect   127.0.0.1:1257 --cwd / home / wvxvw / projects / wafer / src   -swf /home/wvxvw/projects/wafer/bin/wunderwafer.swf -cp / home / wvxvw / projects / wafer / src   -swf-header 800:600:31 -swf-version 10 com.wunderwafer.map.StripArray)

     

Flymake进程被杀

但它没有被haxe-kill-network-process杀死 - 当我试图杀死运行该进程的缓冲区时,它仍然会提示我终止它。

1 个答案:

答案 0 :(得分:2)

我们需要更多信息来确定究竟发生了什么,但这里有一些想法:

  • 您可以尝试set-process-query-on-exit-flag来避免提示。
  • 总是优先选择缓冲区而不是缓冲区名称(即使用(current-buffer)而不是(buffer-name)
  • 你说“它没有被杀死”但你的代码似乎表明涉及各种过程。那么哪个过程没有被杀死?你得到的确切提示是什么?您可能还希望使用M-x list-processes来查看正在运行的进程。