Bearbeiten mehrerer Quellblöcke in einem Puffer

10

Ich habe mehrere Quellblöcke, die alle in derselben Datei verwickelt sind. Wenn ich C-c 'innerhalb eines Blocks aufrufe , wird nur dieser bestimmte Block in einem neuen Puffer angezeigt.

Gibt es eine Möglichkeit, alle Teile dieser Datei in diesem Puffer anzuzeigen (anstelle nur dieses speziellen Snippets)?

Beispiel:

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

Wenn ich C-c 'im ersten Block treffe, bekomme ich:

(defvar *ok* "")

aber ich möchte:

(defvar *ok* "")
(defun add-one (n) (+ 1 n))
Beyeran
quelle
2
Es gibt Funktionen org-babel-tangle-jump-to-org org-babel-detangle, die behaupten, dies zu tun, wenn Sie sich mit Linkkommentaren ( :comments linkim Quellblock) verwickeln. Ich kann sie scheinbar nicht dazu bringen, richtig zu arbeiten.
Erikstokes

Antworten:

2

Was Sie suchen, ist eine Zwei-Wege-Bearbeitungsfunktion, die Änderungen während des Roundtrips überlebt und nicht nur eine Ein-Wege-Ausgabe, die für das Verwickeln und Entwirren von Befehlen üblich ist. Die beste Lösung fand ich ist Lentikular - Text , der als Paket verfügbar ist lentic auf Melpa.

Emacs Benutzer
quelle
2

Fügen Sie dieses Header-Argument hinzu

#+PROPERTY: header-args+ :comments link

Gewirr. Sie können jetzt die verworrene Datei selbst bearbeiten und ausgeben org-babel-detangle, um alles wieder in die Organisationsdatei zu bringen.

Zahnrot
quelle
2

Ich kann org-tanglesync empfehlen , das eine viel einfachere Synchronisierungsmethode hat alsorg-babel-detangle

Wenn ein Block in eine externe Datei verwickelt ist, wird jedes Mal, wenn dieser Block bearbeitet wird, auch die externe Datei überprüft. Wenn ein Unterschied festgestellt wird, wird der Benutzer aufgefordert, die externen Änderungen entweder abzulehnen oder in den org src-Block zu ziehen .

Dies hat auch Funktionen zum automatischen Verarbeiten aller verwickelten Blöcke in einem Puffer.

Mehmet Tekman
quelle