gpt4 book ai didi

python - 管理助手死亡

转载 作者:IT老高 更新时间:2023-10-28 21:45:58 25 4
gpt4 key购买 nike

我已经安装了 Pymacs、rope、ropemode、ropemacs,当我意外执行 pymacs-terminate-services时,我无法保存修改后的缓冲区。它首先问我 - Pymacs 助手死了。重新启动它? (是或否)。如果我回答"is",它会抛出 - 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 帮助程序重启问题回答"is"来解决问题。缓冲区已保存,但每次保存文件时都会出现另一个错误:

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 manual描述了 Pymacs 助手的死亡。它告诉我不应该关闭 *Pymacs* 缓冲区,因为这会杀死助手,如果助手被杀死,还应该重新启动 Emacs。这是 Not Acceptable ,因为我有不时关闭所有缓冲区并且很少重新启动 Emacs 的习惯。我现在有几个相关的问题:

  • 处理 Pymacs 以尽量减少此类问题的最佳方法是什么?是否可以仅在我使用 Python 并再次安全终止它时运行 Pymacs?
  • pymacs-terminate-services 有什么用途,我应该运行它吗?
  • 如果我不小心运行了 pymacs-terminate-services,我该怎么办?我对如何编辑 before-save-hook 以使缓冲区保存成为可能而不会出现错误消息特别感兴趣。

最佳答案

我能想到的最简单的解决方案是使用 kill-buffer-query-functions 钩子(Hook)来防止 *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* 缓冲区。您甚至可以通过以下方式使其无法从键绑定(bind)中杀死:

(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* 缓冲区中)以获得更优雅终止。但我不确定。对于您的其余问题,我想最好在 Pymacs issue tracker 中询问/请求.

关于python - 管理助手死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com