Редактирование нескольких исходных блоков в одном буфере

10

У меня есть несколько исходных блоков, которые все запутаны в одном файле. Когда я вызываю C-c 'внутри одного блока, только этот конкретный блок отображается в новом буфере.

Есть ли возможность показать все части этого файла внутри этого буфера (а не только этот конкретный фрагмент)?

Пример:

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

Если я попал C-c 'в первый блок, я получаю:

(defvar *ok* "")

но я хочу:

(defvar *ok* "")
(defun add-one (n) (+ 1 n))
beyeran
источник
2
Есть функции, org-babel-tangle-jump-to-org org-babel-detangleкоторые утверждают, что делают это, если вы запутываетесь с комментариями ссылки ( :comments linkв блоке источника). Я не могу заставить их работать правильно.
erikstokes

Ответы:

2

То, что вы ищете, - это функция двустороннего редактирования, которая сохраняет изменения при двустороннем цикле, а не только односторонний вывод, общий для команд запутывания и распутывания. Лучшее решение , которое я нашел, линзовидный текст , который доступен в виде пакета стоячего на MELPA.

Пользователь Emacs
источник
2

Добавьте этот аргумент заголовка

#+PROPERTY: header-args+ :comments link

Клубок. Теперь вы можете отредактировать запутанный файл и выполнить org-babel-detangleкоманду, чтобы вернуть все обратно в файл org.

Toothrot
источник
2

Я могу порекомендовать org-tanglesync , который имеет гораздо более простой метод синхронизации, чемorg-babel-detangle

По сути, если блок запутан во внешнем файле, то каждый раз, когда этот блок редактируется, внешний файл также проверяется, и, если обнаруживается разница, пользователю предлагается отклонить или передать внешние изменения в блок org src. ,

Это также имеет функции для автоматической обработки всех запутанных блоков в буфере.

Мехмет Текман
источник