Edición de múltiples bloques de origen en un búfer

10

Tengo varios bloques de origen que están enredados en el mismo archivo. Cuando invoco C-c 'dentro de un bloque, solo este bloque específico se muestra en un nuevo búfer.

¿Existe la posibilidad de mostrar todas las partes de este archivo dentro de este búfer (en lugar de solo este fragmento específico)?

Ejemplo:

#+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 golpeo C-c 'en el primer bloque obtengo:

(defvar *ok* "")

pero yo quiero:

(defvar *ok* "")
(defun add-one (n) (+ 1 n))
Beyeran
fuente
2
Hay funciones org-babel-tangle-jump-to-org org-babel-detangleque afirman hacer esto si se enredan con los comentarios del enlace ( :comments linken el bloque de origen). Parece que no puedo hacer que funcionen bien.
erikstokes

Respuestas:

2

Lo que está buscando es una función de edición bidireccional que sobreviva a las ediciones durante el viaje de ida y vuelta y no solo la salida unidireccional común para enredar y desenredar comandos. La mejor solución que he encontrado es el texto lenticular que está disponible en el paquete léntica en Melpa.

Usuario de Emacs
fuente
2

Agregue este argumento de encabezado

#+PROPERTY: header-args+ :comments link

Enredo. Ahora puede editar el archivo enredado y emitirlo org-babel-detanglepara que todo vuelva al archivo de organización.

Toothrot
fuente
2

Puedo recomendar org-tanglesync , que tiene un método de sincronización mucho más simple queorg-babel-detangle

Esencialmente, si un bloque está enredado en un archivo externo, cada vez que se edita ese bloque, también se verifica el archivo externo, y si se detecta un diferencial, se le solicita al usuario que rechace o extraiga los cambios externos en el bloque de la organización. .

Esto también tiene funciones para procesar automáticamente todos los bloques enredados en un búfer.

Mehmet Tekman
fuente