Memblokir kode debug dalam mode org

11

Apakah ada alat yang tersedia untuk mempermudah penelusuran kesalahan dalam blok mode-org? (Saya bekerja dengan python secara khusus)

Alur kerja saya saat ini adalah menyalin kode yang berfungsi ke blok sumber, dan hanya mencoba membuat modifikasi minimal. Jika kesalahan besar terjadi, saya salin kembali ke file lain, atau kusut blok dan debug file yang dihasilkan.

Apakah ada alat yang saya lewatkan? (misalnya, sesuatu seperti mode kompilasi di mana ia akan membawa Anda ke garis kesalahan aktif.)

Sunting: misalnya, saya baru saja menemukan Cc Cv v, yang memunculkan buffer dengan referensi noweb diperluas. Sayangnya, itu tidak termasuk argumen tajuk, jadi kode dari ini tidak dapat dijalankan tanpa mengimpor yang di interpreter pertama. Demikian pula, jika saya memiliki pernyataan kembali, yang membuatnya tidak dieksekusi, dan buffer tidak dapat diedit, jadi diperlukan beberapa langkah untuk mendapatkan sumber runnable dari blok python.

pengguna2699
sumber
3
Lihat emacs.stackexchange.com/questions/13244/… . Solusi favorit saya saat ini adalah (org-src-debug). Ini memiliki keuntungan bahwa Anda dapat men-debug blok kode sumber dengan argumen input.
Tobias
Komentar untuk orang lain dengan masalah yang sama: user2699 mengedit pertanyaan untuk menjelaskan bahwa ia ingin men-debug blok kode sumber python . Komentar terakhir Tobias hanya berlaku untuk eksekusi blok kode emacs-lisp .
Tobias
1
Apakah Anda menambahkan :sessionheader ke blok kode Anda? mis :session *my-python*. Kemudian tonton saja eksekusi skrip di *my-python*buffer di bingkai atau jendela lain. Saya kira Anda menginginkan sesuatu yang lebih canggih dari ini, benar?
Melioratus
@Melioratus, ini agak primitif (tampaknya tidak menangani kesalahan dengan baik, dan menambahkan output tambahan di konsol python), tetapi jauh lebih baik daripada tidak sama sekali. Dan konsol python sangat bagus. Anda harus mengirimkannya sebagai jawaban.
user2699
@Tobias, Terima kasih, itu adalah hal yang saya cari, hanya tidak spesifik untuk elisp.
user2699

Jawaban:

7

Metode 1

  1. Tambahkan :sessiontajuk ke blok sumber Anda.

    Dalam contoh ini, menggunakan header : sesi akan mengeksekusi kode di dalam buffer bernama *my-python*dan menampilkan pesan debug.

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

    Kiat:

    • Gunakan C-c C-v C-zuntuk membagi layar secara vertikal dan menampilkan *my-python*buffer interaktif .
    • Gunakan C-c C-v ?untuk menampilkan pintasan berguna lainnya.

Metode 2

  1. Tempatkan titik dalam blok kode dan edit blok menggunakan C-c ', yaitu org-edit-special. Metode ini akan memungkinkan Anda untuk menggunakan python-modefungsionalitas bawaan.

  2. Mulai dengan penerjemah python C-c C-p, yang akan membagi jendela dan membuka nama buffer *Python*. Untuk beralih ke penyangga juru bahasa python, tekan C-c C-z.

    Catatan: Baru-baru ini saya memperhatikan bahwa *Warnings*buffer ditampilkan sebagai gantinya. Tempatkan titik di dalam *Warnings*buffer dan tekan quntuk menampilkan *Python*buffer.

  3. Setelah selesai, sebarkan kode Anda yang diperbarui ke dalam blok kode dengan C-c 'atau buang semua perubahan dengan C-c C-k.


Catatan kode ini diuji menggunakan:
versi emacs: GNU Emacs 26.1
versi mode org: 9.1.14

Melioratus
sumber