Ich versuche also, einen "Autolinks-Modus" zu erstellen, um die Funktionalität von Notetaking-Software wie Tomboy Notes oder notes.vim zu emulieren, die automatisch jeden Text verknüpft, der zufällig der Titel einer Notiz ist. Aber ich bin völlig neu bei Emacs und Elisp. Dies ist, was ich bisher habe (es ist wie das erste Elisp, das ich jemals geschrieben habe, sei sanft):
;; Set directory of files to search for *.org files
(setq autolinks-mode-dir "~/Dropbox/Org/")
;; Get all .org files in this directory.
(setq autolinks-mode-files (directory-files autolinks-mode-dir t "[.]org\\'"))
;; Convert it to a list of just the filenames, without paths.
(setq autolinks-mode-files-bare
(mapcar 'file-name-nondirectory autolinks-mode-files))
;; Strip extensions
(setq autolinks-mode-topics
(mapcar 'file-name-sans-extension autolinks-mode-files-bare))
So weit, ist es gut. Jetzt habe ich eine Liste von Themen und eine Liste der entsprechenden Dateien. Das Thema "James" entspricht beispielsweise einer Organisationsdatei unter "/path/to/notes/James.org". Jetzt möchte ich die Liste der Links von Organisationen für einen bestimmten Puffer manuell mit dieser Liste von Themen aktualisieren, sodass beim Aktivieren dieses Modus jede Instanz des Wortes "James" in einem Organisationspuffer hervorgehoben und zu einem Link zu gemacht wird /path/to/notes/James.org
. Gleiches gilt für eine mehrwortige Organisationsdatei wie "Henry James", auf die verwiesen wird /path/to/notes/Henry James.org
. Beachten Sie, dass ich nicht alle Instanzen zu ersetzen versuchen , James
mit [[James]]
oder <James>
oder etwas, nur versuchen , diese Textausschnitte zu bekommen verhalten als Links.
Ich habe org.el durchsucht und diese Variable gesehen:
(defvar org-link-re-with-space nil
"Matches a link with spaces, optional angular brackets around it.")
Was in meinem System alle möglichen Dinge enthält, wahrscheinlich aufgrund von org-ref und anderen Dingen:
org-link-re-with-space is a variable defined in ‘org.el’.
Its value is
"<?\\(A\\(?:cp?\\|utocite[*s]?\\)\\|Cite\\(?:a\\(?:l[pt]\\|uthor\\*?\\)\\|[pst]\\)?\\|Gls\\(?:pl\\)?\\|Notecite\\|P\\(?:arencites?\\|notecite\\)\\|Smartcites?\\|Textcites?\\|a\\(?:c\\(?:p\\|r\\(?:full\\|long\\|short\\)\\)?\\|ddbibresource\\|uto\\(?:cite[*s]?\\|ref\\)\\)\\|b\\(?:bdb\\|ib\\(?:entry\\|liography\\(?:style\\)?\\|tex\\)\\)\\|cite\\(?:a\\(?:l\\(?:[pt]\\*\\|[pt]\\)\\|uthor\\*?\\)\\|date\\*?\\|num\\|p\\*\\|t\\(?:\\*\\|ext\\|itle\\*?\\)\\|url\\|year\\*?\\|[*pst]\\)?\\|do\\(?:cview\\|i\\)\\|e\\(?:l\\(?:feed\\|isp\\)\\|qref\\)\\|f\\(?:ile\\(?:\\+\\(?:\\(?:emac\\|sy\\)s\\)\\)?\\|notecite\\|oot\\(?:cite\\(?:s\\|texts?\\)?\\|fullcite\\)\\|tp\\|ullcite\\)\\|g\\(?:ls\\(?:desc\\|link\\|\\(?:p\\|symbo\\)l\\)?\\|nus\\)\\|h\\(?:elp\\|ttps?\\)\\|i\\(?:n\\(?:dex\\|fo\\)\\|pynb\\|rc\\)\\|l\\(?:abel\\|ist-of-\\(?:\\(?:figur\\|tabl\\)es\\)\\)\\|m\\(?:ailto\\|\\(?:essag\\|h\\|u4\\)e\\)\\|n\\(?:ameref\\|ews\\|o\\(?:bibliography\\|\\(?:te\\)?cite\\)\\)\\|orgit\\(?:-\\(?:log\\|rev\\)\\)?\\|p\\(?:a\\(?:geref\\|rencite[*s]?\\)\\|notecite\\|rint\\(?:bibliography\\|index\\)\\)\\|r\\(?:ef\\|mail\\)\\|s\\(?:hell\\|martcites?\\|upercites?\\)\\|textcites?\\|w3m\\):\\([^]
Es scheint also, dass Org die Funktionalität hat, einfachen Text als Link hervorzuheben. Ich weiß einfach nicht, wie ich es am besten machen soll. Ich denke, ich kann meine Liste der Linkwörter org-link-re-with-space
vielleicht anhängen ? Aber wie setze ich dann ihre Ziele? Jede Hilfe wäre sehr dankbar.
James
durch [[file:/path/to/notes/James.org][James]]
im Puffer ersetzen . Dann wird es als Link angezeigt, wenn sich der Puffer im org-mode
Hauptmodus befindet.