Tard dans la soirée (et mon premier post ici, soit dit en passant), mais je pense que cela pourrait être utile à d'autres aussi. La réponse acceptée fonctionne parfaitement lorsque vous tirez à nouveau dans emacs, mais le texte réel copié dans le presse-papiers du système est toujours la syntaxe complète en mode org. Je voulais quelque chose qui puisse copier un lien hors du mode org et d' emacs. Cas d'utilisation: j'ai fait beaucoup de développement Web récemment et j'utilise souvent plusieurs navigateurs. Un seul d'entre eux peut être la valeur par défaut pour le C-c c-o
raccourci, et parfois je veux ouvrir un lien dans un lien non par défaut. En outre, coller des liens vers des collègues sur Slack, et cetera.
Pour faire court, j'ai trouvé cette solution en mélangeant et en faisant correspondre la réponse acceptée :
(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))))))
Cela copiera dans le presse-papiers le lien uniquement une partie d'un lien en mode organisation.
En fait, j'ai intégré à la fois la solution de la réponse précédente et cette nouvelle fonction à l'intérieur de ma .emacs
, chacune avec son propre raccourci clavier. Code complet ici:
(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)
J'ai choisi les raccourcis clavier C-c e
et C-c c
car ils sont de bons mnémoniques pour e
xport et c
opy et ils ne sont pas utilisés en mode org. Ils cadrent également en quelque sorte avec le raccourci clavier existant C-c C-o
pour les o
liens de pening .
if
, car lors de l'utilisation de l'interface graphique Emacs, il copiait toujours l'intégralité du lien ([[a]][b]]
) au lieu de la partie URL (a
)