Synchronisation des modifications d'un fichier emmêlé vers le fichier org d'origine

12

J'utilise le mode org avec le mode fontaine pour écrire un scénario.

Organisation pour l'organisation et fontaine pour le formatage du scénario.

Voici le code que j'utilise à cet effet:

Paramètres pour travailler avec des blocs source (fontaine) dans 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)

Par exemple :

acte 1

** SQ 1

*** Scène 1

Un tas de texte lié à la scène et à ce que font les personnages et tout ce que j'ai besoin de savoir mais qui ne finira jamais dans le scénario.

Fontaine BEGIN_SRC

texte de scénario

END_SRC

Maintenant, je Cc 'et il ouvre ce qui précède dans un nouveau tampon et je peux le reprendre à partir de là.


Le problème avec ma configuration actuelle est qu'elle ne me permet pas de voir le texte du scénario dans son intégralité.

J'ai environ 50 blocs de ce type et j'aimerais atteindre les objectifs suivants:

Je veux que l'organisation exporte tous les blocs de fontaine vers un fichier spécifique, par exemple le scénario de fontaine. De cette façon, j'ai un seul fichier avec le scénario uniquement.

Faites synchroniser toutes les modifications avec le fichier org. Si je modifie quelque chose dans fountain-screenplay, le bloc source dans org devrait mettre à jour le changement et vice-versa.


Pour ce faire, j'ai inséré les propriétés suivantes dans mon fichier org:

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

Lorsque je Cc Cc, il revient avec une erreur indiquant qu'aucune fonction d'exécution org-babel n'a été trouvée.

Et quand je Cc Cv t, il dit 0 blocs emmêlés.

Mon approche est-elle incorrecte ou manque-t-il quelque chose?

Modifier: j'ai changé les propriétés en:

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

et quand je Cc Cv t il emmêle les blocs source à un nom de fichier.fountain. La partie synchronisation reste à résoudre.

curieux-gribouilleur
la source
C'est quelque chose qui serait également utile pour la programmation. Vous pourriez y jeter un œil outshine.el, il semble prendre le chemin inverse (fichier source avec des commentaires qui peuvent être consultés dans un tampon d'organisation), mais il peut se rapprocher de ce que vous voulez. Avertissement: il n'a jamais (moi-même) essayé.
T. Verron
@ T.Verron Outshine semble être similaire à lentic où le même fichier peut être vu dans des tampons séparés avec différents modes. Je vais en lire plus pour vérifier s'il a des fonctionnalités supplémentaires que lentic n'a pas.
curious-scribbler
Cette synchronisation bidirectionnelle peut exister (je ne pense pas, mais les fonctionnalités du mode org ont tendance à passer inaperçues), mais il serait extrêmement facile de basculer simplement la visibilité du texte non source. Vous pouvez alors toujours emmêler un fichier de temps en temps.
Malabarba
Il y a une fonction org-babel-detanglequi prétend à cela (vous fournir des commentaires de lien emmêlés). Je n'ai jamais réussi à le faire fonctionner.
erikstokes
2
Je viens de tester l'org-babel-detangle et cela a fonctionné comme prévu, même si j'ai fait des tests très minimes, loin de "production-code", mais correctement
démêlé

Réponses:

6

Une option largement connue qui implémente une liaison aller-retour bidirectionnelle entre différents formats de document (org et fontaine, par exemple) dans le même fichier est la fonction de serveur lentique développée par Phillip Lord. Il peut être installé que le lentic package par dépôt Melpa.

Il y a un screencast montrant l'intégration en mode org et lisp dans le même fichier avec deux vues modifiables différentes en même temps, liées. Changer dans l'un fait changer l'autre. Une configuration initiale peut être nécessaire pour s'adapter aux formats dont vous avez besoin.

Il s'agit d'une intégration plus riche, plus adaptée à l'édition, que la sortie unidirectionnelle d'enchevêtrement et de démêlage via org-babel.

Utilisateur Emacs
la source
Je conteste la déclaration "largement connue", car je viens de trouver sur lentic de votre réponse ici. De plus, comme vous pouvez le voir sur melpa, il n'a pas autant d'installations que je m'y attendais pour un package qui est essentiellement de la magie!
Christian Herenz
1

Un peu tard pour la fête, mais j'avais le même souhait de synchroniser les blocs enchevêtrés avec leurs fichiers externes.

Pour cela, je peux recommander org-tanglesync

Ce package recherche une :tangle <filename>propriété dans l'en-tête d'un fichier org et y compare le contenu du bloc. Un diff est effectué en arrière-plan, puis l'utilisateur est invité à extraire ou à rejeter les modifications externes.

Je trouve que c'est plus intuitif que org-babel-detangleparce qu'il ne nécessite pas que le fichier externe ait une magie org-babel supplémentaire pour que cela fonctionne, c'est-à-dire que c'est le fichier source qui suit les blocs exportés externes et non l'inverse.

Mehmet Tekman
la source
2
Peux-tu élaborer?
DoMiNeLa10
1
Ce que @ DoMiNeLa10 a dit. Peut-être dire quelque chose sur ce que fait ce paquet, et en quoi l'utiliser comme solution ici est différent de l'utilisation d'autres solutions proposées.
Drew
mis à jour, merci pour la modération utile
Mehmet Tekman