我使用python调试器pdb.我使用emacs进行python编程.我使用python-mode.el.我的想法是使emacs直观.所以我需要python程序的以下帮助(.py)
>每当我按’F9’键时,emacs应该输入“import pdb; pdb.set_trace();”当前行中的语句并将当前行移动到下面的一行.
句子在同一行.聪明的缩进可能会有所帮助.
>无论在哪里“import 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)虽然我把它设置为C-c 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书是一个很好的起点.
HTH