Редагування декількох джерельних блоків в одному буфері


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))

2
Є функції, org-babel-tangle-jump-to-org org-babel-detangleякі вимагають цього робити, якщо ви заплутуєтесь із коментарями посилань ( :comments linkу вихідному блоці). Я не можу, здається, змусити їх працювати правильно.
erikstokes

Відповіді:


2

Те, що ви шукаєте, - це двостороння функція редагування, яка переживає зміни під час зворотного переходу, а не лише односторонній вихід, який є загальним для команд запуску та розлучення. Найкраще рішення, яке я знайшов, - це сочевичний текст, який доступний у вигляді пакету, що передається на MELPA.


2

Додайте цей аргумент заголовка

#+PROPERTY: header-args+ :comments link

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


2

Я можу рекомендувати org-tanglesync , який має набагато простіший метод синхронізації, ніжorg-babel-detangle

По суті, якщо блок пов’язаний із зовнішнім файлом, то кожного разу, коли цей блок редагується, також перевіряється зовнішній файл, і якщо виявлено різницю, користувачеві пропонується або відхилити, або втягнути зовнішні зміни у блок sr src .

Це також має функції автоматичної обробки всіх заблокованих блоків у буфері.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.