[英]Emacs: Set/Reset python debug breakpoint
我使用 python 调试器 pdb。 我使用 emacs 进行 python 编程。 我使用 python-mode.el。 我的想法是让emacs变得直观。 所以我需要以下python程序帮助(.py)
每当我按“F9”键时,emacs 应该输入“import pdb; pdb.set_trace();” 当前行中的语句并将当前行移至下一行。 句子要在同一行。 智能缩进可能会有很大帮助。
在哪里“导入 pdb;pdb.set_trace();” 语句出现在 python 代码中,emacs 应该显示左侧指示器并突出显示该行。
当我在当前行按“Alt-F9”键时,emacs 发现“import pdb; pdb.set_trace();” 那么,emacs 应该删除“import pdb; pdb.set_trace();” 行并将当前行向上移动一个。
每当我按“F8”键时,emacs 都会跳转到“import pdb; pdb.set_trace();” 在同一个缓冲区。
我正在尝试学习 elisp 并很快赶上 lisp 以自己定制 emacs。 我会很感激你的回答。
对于我和其他发现此解决方案非常有用的人来说,答案应该足够好。
做 1)
(defun add-py-debug ()
"add debug code and move line down"
(interactive)
(move-beginning-of-line 1)
(insert "import pdb; pdb.set_trace();\n"))
(local-set-key (kbd "<f9>") 'add-py-debug)
要做 2) 你可能必须改变 python 模式的语法突出显示,或者编写你自己的次要模式。 您必须查看 font-lock 才能获得更多信息。 对不起。
做 3) 虽然我已将其设置为 Cc F9 而不是 Alt-F9
(defun remove-py-debug ()
"remove py debug code, if found"
(interactive)
(let ((x (line-number-at-pos))
(cur (point)))
(search-forward-regexp "^[ ]*import pdb; pdb.set_trace();")
(if (= x (line-number-at-pos))
(let ()
(move-beginning-of-line 1)
(kill-line 1)
(move-beginning-of-line 1))
(goto-char cur))))
(local-set-key (kbd "C c <f9>") 'remove-py-debug)
并做 4)
(local-set-key (kbd "<f3>") '(lambda ()
(interactive)
(search-forward-regexp "^[ ]*import pdb; pdb.set_trace();")
(move-beginning-of-line 1)))
请注意,这不是世界上最好的 elisp 代码,但我试图让你清楚地知道发生了什么,而不是让它完全地道。 如果您想使用 elisp 做更多事情,GNU Elsip 书是一个很好的起点。
高温高压
我发现Xah 的 Elisp 教程是了解 Emacs Lisp 编程基础的绝佳起点。 还有 一些SteveY不久前的文章介绍了您可能会发现对学习基础知识有用的技术。
如果您对修改 Python 模式很认真,那么您最好看看Writing GNU Emacs Extensions ,它以 PDF 形式提供。
最后,对我来说最有用的资源实际上是 Emacs 本身。 我经常使用Mx apropos
和Mx describe-key
来弄清楚内置函数是如何工作的,以及是否已经有一些东西可以做我想做的事情。
您希望看起来像的特定事情可以通过一些简单的使用insert
和一些搜索/替换功能来完成,所以这将是一个很好的起点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.