Orgmode insertar enlace desde el portapapeles?


9

¿Hay una manera simple de insertar un enlace en modo org directamente desde el portapapeles del sistema? Estoy pensando en seleccionar una URL en Safari e insertar ese enlace directamente en un documento en modo organización.


1
Además, es realmente agradable configurar un marcador para insertar automáticamente el enlace usando captura. Ver aquí: orgmode.org/worg/org-contrib/org-protocol.html
mbork

Respuestas:


12

Su pregunta no es muy específica con respecto a qué tipo de enlace desea y lo que consideraría "simple". Suponiendo que se refiere a un enlace de la siguiente forma:

[[target][description]]

El flujo de trabajo predeterminado (después de poner la URL en su portapapeles) es:

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

Ingresar a descriptiones opcional; si no especifica uno, el enlace tendrá la forma

[[target]]

Suficientemente simple. Funciona como se esperaba en una máquina con Windows, pero por alguna razón no puede copiar / pegar una URL de Firefox o Safari en Emacs en MacOS con Emacs 25.0.50
Alain

@Alain No estoy en MacOS, así que no puedo probarlo, pero puedes intentar usarlo en x-clipboard-yanklugar de yankpegar el contenido del portapapeles. Este comando no está vinculado a una tecla de forma predeterminada, por lo que deberá llamarlo usando M-x. Si eso resuelve el problema, por supuesto, puede configurar una combinación de teclas conveniente para ello (a través de (global-set-key (kbd "C-c y") 'x-clipboard-yank)).
itsjeyd

3

Dependiendo de cuál de los dos prefiera, aquí hay dos funciones que verifican si hay una URL en el portapapeles y, si es así, insértela en el punto como un org-modeenlace. El primero lo hace en forma de [[url]], y el segundo en forma de [[url][description]]y te deja en el descriptioncampo.

(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")))))

3

He creado un paquete de emacs que puede ayudarlo a insertar enlaces en modo org desde el portapapeles:

Se realiza una solicitud HTTP a la URL desde el portapapeles y si la respuesta contiene HTML se trata de extraer el título e inserta el enlace de org-mode en este formato: [[URL][extracted-title]].


Por ejemplo, después de copiar el enlace de esta pregunta , hacer M-x org-cliplinken un búfer de modo org insertará:

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

y el enlace se verá hipervinculado como modo org - ¿Orgmode insertar enlace desde el portapapeles? - Emacs Stack Exchange en ese búfer.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.