Sincronizzazione delle modifiche su un file aggrovigliato con il file organizzativo originale


12

Sto usando la modalità org con la modalità fontana per scrivere una sceneggiatura.

Org per organizzazione e fontana per la formattazione della sceneggiatura.

Questo è il codice che uso a questo scopo:

Impostazioni per lavorare con (source) blocchi sorgente in 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)

Per esempio :

atto 1

** MQ 1

*** Scena 1

Un sacco di testi relativi alla scena e a ciò che i personaggi stanno facendo e tutto ciò che devo sapere ma non finiranno mai nella sceneggiatura.

Fontana BEGIN_SRC

testo della sceneggiatura

END_SRC

Ora I Cc 'e apre quanto sopra in un nuovo buffer e posso riprenderlo da lì.


Il problema con la mia configurazione attuale è che non mi permette di vedere il testo della sceneggiatura nella sua interezza.

Ho circa 50+ di questi blocchi e mi piacerebbe ottenere quanto segue:

Voglio che org esporti tutti i blocchi di fontane in un file specifico, diciamo sceneggiatura di fontane. In questo modo ho un solo file solo con la sceneggiatura.

Tutte le modifiche sono sincronizzate con il file org. Se modifico qualcosa nella sceneggiatura di fontane, il blocco sorgente in org dovrebbe aggiornare la modifica e viceversa.


Per fare ciò, ho inserito le seguenti proprietà nel mio file org:

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

Quando I Cc Cc ritorna con un errore che dice che non è stata trovata alcuna funzione di esecuzione org-babel.

E quando I Cc Cv t dice 0 blocchi aggrovigliati.

Il mio approccio non è corretto o mi sto perdendo qualcosa?

Modifica: ho modificato le proprietà in:

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

e quando I Cc Cv aggroviglia i blocchi sorgente in un nomefile.fontana. Ora la parte di sincronizzazione rimane da risolvere.


Questo è utile anche per la programmazione. Potresti dare un'occhiata outshine.el, sembra prendere la strada opposta (file sorgente con commenti che possono essere visualizzati in un buffer organizzativo), ma potrebbe avvicinarsi a quello che vuoi. Disclaimer: non l'ho mai provato da solo (ancora).
T. Verron,

@ T.Verron Outshine sembra essere simile alla lentic in cui lo stesso file può essere visto in buffer separati con modalità diverse. Leggerò di più per verificare se ha funzionalità aggiuntive che lentic non ha.
curious-scribbler

Questa sincronizzazione bidirezionale potrebbe esistere (non credo che lo sia, ma le funzionalità della modalità org hanno la tendenza a passare inosservate), ma sarebbe tremendamente più semplice attivare la visibilità del testo non-fontana. Puoi quindi aggrovigliare un file ogni tanto.
Malabarba,

C'è una funzione org-babel-detangleche pretende di farlo (fornirti intricato con i commenti sui link). Non sono mai stato in grado di farlo funzionare.
erikstokes

2
Ho appena testato org-babel-districare e ha funzionato come previsto, anche se ho fatto test molto minimi, tutt'altro che "codice di produzione", ma districato correttamente con commenti collegati
Joafigue

Risposte:


6

Un'opzione ampiamente nota che implementa il collegamento di andata e ritorno a due vie tra diversi formati di documento (ad esempio org e fountain) all'interno dello stesso file è la funzionalità del server lentic sviluppata da Phillip Lord. Può essere installato come lentico pacchetto tramite repository Melpa.

C'è uno screencast che mostra la modalità org e l'integrazione lisp nello stesso file con due diverse viste modificabili contemporaneamente, collegate. Cambiare in uno fa cambiamenti nell'altro. Potrebbe essere necessaria una configurazione iniziale per adattarsi ai formati necessari.

Questa è un'integrazione più ricca, più adatta per l'editing, che dire l'uscita unidirezionale di groviglio e districare tramite org-babel.


Contesto l'affermazione "ampiamente conosciuta", poiché ho appena scoperto della lenticità dalla tua risposta qui. Inoltre, come puoi vedere su melpa, non ha tante installazioni, come mi sarei aspettato per un pacchetto che è fondamentalmente pura magia!
Christian Herenz,

1

Leggermente in ritardo alla festa, ma avevo lo stesso desiderio di sincronizzare i blocchi aggrovigliati con i loro file esterni.

Per questo posso consigliare org-tanglesync

Questo pacchetto cerca una :tangle <filename>proprietà nell'intestazione di un file org e confronta il contenuto del blocco con esso. Un differenziale viene eseguito in background, quindi all'utente viene richiesto di estrarre o rifiutare le modifiche esterne.

Trovo che questo sia più intuitivo rispetto al org-babel-detanglefatto che non richiede che il file esterno abbia magie org-babel extra per funzionare, cioè è il file sorgente che traccia i blocchi esportati esterni e non viceversa.


2
Puoi elaborare?
DoMiNeLa10

1
Cosa ha detto @ DoMiNeLa10. Forse dire qualcosa su ciò che fa quel pacchetto e su come usarlo come soluzione qui è diverso dall'uso di altre soluzioni proposte.
Disegnato il

aggiornato, grazie per l'utile moderazione
Mehmet Tekman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.