在python模式,有一个称为PY-执行区域功能,它发送的代码高亮区域到Python的缓冲器进行评估。 评估后,光标是在Python缓冲区,但我宁愿它留在脚本缓冲区,所以我可以继续生产更多的代码。 我写了一个简单的通知功能:
(defadvice py-execute-region
(after py-execute-region-other-window activate)
""" After execution, return cursor to script buffer """
(other-window 1)
)
但是,这并不在做任何事情都。 我试过其他变体如使用“围绕”而不是“后”; 一个变量设置为脚本缓冲区名称,然后弹出到缓冲区该缓冲区之类的东西。 没有成功! 我不知道如果这个机制是显而易见的人...谢谢!
在这种情况下,解决问题的方法是
(custom-set-variables
'(py-shell-switch-buffers-on-execute nil))
各地使用,建议换行功能调用save-window-excursion
,命令完成后,将恢复先前的窗口配置。
(defadvice py-execute-region
(around preserve-window-configuration activate)
"After execution, return cursor to script buffer"
(save-window-excursion ad-do-it))
请记住,但是,如果是尚未显示Python的缓冲区,它仍然会在命令完成后隐藏。 为了弥补这一点,你可以添加另一个忠告在最后调用切换到缓冲区其它窗口:
(defadvice py-execute-region
(after show-pybuf-other-window activate)
"After execution, show the python buffer in another window."
(switch-to-buffer-other-window "[PYTHON BUFFER NAME]"))
此外,请确保您不使用"""triple quotes"""
在elisp的。 我不认为他们的工作。
你有没有什么对我的作品的罚款。 它应该自动激活,所以一个独立的激活应该是不必要的。 但是,你需要去积极并重新激活建议更改生效:
1)定义和激活建议
2)它不会做你想要的东西,所以更改建议
3)停用它:(广告停用“PY-执行区域)
4)重新激活它:(广告激活“PY-执行区域)
步骤4应该拿起在步骤2中替换地所作的更改,则可以在步骤2中改变代码,然后只重新评估在步骤4中的代码(假设激活标志被设置)。
我还没有真正尝试了这一点,但我做了查找文件类似的东西,并在那里我需要打电话叫其他窗口前的互动。 其实,我的Emacs Lisp没有真正的想法,但是这可能工作。
(defadvice py-execute-region
(after py-execute-region-other-window activate)
(interactive)
(other-window 1)
)