Édition de plusieurs blocs sources dans un seul tampon

10

J'ai plusieurs blocs sources qui sont tous enchevêtrés dans le même fichier. Lorsque j'appelle C-c 'à l'intérieur d'un bloc, seul ce bloc spécifique est affiché dans un nouveau tampon.

Existe-t-il une possibilité d'afficher toutes les parties de ce fichier à l'intérieur de ce tampon (au lieu de juste cet extrait spécifique)?

Exemple:

#+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

Si je frappe C-c 'dans le premier bloc, j'obtiens:

(defvar *ok* "")

mais je veux:

(defvar *ok* "")
(defun add-one (n) (+ 1 n))
beyeran
la source
2
Il existe des fonctions org-babel-tangle-jump-to-org org-babel-detanglequi prétendent le faire si vous vous embrouillez avec des commentaires de lien ( :comments linkdans le bloc source). Je n'arrive pas à les faire fonctionner correctement.
erikstokes

Réponses:

2

Ce que vous recherchez est une fonction d'édition bidirectionnelle qui survit aux modifications pendant l'aller-retour et pas seulement une sortie unidirectionnelle commune aux commandes d'enchevêtrement et de démêlage. La meilleure solution que je trouve est le texte lenticulaires qui est disponible dans le paquet lentic sur Melpa.

Utilisateur Emacs
la source
2

Ajouter cet argument d'en-tête

#+PROPERTY: header-args+ :comments link

Enchevêtrement. Vous pouvez maintenant modifier le fichier enchevêtré lui-même et émettre org-babel-detanglepour tout remettre dans le fichier org.

Toothrot
la source
2

Je peux recommander org-tanglesync , qui a une méthode de synchronisation beaucoup plus simple queorg-babel-detangle

Essentiellement, si un bloc est enchevêtré dans un fichier externe, chaque fois que ce bloc est modifié, le fichier externe est également vérifié et si un diff est détecté, l'utilisateur est invité à rejeter ou à insérer les modifications externes dans le bloc org src. .

Cela a également des fonctions pour traiter automatiquement tous les blocs enchevêtrés dans un tampon.

Mehmet Tekman
la source