[英]Managing helper death
我安裝了Pymacs,rope,ropemode,ropemacs,當我意外執行pymacs-terminate-services
時,我無法保存修改后的緩沖區。 它首先問我 - The Pymacs helper died. Restart it? (yes or no)
The Pymacs helper died. Restart it? (yes or no)
The Pymacs helper died. Restart it? (yes or no)
。 如果我回答“是”,則拋出 - Debugger entered--Lisp error: (error "There is no Pymacs helper!")
。 如果我回答“否”,它會拋出:
Debugger entered--Lisp error: (error "Python: Traceback (most recent call last):
File \"/usr/local/lib/python2.7/dist-packages/Pymacs.py\", line 258, in loop
value = eval(text)
File \"<string>\", line 1, in <module>
IndexError: list index out of range
")
我設法通過執行pymacs-load
,加載os
模塊,並回答Pymacs helper restart問題來解決問題。 保存緩沖區,但每次保存文件時我都開始收到另一個錯誤:
Debugger entered--Lisp error: (error "Python: Traceback (most recent call last):
File \"/usr/local/lib/python2.7/dist-packages/Pymacs.py\", line 258, in loop
value = eval(text)
File \"<string>\", line 1, in <module>
TypeError: major() takes exactly 1 argument (0 given)
")
這是我的初始文件:
(load "~/.emacs.d/pymacs.el")
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)
(autoload 'pymacs-autoload "pymacs")
(require 'pymacs)
(pymacs-load "ropemacs" "rope-")
Pymacs手冊描述了Pymacs助手的死亡。 它告訴我不應該關閉*Pymacs*
緩沖區,因為這會殺死幫助程序,並且如果幫助程序被殺死也應該重啟Emacs。 這是不可接受的,因為我習慣不時關閉所有緩沖區,也很少重啟Emacs。 我現在有幾個相關的問題:
pymacs-terminate-services
,我應該運行它嗎? pymacs-terminate-services
我該怎么辦? 我特別感興趣的是如何編輯before-save-hook
以使緩沖區保存成為可能而沒有錯誤消息。 我能想到的最簡單的解決方案是使用kill-buffer-query-functions
鈎子來防止*Pymacs*
被殺死。 像這樣:
(defun my-pymacs-saver ()
(if (equal (buffer-name) "*Pymacs*")
(yes-or-no-p "Really kill *Pymacs* buffer? ")
t))
(add-hook 'kill-buffer-query-functions 'my-pymacs-saver)
它會詢問你是否真的要殺死*Pymacs*
緩沖區。 你甚至可以通過這個來殺死keybinds:
(defun my-pymacs-saver ()
(if (equal (buffer-name) "*Pymacs*")
(progn
(message "NEVER kill *Pymacs*!")
nil)
t))
我使用pymacs-terminate-services
強制重新加載所有模塊。 我在http://www.emacswiki.org/emacs/AntonNazarov中有類似於pymacs-reload-rope
的功能。
可能你可以將pymacs-terminate-services
添加到kill-buffer-hook
(本地在*Pymacs*
buffer中)以獲得更優雅的終止。 但我不確定。 對於你的其余問題,我想最好在Pymacs 問題跟蹤器中詢問/請求。
如果您不小心殺死* Pymacs *緩沖區或執行pymacs-terminate-services
您可以通過執行以下命令並在提示符處回答“是”來恢復該過程。
(pymacs-load "ropemacs" "rope-")
您可以修改init-file函數以允許使用Mx python-restart
以交互方式調用Mx python-restart
。 以這種方式重新啟動Pymacs將避免TypeError: major()...
錯誤。
(defun pymacs-restart ()
(interactive)
(pymacs-load "ropemacs" "rope-"))
(load "~/.emacs.d/pymacs.el")
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)
(autoload 'pymacs-autoload "pymacs")
(require 'pymacs)
(pymacs-restart)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.