Mengedit banyak blok sumber dalam satu buffer

10

Saya punya beberapa blok sumber yang semuanya kusut ke file yang sama. Ketika saya menjalankan C-c 'di dalam satu blok, hanya blok spesifik ini yang ditampilkan di buffer baru.

Apakah ada kemungkinan untuk menampilkan semua bagian file ini di dalam buffer ini (bukan hanya potongan khusus ini)?

Contoh:

#+begin_src emacs-lisp :tangle foo.el
(defvar *ok* "")
#+end_src

This is where the variable is stored...
#+begin_src emacs-lisp :tangle foo.el
(defun add-one (n) (+ 1 n))
#+end_src

Jika saya menekan C-c 'di blok pertama saya mendapatkan:

(defvar *ok* "")

tapi aku ingin:

(defvar *ok* "")
(defun add-one (n) (+ 1 n))
Beyeran
sumber
2
Ada fungsi org-babel-tangle-jump-to-org org-babel-detangleyang mengklaim untuk melakukan ini jika Anda terlibat dengan komentar tautan ( :comments linkdi blok sumber). Sepertinya saya tidak bisa membuat mereka bekerja dengan benar.
erikstokes

Jawaban:

2

Apa yang Anda cari adalah fitur pengeditan dua arah yang bertahan dari pengeditan selama perjalanan pulang pergi dan bukan hanya output satu arah yang umum untuk perintah kusut dan kusut. Solusi terbaik yang saya temukan adalah teks lenticular yang tersedia sebagai paket lentic pada MELPA.

Pengguna Emacs
sumber
2

Tambahkan argumen tajuk ini

#+PROPERTY: header-args+ :comments link

Kekusutan. Anda sekarang dapat mengedit file kusut itu sendiri dan mengeluarkan org-babel-detangleuntuk mendapatkan semuanya kembali ke file org.

Toothrot
sumber
2

Saya dapat merekomendasikan org-tanglesync , yang memiliki metode sinkronisasi yang lebih sederhana daripadaorg-babel-detangle

Pada dasarnya jika suatu blok dirangkai ke file eksternal, maka setiap kali blok itu diedit, file eksternal itu juga diperiksa, dan jika suatu diff terdeteksi, pengguna diminta untuk menolak atau menarik perubahan eksternal ke dalam blok org src. .

Ini juga memiliki fungsi untuk secara otomatis memproses semua blok kusut dalam buffer.

Mehmet Tekman
sumber