org-mode capture mit sexp

8

Ich versuche, eine Capture-Vorlage zu erstellen, die eine URL in einen Link im Organisationsmodus mit dem <title> als Linknamen konvertiert.

Meine Konvertierungsfunktion sieht folgendermaßen aus:

%Vor%

Bei Aufruf aus normalem Emacs-Lisp-Code wird das korrekte Ergebnis zurückgegeben. Aber wenn es in diesem org-capture-template verwendet wird, gibt es nur bad url zurück.

%Vor%

Ist die Reihenfolge der Erweiterung anders? Muss ich der Schnur anders entgehen? Zauber? Die erste %c ist nur ihre, um die Zeichenfolge zu debuggen und wird tatsächlich als "url" gedruckt.

Bitte machen Sie nicht einmal darauf aufmerksam, dass das Parsen von XML mit regexp der falsche Ansatz ist. Cthulhu ist bereits verfolgt mich und das wird es nicht noch schlimmer machen.

    
pmr 13.07.2011, 15:28
quelle

3 Antworten

7

Das Problem ist die Reihenfolge der Erweiterung von Vorlagenparametern. Die einfachen % Vorlagen werden nach der Auswertung des sexp erweitert. Die ursprüngliche Fehlermeldung enthält weiterhin eine Vorlage und wird daher in den Inhalt der Zwischenablage erweitert, und daher enthält die Fehlermeldung nicht die Zeichenfolge, die ursprünglich an get-page-title übergeben wurde.

Die Lösung besteht darin, innerhalb des sexp auf den Kill-Ring zuzugreifen:

%Vor%

BEARBEITEN Dieses Verhalten ist jetzt im Organisationsmodus dokumentiert.

    
pmr 16.07.2011, 11:17
quelle
6

Wäre es nicht möglich, org-protocol.el zu verwenden? Ссылка

Ich habe es gerade mit der folgenden Vorlage getestet (Hinzufügen eines Untertitels für den gewünschten Titel als Überschrift).

Vorlage:

%Vor%

Mit einer browserbasierten Tastatur (in meinem Fall mit Opera, obwohl auch Beispiele für Firefox, Uzbl, Acrobat und Conkeror zur Verfügung stehen) konnte ich Folgendes festhalten:

%Vor%

(Ich habe den Org-Link einfach gebrochen, um das Scrollen auf ein Minimum zu beschränken, es war ursprünglich nicht auf zwei Zeilen)

    
Jonathan Leech-Pepin 05.08.2011 19:14
quelle
2

@aboabo hat eine undokumentierte Variable in Ссылка freigegeben, die eine allgemeinere Lösung für das Fragethema zur Verwendung von sexp bietet mit Schlüsselwortwerten in einer Vorlage (über Kill-Ring hinaus). Die Variable org-store-link-plist speichert alle Informationen, die an das Capture übergeben werden. Sie können also direkt von einer Funktion wie dieser auf ihre Werte zugreifen:

%Vor%

PS, Laut der Handbuchseite (Zitat unten) klingt es für mich wie deine Ansatz in der Frage sollte auch funktionieren. Aber ich stimme dem zu, was du beschreibst, scheint tatsächlich zu sein - es scheint wie ein Bug im Vergleich zum Handbuch.

  

% (sexp) Elisp sexp auswerten und durch das Ergebnis ersetzen. Zur Bequemlichkeit,   %: Schlüsselwort (siehe unten) Platzhalter im Ausdruck werden sein   davor erweitert.

    
studgeek 13.01.2014 02:59
quelle

Tags und Links