Emacs: Установить / Сбросить точку останова отладки Python - PullRequest
4 голосов
/ 25 февраля 2010

Я использую отладчик Python pdb. Я использую Emacs для программирования на Python. Я использую python-mode.el. Моя идея сделать Emacs интуитивно понятным. Поэтому мне нужна следующая помощь для программ на Python (.py)

  1. Всякий раз, когда я нажимаю клавишу 'F9', emacs должен поставить "import pdb; pdb.set_trace ();" операторы в текущей строке и переместите текущую строку на одну строку ниже. Предложение быть в той же строке. Интеллектуальные отступы могут очень помочь.

  2. Где бы "импорт pdb; pdb.set_trace ();" оператор присутствует в коде Python, emacs должен отобразить левый индикатор и выделить эту строку.

  3. Когда я нажимаю клавиши 'Alt-F9' в текущей строке, и emacs находит "import pdb; pdb.set_trace ();" В этом случае emacs должен удалить «import pdb; pdb.set_trace ();» и переместите текущую строку на одну строку вверх.

  4. Всякий раз, когда я нажимаю клавишу «F8», emacs, чтобы перейти к «import pdb; pdb.set_trace ();»; в том же буфере.

Я пытаюсь выучить elisp и вскоре догнать lisp, чтобы настроить emacs самостоятельно. Буду признателен за ваши ответы.

Ответ должен быть достаточно велик для меня и других людей, которые находят это решение очень полезным.

Ответы [ 2 ]

8 голосов
/ 28 февраля 2010

до 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 или написать свой собственный второстепенный режим. Вы должны были бы заглянуть в шрифт, чтобы получить больше. К сожалению.

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 в мире, но я постарался прояснить вам, что происходит, а не сделать его полностью идиоматичным. Книга GNU Elsip - отличное место для начала, если вы хотите больше работать с elisp.

НТН

0 голосов
/ 28 февраля 2010

Я обнаружил, что Учебник Xah по Elisp является отличной отправной точкой для понимания основ программирования на Emacs Lisp. Там являются также некоторыми статьями SteveY, посвященными методам, которые могут оказаться полезными для изучения основ.

Если вы серьезно относитесь к созданию измененного режима Python, вам стоит взглянуть на Написание расширений GNU Emacs , которое доступно в формате PDF.

Наконец, самым полезным ресурсом для меня на самом деле является сам Emacs. Я часто использую M-x apropos и M-x describe-key, чтобы выяснить, как работают встроенные функции, и есть ли уже что-то для того, чтобы делать то, что я хочу.

Конкретные вещи, на которые вы хотите выглядеть, могут быть выполнены с помощью простого использования insert и нескольких функций поиска / замены, так что это будет хорошей отправной точкой.

...