我已经使用了emacs一段时间但不熟悉lisp编程。仅仅几天我开始在emacs上编写Python代码。我发现python-mode非常有用,我想进一步探索它。我在互联网上找到了一些emacs嘴唇功能,稍微考虑了一下,使界面用户友好。我正在努力实现以下行动
我通常使用2个垂直窗口启动emacs,一个使用python源,另一个使用shell。我应该能够使用键盘绑定
我无法实现上述切换操作。以下是我的init.el文件中的代码
(defun goto-python-shell ()
"Go to the python command window (start it if needed)"
(interactive)
(setq current-python-script-buffer (current-buffer))
(if (boundp 'current-python-shell-buffer)
(switch-to-buffer-other-window current-python-shell-buffer)
(py-shell))
(end-of-buffer)
)
(defun goto-python-source ()
"switch back to source window"
(interactive)
(setq current-python-shell-buffer (current-buffer))
(switch-to-buffer-other-window current-python-script-buffer)
)
(defun py-execute-statement-and-step ()
"select a statement, submit as a region and then step forward"
(interactive)
(beginning-of-line 1)
(let ((beg (point)))
(py-next-statement 1)
; if last statement.
(if (= (point) beg) (end-of-buffer ))
; (switch-to-buffer-other-window current-python-shell-buffer)
(py-execute-region beg (point))
(switch-to-buffer-other-window current-python-script-buffer)
)
)
; some key bindings
(define-key python-mode-map (quote [f9]) 'py-execute-statement-and-step)
;(define-key python-mode-map (quote [f10]) `py-execute-region)
;py-shell-switch-buffers-on-execute
(define-key python-mode-map (quote [f10]) `py-shell-switch-buffers-on-execute)
(define-key python-mode-map (quote [f11]) `py-execute-buffer)
(define-key python-mode-map (quote [f12]) `goto-python-shell)
(define-key py-shell-map (quote [f12]) `goto-python-source)
请建议。
此外,由于我是python-mode的新手,有人可以使用类似于上面的python-mode共享很好的初始化吗?
非常感谢你的帮助。
此致 AJ
答案 0 :(得分:3)
您应该查看this question的第一个答案并自定义py-shell-switch-buffers-on-execute
变量。
这样您就不需要所有自定义函数来使python-mode
按您的需要工作(即保持源缓冲区处于活动状态)
答案 1 :(得分:2)
我认为您正在尝试重新发明Emacs 24中的可用内容(至少在评估内容中)。尝试Emacs 24.在编辑Python源代码时,可以按 C-c C-c 来评估缓冲区并按 C-c C-r 来评估区域。您不必显式启动Python shell。
我认为没有直接支持评估线和步骤。您可以通过按键 C-SPC C-n C-c C-r 来实现。您的重点将保留在源代码中,无需在源代码和shell之间进行显式切换。
FWIW,我每天都在合理的时间内使用Emacs 24,而且我没有遇到任何稳定性问题。
答案 2 :(得分:0)
以下更改的工作就像一个魅力。 f9逐行执行,f10执行基于区域的执行。在我禁用py-shell-switch-buffers-on-execute之后,curser仍保留在脚本窗口中。
(defun py-execute-statement-and-step ()
"select a statement, submit as a region and then step forward"
(interactive)
(beginning-of-line 1)
(let ((beg (point)))
(py-next-statement 1)
; if last statement.
(if (= (point) beg) (end-of-buffer ))
(py-execute-region beg (point))
(next-line)
)
)
(custom-set-variables
'(py-shell-switch-buffers-on-execute nil))
(define-key python-mode-map (quote [f9]) 'py-execute-statement-and-step)
(define-key python-mode-map (quote [f10]) `py-execute-region)