Orgmode wstaw link ze schowka?

9

Czy istnieje prosty sposób na wstawienie łącza w trybie organizacji bezpośrednio ze schowka systemowego? Zastanawiam się nad wyborem adresu URL w przeglądarce Safari i wstawieniem tego linku bezpośrednio w dokumencie w trybie organizacji.

Alain
źródło
1
Ponadto naprawdę fajnie jest skonfigurować bookmarklet, aby automatycznie wstawiał link za pomocą przechwytywania. Zobacz tutaj: orgmode.org/worg/org-contrib/org-protocol.html
mbork

Odpowiedzi:

12

Twoje pytanie nie jest bardzo szczegółowe w odniesieniu do tego, jaki typ linku chcesz i co uważasz za „proste”. Zakładając, że masz na myśli link o następującej formie:

[[target][description]]

domyślny przepływ pracy (po umieszczeniu adresu URL w schowku) to:

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

Wprowadzenie a descriptionjest opcjonalne; jeśli nie określisz, link będzie miał formę

[[target]]
itsjeyd
źródło
Wystarczająco proste. Działa zgodnie z oczekiwaniami na komputerze z systemem Windows, ale z jakiegoś powodu nie można skopiować / wkleić adresu URL z przeglądarki Firefox lub Safari do Emacsa na MacOS z Emacsem 25.0.50
Alain
@Alain Nie jestem na MacOS, więc nie mogę go przetestować, ale możesz spróbować użyć x-clipboard-yankzamiast yankwkleić zawartość schowka. To polecenie nie jest domyślnie powiązane z kluczem, więc będziesz musiał go wywołać za pomocą M-x. Jeśli to rozwiąże problem, możesz oczywiście ustawić dla niego wygodne przypisanie klawiszy (via (global-set-key (kbd "C-c y") 'x-clipboard-yank)).
itsjeyd
3

W zależności od tego, które z nich preferujesz, oto dwie funkcje, które sprawdzają, czy w schowku jest adres URL, a jeśli tak, wstaw go w miejscu jako org-modelink. Pierwszy robi to w formie [[url]], a drugi w formie [[url][description]]i pozostawia cię w descriptionpolu.

(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
źródło
3

Stworzyłem pakiet emacs, który może ci pomóc w wstawianiu linków w trybie org ze schowka:

To sprawia, że żądania HTTP do adresu URL ze schowka i jeżeli odpowiedź zawiera HTML próbuje wyodrębnić tytuł i wstawia odnośnik org-mode w tym formacie: [[URL][extracted-title]].


Na przykład po skopiowaniu linku do tego pytania , wykonanie M-x org-cliplinkw buforze trybu org wstawi:

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

a link będzie wyglądał na hiperłącze jako tryb organizacji - Orgmode wstawić link ze schowka? - Emacs Stack Exchange w tym buforze.

rexim
źródło