Menyinkronkan perubahan pada file kusut kembali ke file org asli

12

Saya menggunakan mode-org dengan mode air mancur untuk menulis skenario.

Org untuk organisasi dan air mancur untuk pemformatan skenario.

Ini adalah kode yang saya gunakan untuk tujuan ini:

Pengaturan untuk bekerja dengan blok sumber (air mancur) dalam org.

;; prevent org from messing with indentation of the source text.
(setq org-src-preserve-indentation t)
(setq org-edit-src-content-indentation 0)

;; open the buffer for editing fountain in another window.
(setq org-src-window-setup (quote reorganize-frame))

;; prevent a message in the edit buffer from being shown.
(setq org-edit-src-persistent-message nil)

;; save edits in the fountain buffer to the org buffer after x sec
(setq org-edit-src-auto-save-idle-delay 1)

Sebagai contoh :

Babak 1

** SQ 1

Adegan *** 1

Banyak teks yang terkait dengan adegan dan apa yang dilakukan karakter dan semua yang perlu saya ketahui tetapi tidak akan pernah berakhir di skenario.

BEGIN_SRC air mancur

naskah skenario

END_SRC

Sekarang saya Cc 'dan membuka di atas dalam buffer baru dan saya bisa mengambilnya dari sana.


Masalah dengan pengaturan saya saat ini adalah tidak membiarkan saya melihat teks skenario secara keseluruhan.

Saya memiliki sekitar 50+ blok seperti itu dan saya ingin mencapai yang berikut:

Saya ingin org untuk mengekspor semua blok air mancur ke file tertentu, katakan air mancur-skenario. Dengan begitu saya punya satu file dengan skenario saja.

Apakah semua pengeditan disinkronkan dengan file org. Jika saya mengedit apa pun di air mancur-skenario, blok sumber dalam org harus memperbarui perubahan dan sebaliknya.


Untuk melakukan ini, saya memasukkan properti berikut di file org saya:

:PROPERTIES:
:file: "~/files/fountain-screenplay.fountain"
:cache: yes
:comments: yes 
:tangle: yes
:results: silent
:END: 

Ketika saya Cc Cc kembali dengan kesalahan yang mengatakan bahwa tidak ada fungsi eksekusi org-babel ditemukan.

Dan ketika saya Cc Cv t dikatakan 0 blok kusut.

Apakah pendekatan saya salah atau saya melewatkan sesuatu?

Sunting: Saya mengubah properti menjadi:

#+properties :file .fountain :cache yes and so on 

dan ketika saya Cc Cv t itu menyatukan blok sumber ke namafile.fountain. Sekarang bagian sinkronisasi masih harus dipecahkan.

penasaran-scribbler
sumber
Ini adalah sesuatu yang akan berguna untuk pemrograman juga. Anda bisa melihat outshine.el, tampaknya mengambil jalan yang berlawanan (file sumber dengan komentar yang dapat dilihat dalam buffer org), tetapi mungkin mendekati apa yang Anda inginkan. Penafian: belum pernah mencobanya sendiri (belum).
T. Verron
@ T.Verron Outshine tampaknya mirip dengan lentic di mana file yang sama dapat dilihat dalam buffer terpisah dengan mode yang berbeda. Saya akan membaca lebih lanjut untuk memeriksa apakah ada fitur tambahan yang tidak dimiliki lentic.
curious-scribbler
Penyinkronan dua arah ini mungkin ada (saya rasa tidak, tetapi fitur mode org cenderung tidak diperhatikan), tetapi akan jauh lebih mudah untuk hanya mengaktifkan visibilitas teks non-air mancur. Anda kemudian masih bisa kusut ke file sesekali.
Malabarba
Ada fungsi org-babel-detangleyang mengklaim ini (memberikan Anda kusut dengan komentar tautan). Saya tidak pernah bisa membuatnya bekerja.
erikstokes
2
Saya baru saja menguji org-babel-detangle dan itu berfungsi seperti yang diharapkan, meskipun saya melakukan tes yang sangat minim, jauh dari "kode produksi", tetapi terlepas dengan benar dengan komentar terkait
Joafigue

Jawaban:

6

Salah satu opsi yang dikenal luas yang mengimplementasikan hubungan dua arah pulang-pergi antara format dokumen yang berbeda (org dan air mancur, misalnya) dalam file yang sama adalah fitur server lentik yang dikembangkan oleh Phillip Lord. Itu dapat diinstal sebagai paket lentic melalui repositori MELPA.

Ada screencast yang menunjukkan mode-org dan integrasi lisp dalam file yang sama dengan dua tampilan yang dapat diedit pada saat yang bersamaan, ditautkan. Mengubah yang satu membuat perubahan yang lain. Beberapa pengaturan awal mungkin diperlukan untuk mengakomodasi format yang Anda butuhkan.

Ini adalah integrasi yang lebih kaya, lebih cocok untuk mengedit, daripada mengatakan satu arah keluaran kusut dan lepas melalui org-babel.

Pengguna Emacs
sumber
Saya membantah pernyataan "dikenal luas", karena saya baru saja menemukan tentang lentic dari jawaban Anda di sini. Juga, seperti yang Anda lihat pada melpa, itu tidak memiliki banyak instalasi, seperti yang saya harapkan untuk sebuah paket yang pada dasarnya adalah sihir murni!
Christian Herenz
1

Agak terlambat ke pesta, tapi aku punya keinginan yang sama untuk menyinkronkan blok kusut dengan file eksternal mereka.

Untuk ini saya dapat merekomendasikan org-tanglesync

Paket ini mencari :tangle <filename>properti di header file org dan membandingkan konten blok dengan itu. Dif dilakukan di latar belakang, dan kemudian pengguna diminta untuk menarik atau menolak perubahan eksternal.

Saya menemukan bahwa ini lebih intuitif daripada org-babel-detanglekarena tidak memerlukan file eksternal untuk memiliki sihir org-babel ekstra agar dapat berfungsi, yaitu file sumber yang melacak blok ekspor eksternal dan bukan sebaliknya.

Mehmet Tekman
sumber
2
Bisakah Anda menguraikan?
DoMiNeLa10
1
Apa yang dikatakan @ DoMiNeLa10. Mungkin mengatakan sesuatu tentang apa yang dilakukan paket itu, dan bagaimana menggunakannya sebagai solusi di sini berbeda dari menggunakan solusi yang diusulkan lainnya.
Drew
diperbarui, terima kasih atas moderasi yang membantu
Mehmet Tekman