Spät zur Party (und übrigens zu meinem ersten Beitrag hier), aber ich denke, das könnte auch für andere nützlich sein. Die akzeptierte Antwort funktioniert einwandfrei, wenn Sie wieder in Emacs reißen, aber der tatsächliche Text, der in die System-Zwischenablage kopiert wird, hat immer noch die vollständige Syntax für den Organisationsmodus. Ich wollte etwas, das einen Link sowohl aus dem Org-Modus als auch aus dem Emacs kopieren kann . Anwendungsfälle: Ich habe in letzter Zeit viel Web-Entwicklung betrieben und benutze oft mehrere Browser. Nur einer von ihnen kann der Standard für die C-c c-o
Verknüpfung sein, und manchmal möchte ich einen Link in einem nicht standardmäßigen öffnen. Auch das Einfügen von Links zu Kollegen auf Slack, und so weiter.
Um es kurz zu machen, ich bin auf diese Lösung gekommen, indem ich die akzeptierte Antwort gemischt und angepasst habe :
(defun my-org-export-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(string-match org-bracket-link-regexp text)
(kill-new (substring text (match-beginning 1) (match-end 1))))))
Dies kopiert den Link, der nur Teil eines Org-Modus-Links ist, in die Zwischenablage.
Tatsächlich habe ich sowohl die Lösung der vorherigen Antwort als auch diese neue Funktion in meine integriert .emacs
, jede mit einer eigenen Tastenkombination. Vollständiger Code hier:
(defun my-yank-org-link (text)
(if (derived-mode-p 'org-mode)
(insert text)
(string-match org-bracket-link-regexp text)
(insert (substring text (match-beginning 1) (match-end 1)))))
(defun my-org-copy-smart-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
(kill-new text))))
(global-set-key (kbd "C-c c") 'my-org-copy-smart-url)
(defun my-org-export-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(string-match org-bracket-link-regexp text)
(kill-new (substring text (match-beginning 1) (match-end 1))))))
(global-set-key (kbd "C-c e") 'my-org-export-url)
Ich habe die gewählte C-c e
und C-c c
keybindings , weil sie gute Mnemoniken sind e
xport und c
opieren und sie sind nicht verwendete in org-Modus. Sie passen auch irgendwie zu der bereits vorhandenen Tastenkombination C-c C-o
für das o
Schreiben von Links.
if
, weil bei der Verwendung der GUI Emacs immer der gesamte Link ([[a]][b]]
) anstelle des URL-Teils (a
) kopiert wurde