Налагодження блоків коду в режимі org


11

Чи є інструменти для полегшення відстеження помилок у блоках в режимі org? (Я працюю спеціально з python)

Мій поточний робочий процес полягає в тому, щоб скопіювати код, який працює у вихідний блок, і спробувати внести лише мінімальні зміни. Якщо трапляються основні помилки, я або копіюю його назад в інший файл, або переплутаю блок і налагоджую отриманий файл.

Чи є якісь інструменти, які мені не вистачає? (наприклад, щось на зразок режиму компіляції, де це призведе до рядка, на якому введена помилка.)

Редагувати: наприклад, я щойно знайшов Cc Cv v, який відображає буфер з розширеними посиланнями на веб-сторінки. На жаль, він не включає аргументи заголовка, тому код з цього не може бути запущений, не імпортуючи їх спочатку в інтерпретаторі. Точно так само, якщо у мене є оператор return, який утримує його від виконання, а буфер не редагується, тому потрібно зробити кілька кроків, щоб отримати джерело, яке можна виконати з блоку python.


3
Див emacs.stackexchange.com/questions/13244 / ... . Моє поточне улюблене рішення (org-src-debug). Це має ту перевагу, що ви можете налагоджувати блоки вихідного коду за допомогою аргументів введення.
Тобіас

Прокоментуйте інших, що мають подібні проблеми: user2699 відредагував це питання, щоб зрозуміти, що він хоче налагодити блоки вихідного коду python . Останній коментар Тобіаса стосується лише виконання блоків коду emacs-lisp .
Тобіас

1
Ви додали :sessionзаголовок до блоку коду? напр :session *my-python*. Потім просто дивіться виконання сценарію в *my-python*буфері в іншому кадрі або вікні. Я здогадуюсь, що ви хочете чогось більш витонченого, ніж це правильне?
Меліорат

@Melioratus, це трохи примітивно (здається, що помилки не вдається добре, і додає додатковий вихід у консолі python), але це набагато краще, ніж нічого. І консоль пітона дуже приємна. Ви повинні подати це як відповідь.
користувач2699

@Tobias, Дякую, це те, що я шукаю, просто не характерно для Elisp.
користувач2699

Відповіді:


7

Спосіб 1

  1. Додайте :sessionзаголовок до вихідного блоку.

    У прикладі, використовуючи : заголовок сесії буде виконувати код всередині буфера з назвою *my-python*та відображати повідомлення про налагодження.

    #+BEGIN_SRC python :session *my-python*
      'Hello {0}\n'.format('World')
    #+END_SRC
    

    Поради:

    • Використовуйте C-c C-v C-zдля розділення екрану вертикально та відображення інтерактивного *my-python*буфера.
    • Використовуйте C-c C-v ?для відображення інших корисних ярликів.

Спосіб 2

  1. Помістіть точку в блоці коду та відредагуйте блок за допомогою C-c ', тобто org-edit-special. Цей спосіб дозволить використовувати python-modeвбудовану функціональність.

  2. Запустіть інтерпретатор python C-c C-p, який розділить вікно та відкриє ім'я буфера *Python*. Для переключення на буфер інтерпретатора пітона натисніть C-c C-z.

    Примітка. Нещодавно я помітив, що *Warnings*замість цього відображається буфер. Просто помістіть точку всередину *Warnings*буфера і натисніть, qщоб відобразити *Python*буфер.

  3. Закінчивши, поширюйте оновлений код у блок коду за допомогою C-c 'або відмініть будь-які зміни C-c C-k.


Зверніть увагу, що цей код був протестований за допомогою
версії emacs : версія GNU Emacs 26.1 в
органічному режимі: 9.1.14

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.