axleharp

Crates.ioaxleharp
lib.rsaxleharp
version3.1.0
created_at2024-04-22 08:50:10.785555+00
updated_at2025-12-06 11:15:53.682023+00
descriptionFile location storer, designed to be used from within text editors.
homepagehttps://github.com/Axlefublr/harp
repositoryhttps://github.com/Axlefublr/harp
max_upload_size
id1216063
size30,359
Axlefublr (Axlefublr)

documentation

README

Harp

The idea behind this program is explained in this blog post.

Harp exists to be a convenient and unified interface for getting and setting data.
The model is a map of maps of arrays (HashMap<String, HashMap<String, Vec<String>>>).
The keys in the lower lever map are called “registers” — they are meant to be user input in some way; either they enter it in a prompt, or each key is a representation of a keyboard key the user presses.
Registers are what actually holds the data that you want to store.
The keys in the top level map are called “sections” — they help you keep each usecase separate, so that the registers do not collide.

You can interact with a harp (i.e. register + the data it holds) with two actions: get and set (replace).
Get gives you the stored strings, that you can use in whatever way. For example, you might store a filepath; so getting a harp takes that filepath, and opens it in your editor.
Set is the opposite: you replace the data currently stored with some other data. For example, you can use set in your editor to make a harp for the currently edited file. To the get and reopen later down the line.

Once again, the blog post goes into more depth on how powerful this idea can be.

Harp the program (this repository) provides you two ways of interacting with it.
Either as a cli program, or as the rust library (the docs on which are here).

My helix fork uses the harp rust library to implement the harp idea, check it out if you're interested.

Contributing

I'm open to contributions, however I don't want to waste your energy — ask me in an issue about your idea, before spend your precious time working on it, only to realize that it's not going to be accepted (potentially).

Installation

cargo install axleharp

cargo-binstall and cargo-quickinstall are also supported.

Despite the package being called axleharp, the binary executable you will be calling is just harp.

Uninstallation

cargo uninstall axleharp
rm -fr ~/.local/share/harp # this is the data directory path on linux

For windows, the data directory path will look something like: C:\Users\username\AppData\Local\harp

For mac: /Users/username/Library/Application Support/harp

Commit count: 29

cargo fmt