Skip to content

๐Ÿ“‹ Rich text clipboard for org-mode: Paste as a #+BEGIN_SRC block of correct mode, with link to where it came from

Notifications You must be signed in to change notification settings

unhammer/org-rich-yank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

29 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

org-rich-yank

https://melpa.org/packages/org-rich-yank-badge.svg

Do you often yank source code into your org files, manually surrounding it in #+BEGIN_SRC blocks? This package will give you a new way of pasting that automatically surrounds the snippet in blocks, marked with the major mode of where the code came from, and adds a link to the source file after the block.

org-rich-yank.gif

Installation

MELPA

If you use MELPA, you can just do M-x list-packages, find org-rich-yank in the list and hit i x.

Manual

Just put org-rich-yank.el somewhere in load-path.

Usage

Manual, loading on startup:

To use, require and bind whatever keys you prefer to the interactive function:

(require 'org-rich-yank)
(define-key org-mode-map (kbd "C-M-y") #'org-rich-yank)

With use-package, enabled after org:

If you prefer use-package, the above settings would be:

(use-package org-rich-yank
  :ensure t
  :demand t
  :bind (:map org-mode-map
              ("C-M-y" . org-rich-yank)))

The :demand t in there is because we never know when the user will hit C-M-y, so we always have to store the current buffer on kills. You can remove the :demand t and have lazy/deferred loading, but then the first time you hit C-M-y after startup, youโ€™ll get a message that you have to kill the selection again.

Configuration

Image support

If you have org-download installed and you copy image contents, org-rich-yank will defer to org-download-clipboard. You can turn this feature off by setting org-rich-yank-download-image to nil.

Changing the link/block format

If you want to change how the source block or link is formatted, you can do so by setting org-rich-yank-format-paste to a function. For example, links to local files might be useful in your org document but not so useful in exported content, so you may want to make such a link a comment line.

(defun my-org-rich-yank-format-paste (language contents link)
  "Based on `org-rich-yank--format-paste-default'."
  (format "#+BEGIN_SRC %s\n%s\n#+END_SRC\n#+comment: %s"
          language
          (org-rich-yank--trim-nl contents)
          link))
(customize-set-variable 'org-rich-yank-format-paste #'my-org-rich-yank-format-paste)

Configuring the variable as above results in the following content being pasted:

#+BEGIN_SRC emacs-lisp
;; URL: https://github.com/unhammer/org-rich-yank
;; Package-Requires: ((emacs "24.4"))
;; Keywords: convenience, hypermedia, org
#+END_SRC
#+comment: [[file:~/src/org-rich-yank/org-rich-yank.el]]

About

๐Ÿ“‹ Rich text clipboard for org-mode: Paste as a #+BEGIN_SRC block of correct mode, with link to where it came from

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published