Orgmode insérer un lien depuis le presse-papiers?

9

Existe-t-il un moyen simple d'insérer un lien en mode organisation directement à partir du presse-papiers du système? Je pense à sélectionner une URL dans Safari et à insérer ce lien directement dans un document en mode organisation.

Alain
la source
1
De plus, il est vraiment agréable de configurer un bookmarklet pour insérer automatiquement le lien à l'aide de la capture. Voir ici: orgmode.org/worg/org-contrib/org-protocol.html
mbork

Réponses:

12

Votre question n'est pas très précise quant au type de lien que vous souhaitez et à ce que vous considérez comme "simple". En supposant que vous entendiez un lien du formulaire suivant:

[[target][description]]

le workflow par défaut (après avoir mis l'URL dans votre presse-papiers) est:

C-c C-l C-y RET description RET

La saisie de a descriptionest facultative; si vous n'en spécifiez pas, le lien sera de la forme

[[target]]
itsjeyd
la source
Assez simple. Cela fonctionne comme prévu sur une machine Windows, mais pour une raison quelconque, il est impossible de copier / coller une URL depuis Firefox ou Safari dans Emacs sur MacOS avec Emacs 25.0.50
Alain
@Alain Je ne suis pas sur MacOS donc je ne peux pas le tester, mais vous pouvez essayer d'utiliser x-clipboard-yankau lieu de yankcoller le contenu du presse-papiers. Cette commande n'est pas liée à une clé par défaut, vous devrez donc l'appeler à l'aide de M-x. Si cela résout le problème, vous pouvez bien sûr configurer une liaison de clé pratique pour lui (via (global-set-key (kbd "C-c y") 'x-clipboard-yank)).
itsjeyd
3

Selon laquelle des deux vous préférez, voici deux fonctions qui vérifient s'il y a une URL dans le presse-papiers et, si c'est le cas, l'insérez au point sous forme de org-modelien. Le premier le fait sous la forme de [[url]], et le second sous la forme de [[url][description]]et vous laisse sur le descriptionterrain.

(defun insert-url-as-org-link-sparse ()
  "If there's a URL on the clipboard, insert it as an org-mode
link in the form of [[url]]."
  (interactive)
  (let ((link (substring-no-properties (x-get-selection 'CLIPBOARD)))
        (url  "\\(http[s]?://\\|www\\.\\)"))
    (save-match-data
      (if (string-match url link)
          (insert (concat "[[" link "]]"))
        (error "No URL on the clipboard")))))

(defun insert-url-as-org-link-fancy ()
  "If there's a URL on the clipboard, insert it as an org-mode
link in the form of [[url][*]], and leave point at *."
  (interactive)
  (let ((link (substring-no-properties (x-get-selection 'CLIPBOARD)))
        (url  "\\(http[s]?://\\|www\\.\\)"))
    (save-match-data
      (if (string-match url link)
          (progn
            (insert (concat "[[" link "][]]"))
            (backward-char 2))
        (error "No URL on the clipboard")))))
Dan
la source
3

J'ai créé un package emacs qui peut vous aider à insérer des liens en mode organisation à partir du presse-papiers:

Il fait une requête HTTP à l'URL du presse - papiers et si la réponse contient HTML , il essaie d'extraire le titre et insère le lien org-mode dans ce format: [[URL][extracted-title]].


Par exemple, après avoir copié le lien de cette question , faire M-x org-cliplinkdans un tampon en mode org insérera:

[[https://emacs.stackexchange.com/q/3280][org mode - Orgmode insert link from clipboard? - Emacs Stack Exchange]]

et le lien apparaîtra en hyperlien comme mode org - Orgmode insérer un lien depuis le presse-papiers? - Emacs Stack Exchange dans ce tampon.

rexim
la source