У меня есть ниже в моей документации:
#+INCLUDE: "code/basic.sv" :src systemverilog :lines "14-117"
Здесь строка 14 - там, где я есть, class basic extends ..
а строка 116 - там, где я есть endclass
.
Есть ли способ автоматически вставить числа 14 и 117 (= 116 + 1), чтобы мне не приходилось обновлять их вручную каждый раз, когда я изменяю code/basic.sv
?
org-include-src(FILE, LANGUAGE, REGEX_BEGIN, REGEX_END)
org-export-before-processing-hook
для предварительной обработки номеров строк. Другой способ - просто отправить запрос на добавление функции в список рассылки org :)Ответы:
Вот еще один вариант. Это позволяет вам настраивать регулярные выражения для каждого включения. Он должен лучше подходить для некоторых рабочих процессов, поскольку вы не ограничены определениями на основе расширений.
Использовать
Сделайте что-то вроде следующего в вашем орг-файле. (
:lines
Ключевое слово необязательно)Функция посетит my-class.sv и выполнит поиск этих двух регулярных выражений, а затем обновит
:lines
ключевое слово в соответствии с результатом совпадения.Если
:range-begin
отсутствует, диапазон будет "-80".Если
:range-end
отсутствует, диапазон будет "14-".Код
источник
#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 1" :range-end "// End of Example 1"
. Отрывок 2:#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 2" :range-end "// End of Example 2"
. Исполнение безупречно! Спасибо за реализацию этого так быстро!Лучший способ, которым я могу придумать, - обновить эти числа непосредственно перед экспортом или перед оценкой.
Updater
Это функция, которая проходит через буфер. Вы можете привязать его к ключу или добавить его к крючку. Следующий код обновляет строки всякий раз, когда вы сохраняете файл , но если ваш вариант использования отличается, просто выясните, какой хук вам нужен! (орг-режим полон хуков)
Регулярные выражения
Здесь вы определяете регулярные выражения, которые будут использоваться в качестве первой и последней строк, которые будут включены. Вы можете дать список регулярных выражений для каждого расширения файла.
Фоновый рабочий
Это парень, который делает большую часть работы.
источник
org-export-before-processing-hook
,Every function in this hook will be called with one argument: the back-end currently used, as a symbol
. Поскольку мы не передаем никаких аргументов, мы получаем ошибкуrun-hook-with-args: Wrong number of arguments
. Теперь я не уверен, какой аргумент добавить вendless/update-includes
...(&optional dummy)
?(&optional dummy)
фактически сработало! Но интересный побочный эффект вызова функции через хук. Если я вызываю функцию с помощьюM-x
, она изменяет.org
файл с обновленными номерами строк. Но если я просто экспортирую в html и позволю хуку вызывать функцию, обновленные номера строк будут отражены только в экспортированном файле, а НЕ в.org
файле.