Emacs:设置/重置python debug breakpoint

我使用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

上一篇:python – 文本文件之间的交集


下一篇:java – 尝试在emacs中安装malabar-mode,获取“无法打开加载文件,malabar-mode”