Skip to content

rktjmp/paperplanes.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

paperplanes.nvim

paperplanes Logo

Post selections or buffers to online paste bins. Save the URL to a register, or dont.

Requirements

  • Neovim 0.5+
  • A curl executable in your $PATH

Install

Use your package manager.

Configuration & Use

Setup

-- options shown with default values
require("paperplanes").setup({
  register = "+",
  provider = "0x0.st",
  provider_options = {},
  notifier = vim.notify or print,
})
  • register - any valid register name or false
  • provider - See provider list.
  • provider_options - passed to selected provider, see list of providers below for accepted options
  • notifier - any function that accepts a string, should show that string in some way.

Commands

Post selection or buffer to configured provider, sets configured register and print's the result.

  • :PP -> Post current buffer.

  • :[range]PP -> Post range.

    • Vim does not support column aware ranges when using commands. Use post_selection via a map for that behaviour.

Functions

See :h paperplanes for more complete documentation.

Functions are provided in snake_case and kebab-case (post_string and post-string).

All functions accept a callback argument which is called with url, nil or nil, errors.

provider-name and provider-options are optional and the default provider will be used if not given.

Functions to not automatically print the url or set any registers.

  • post_string(content, metadata, callback, provider-name, provider-options)
  • post_range(buffer, start_pos, end_pos, callback, provider-name, provider-options)
  • post_selection(callback, provider-name, provider-options)
  • post_buffer(buffer, callback, provider-name, provider-options)

Providers

paperplanes supports the following providers, see sites for TOS and features.

  • https://0x0.st (provider = "0x0.st")
  • https://paste.rs (provider = "paste.rs")
  • https://paste.sr.ht (provider = "sr.ht")
    • command: "curl" (default) or "hut".
    • token: PAT token string, or function returning token string, required if command = "curl" | nil.
  • https://gist.github.com (provider = "gist")
    • command: "curl" (default) or "gh".
    • token: PAT token string or function returning token string, required if command = "curl" | nil.
  • https://dpaste.org (provider = "dpaste.org")
  • https://ray.so (provider = "ray.so")
  • https://mystb.in (provider = "mystb.in")
  • http://ix.io (provider = "ix.io")
    • Endpoint is HTTP only, requires insecure = true explicit opt in.
  • http://sprunge.us (provider = "sprunge.us")
    • Endpoint is HTTP only, requires insecure = true explicit opt in.

To create a new provider, see :h paperplanes and fnl/paperplanes/providers/*.fnl.

paperplanes is not affiliated with any provider in any manner.

Building

Building paperplanes requires hotpot.nvim v0.9.7+.

The relevant lua| files should be build when saving any file inside fnl/.

Changelog

See CHANGELOG.md.