Einzeiliges Org-Quellgewirr


7

Manchmal, insbesondere beim Notieren, kann eine literate org-Datei einzeilige Quellblöcke wie folgt enthalten:

* Taking notes
:PROPERTIES:
:tangle: whatever.pl
:comments: org
:END:

Perl set command
#+BEGIN_SRC perl
set $random_var=1;
#+END_SRC

Perl unset command (just making it up... :P)
#+BEGIN_SRC perl
unset $random_var;
#+END_SRC

Für solche Anwendungen #+BEGIN_SRC...#+END_SRCscheint das Pragma ein Overkill zu sein. Einfache Vorlagen reduzieren die Eingabe, aber das Organisationsdokument sieht immer noch etwas überfüllt aus.

Gibt es eine einfache Möglichkeit, dies zu tun? Ich weiß, dass eine Zeile, die mit a beginnt, :automatisch zu wörtlichem Text gelangt. Gibt es eine Möglichkeit, mit org-tangle etwas Ähnliches zu tun?

Ich suche nach einer Lösung wie dieser oder zumindest in der Nähe dieser Linien, während die Möglichkeiten zum Hervorheben und Verwickeln der Quelle für den übergeordneten Modus beibehalten werden:

* Taking notes
:PROPERTIES:
:tangle: whatever.pl
:comments: org
:mode: perl
:END:

Perl set command
: set $random_var=1;

Perl unset command (just making it up... :P)
: unset $random_var;

Es ist sauberer, leicht anzusehen und meiner Meinung nach etwas leiser.

Anregungen wäre dankbar. Danke im Voraus!


Wie wäre es mit einem Befehl zum Ein- und Ausblenden der gesamten Datei zum Starten und Beenden von Quellcodeblöcken, wobei alles dazwischen verbleibt? Der Anfang und das Ende hätten ...stattdessen, oder Sie können eine beliebige Abkürzung verwenden, um versteckten Text anzuzeigen (z. B. ein Smiley ), oder Sie können überhaupt keinen Indikator für die versteckten Linien haben
Gesetzesliste

@lawlist Kann Ihr Beispiel nicht verstehen ... können Sie eine Demo zeigen?
DJ

1
Bewerten Sie in einem Puffer, der Ihr erstes Beispiel enthält, das folgende Snippet, um Text auszublenden: (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))) Wenn Sie mit Ihrem Test fertig sind, bewerten Sie (remove-overlays). Dies ist nur ein einfaches Beispiel für das Ausblenden von Text. Sie können Platzhalter für den versteckten Text erstellen, der aussieht ...oder was auch immer Sie wollen - z hidden text lies here. Bewerten Sie Code mitM-x eval-expression
lawlist

@lawlist danke. das bereinigt den Puffer erheblich. Ich wäre jedoch eifriger auf die oben vorgeschlagene Lösung im Organisationsmodus gewesen. Eine Frage: Ich habe versucht, Ihren Code in eine Funktion zu verpacken: (defun clean-org-buffer() (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))))Die Auswertung dieser Funktion führt jedoch zu folgenden Fehlern : Wrong type argument: commandp, clean-org-buffer. Können Sie bitte vorschlagen, wie Sie dabei helfen können?
DJ

1
Sie können entweder M-x eval-expression RET (clean-org-buffer) RET(ohne Änderungen am Snippet) und / oder (interactive)kurz vor dem Snippet in meinem vorherigen Kommentar (2 Absätze oben) hinzufügen , damit es interaktiv verwendet werden kann M-x clean-org-buffer.
Lawlist

Antworten:


4

Aus (org) Struktur von Codeblöcken :

Live-Codeblöcke können auch inline mit angegeben werden

src_<language>{<body>}

oder

src_<language>[<header arguments>]{<body>}

Sie sollten also in der Lage sein, src_perl{set $random_var=1;}anstelle des vollständigen Blocks zu verwenden.


1
Dies scheint nicht zu funktionieren. 1) Die Syntaxhervorhebung ist weg. 2) Der verwickelte Code kommt als Kommentar - nicht als Anweisung in der Ausgabedatei (in diesem Fall Whatever.pl). Mache ich es falsch
DJ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.