Emacs function to copy buffer locations as GitHub/Slack/JIRA/HipChat/... formatted code
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
README.md Doc fixes Dec 16, 2017
copy-as-format.el Doc fixes Dec 16, 2017
demo.gif

README.md

copy-as-format

MELPA

Emacs function to copy buffer locations as GitHub/Slack/JIRA/HipChat/... formatted code

copy-as-format demo

Supported Formats/Services

  • AsciiDoc
  • Bitbucket
  • Disqus
  • GitHub
  • GitLab
  • HipChat
  • HTML
  • JIRA
  • Markdown
  • MediaWiki
  • Org-mode
  • POD
  • reStructuredText
  • Slack

Usage

M-x copy-as-format or C-u M-x copy-as-format

Copy the current line or active region and add it to the kill ring as GitHub/Slack/JIRA/HipChat/... formatted code. Format defaults to copy-as-format-default. The buffer will not be modified.

With a prefix argument prompt for the format.

M-x copy-as-format-SERVICE

Where SERVICE is one of the supported services.

It's a good idea to bind these functions to a key sequence:

(global-set-key (kbd "C-c w s") 'copy-as-format-slack)
(global-set-key (kbd "C-c w g") 'copy-as-format-github)

For AsciiDoc customization see copy-as-format-asciidoc-include-file-name and copy-as-format-asciidoc-language-alist.

Adding Formats

Create a format function with a signature of TEXT MULTILINE:

  • TEXT - the text to be formatted
  • MULTILINE - t if TEXT spans multiple lines, otherwise nil

For example:

(defun some-great-format (text multiline)
  (if multiline
      (multiline-format text)
    (single-line-format text)))

Then, add an entry to copy-as-format-format-alist. The key is the format's name and the value is the format function:

(add-to-list 'copy-as-format-format-alist '("great-format" some-great-format))

See Also