Ich habe Folgendes in meiner Dokumentation:
#+INCLUDE: "code/basic.sv" :src systemverilog :lines "14-117"
Hier habe ich Zeile 14 class basic extends ..
und Zeile 116 habe ich endclass
.
Gibt es eine Möglichkeit, die Nummern 14 und 117 (= 116 + 1) automatisch einzufügen, damit ich sie nicht jedes Mal manuell aktualisieren muss, wenn ich sie ändere code/basic.sv
?
org-include-src(FILE, LANGUAGE, REGEX_BEGIN, REGEX_END)
org-export-before-processing-hook
die Zeilennummern vorverarbeitet werden können. Eine andere Möglichkeit besteht darin, eine Mail mit einer Funktionsanforderung an die Mailingliste derAntworten:
Hier ist eine weitere Option. In diesem Fall können Sie die regulären Ausdrücke pro Include anpassen. Es sollte besser zu einigen Workflows passen, da Sie nicht auf erweiterungsbasierte Definitionen beschränkt sind.
Benutzen
Gehen Sie in Ihrer Organisationsdatei wie folgt vor. (Das
:lines
Schlüsselwort ist optional)Die Funktion besucht "my-class.sv" und sucht nach diesen beiden regulären Ausdrücken. Anschließend wird das
:lines
Schlüsselwort entsprechend dem Übereinstimmungsergebnis aktualisiert .Wenn
:range-begin
fehlt, ist der Bereich "-80".Wenn
:range-end
fehlt, ist der Bereich "14-".Der Code
quelle
#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 1" :range-end "// End of Example 1"
. Snippet 2 :#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 2" :range-end "// End of Example 2"
. Die Ausführung ist einwandfrei! Vielen Dank, dass Sie dies so schnell umgesetzt haben!Der beste Weg, den ich mir vorstellen kann, besteht darin, diese Zahlen unmittelbar vor dem Export oder vor der Auswertung zu aktualisieren.
Der Updater
Dies ist die Funktion, die den Puffer durchläuft. Sie können es an einen Schlüssel binden oder einem Haken hinzufügen. Der folgende Code aktualisiert die Zeilen, wenn Sie die Datei speichern . Wenn Ihr Anwendungsfall jedoch anders ist, finden Sie einfach heraus, welchen Hook Sie benötigen! (org-mode ist voller Hooks)
Die Regexps
Hier definieren Sie die regulären Ausdrücke, die als erste und letzte Zeile verwendet werden sollen. Sie können für jede Dateierweiterung eine Liste mit regulären Ausdrücken angeben.
Der Hintergrundarbeiter
Dies ist der Typ, der den größten Teil der Arbeit erledigt.
quelle
org-export-before-processing-hook
,Every function in this hook will be called with one argument: the back-end currently used, as a symbol
. Da wir kein Argument übergeben, erhalten wir den Fehlerrun-hook-with-args: Wrong number of arguments
. Jetzt bin ich mir nicht sicher, welches Argument ich hinzufügen sollendless/update-includes
...(&optional dummy)
?(&optional dummy)
tatsächlich funktioniert! Aber ein interessanter Nebeneffekt beim Aufrufen der Funktion über Hook. Wenn ich die Funktion mitM-x
aufrufe, ändert sie die.org
Datei mit den aktualisierten Zeilennummern. Wenn ich aber einfach nach HTML exportiere und dem Hook erlaube, die Funktion aufzurufen, werden die aktualisierten Zeilennummern nur in der exportierten Datei wiedergegeben, NICHT in der.org
Datei.