Есть ли способ заставить org-babel правильно делать отступы сейчас запутанный код?
Запутывать это:
#+BEGIN_SRC C :tangle no :noweb-ref begin
int main() {
printf("Line 1\n");
#+END_SRC
#+BEGIN_SRC C :tangle no :noweb-ref middle
printf("Second\n");
#+END_SRC
#+BEGIN_SRC C :tangle no :noweb-ref end
}
#+END_SRC
#+BEGIN_SRC C :tangle ~/test.c :noweb no-export
<<begin>>
<<middle>>
<<end>>
#+END_SRC
Дает это:
int main() {
printf("Line 1\n");
printf("Second\n");
}
У меня включен org-src-preserve-indentation, но он не может сохранить то, чего там нет. Окна редактирования кода не могут быть установлены правильно, если он не видит части из предыдущих блоков исходного кода. Наконец, я не хочу проходить через все предыдущие фрагменты, чтобы выяснить, с чего должен начинаться отступ при каждом запуске нового блока исходного кода.
Текущий взлом состоит в том, чтобы запутать исходный код, открыть запутанный файл в новом буфере, выбрать все и запустить c-indent-line-or-region, но я надеюсь, что есть что-то лучшее, чем это.
Версия в орг-режиме: 8.2.5h
1 ответ
Как уже упоминалось, подключиться к org-babel-post-tangle-hook
это путь Я использую следующее:
(defun tnez/src-cleanup ()
(indent-region (point-min) (point-max)))
(add-hook 'org-babel-post-tangle-hook 'tnez/src-cleanup)