Emacs-based static HTML pastebin
Bump version to 0.7.0.
Add license to the repo.
Add support for scpaste-async.



You can also use your local clone with git send-email.


This will place an HTML copy of a buffer on the web on a server to which the user has SSH access.

It's similar in purpose to services such as Gist or dpaste, but it's much simpler since it assumes the user has an account on a publicly-accessible HTTP server. It uses scp as its transport and uses Emacs' font-lock as its syntax highlighter instead of relying on a third-party syntax highlighter for which individual language support must be added one-by-one.

Uses the htmlize library if present; falls back to the built-in htmlfontify otherwise.


You'll need to configure your destination:

(setq scpaste-http-destination "https://p.hagelb.org"
      scpaste-scp-destination "p.hagelb.org:p.hagelb.org")

scpaste-scp-destination should be an scp-accessible directory that is also served over HTTP. scpaste-http-destination should be the URL that corresponds to that directory.

Optionally you can set the displayed name and where it should link to:

(setq scpaste-user-name "Technomancy"
      scpaste-user-address "https://technomancy.us/")

You must set up SSH keys for your destination with ssh-agent to avoid having to enter your password once for each paste. Also be sure the key of the host referenced in scpaste-scp-destination is in your known hosts file--scpaste will not prompt you to add it but will simply hang.

You can set scpaste-async to upload asynchronously. When this is set, the URL will be put on the kill ring before the upload completes, so there is a chance it will fail, but an error buffer will be displayed in this case. This defaults to true when EXWM is active.


M-x scpaste, (or scpaste-region) enter a name, and press return. The name will be incorporated into the URL by escaping it and adding it to the end of scpaste-http-destination. The URL for the pasted file will be pushed onto the kill ring.

Two files will be uploaded: the HTML version as well as the raw version. The HTML version simply has ".html" on the end of the name, and it includes a link to the raw version at the bottom.

You can autogenerate a splash page that gets uploaded as index.html in scpaste-http-destination by invoking M-x scpaste-index. This will upload an explanation as well as a listing of existing pastes. If a paste's filename includes "private" it will be skipped.

Copyright © 2008-2023 Phil Hagelberg and contributors. Distributed under the same terms as GNU Emacs; see the file LICENSE.