settle 0.36.2

CLI tool for managing a digital Zettelkasten
# settle

`settle` is a CLI tool that helps you manage your digital Zettelkasten.

## Getting started

### Requirements

* cargo/rust toolchain
* SQLite

### Installation

There's a crate on crates.io, so you can simply run:

```
cargo install settle
```

### Usage

For the commands, options, configuration, and setting up autocompletion, read
[the manual](./doc/SETTLE_MANUAL.md)

If you prefer, there's also a groff document inside the `doc/` dirctory which
can be read with `man`. On the command line, of course.

### The note-taking system

`settle` just stores and manages a database of Zettel metadata. That's it.

There are two important things to remember when writing:

- wiki-style links are used to denote the actual links between Zettel. For
    example, a link such as `[[Neurons]]` would be considered as linking to a
    note called *precisely* 'Neurons'. These can appear anywhere in the file
- every word with a hashtag prefix is treated as a tag. For example,
    `#psychology`. Subtags (hierarchical tags), such as
    `#biology/anatomy/humans` are supported, if you want to stay more organised.

Besides, how do you actually do writing, if there are no explicit commands to
invoke an editor? You can use a plugin or your favourite editor. Or even make
one yourself! I think this was the right approach, considering integration. It'd
have been hard to try making `settle` work with vim or emacs and their many
quirks. Instead, a plugin for vim or emacs would certainly be able to use
it in amazing ways.

I wrote [settle.vim](https://github.com/xylous/settle.vim) since I'm a (neo)vim
user myself. If you write a wrapper around settle, contact me at
`xylous.e@gmail.com` and I'll make a list or something.

## Roadmap

- [x] generate database from existing files
- [x] create Zettel
- [x] list Zettel
- [x] tags
    - [x] recognize hashtag-tags (e.g. `#interesting-tag`)
    - [x] search for tags
    - [x] list all tags
- [x] configuration
    - [x] custom Zettelkasten directory
    - [x] custom database file path
    - [x] be able to use templates
- [x] list mentioned but non-existent Zettel
- [x] ~~use an inbox~~
- [x] search for text inside notes
- [x] support matching titles with wildcards
- [x] update Zettel metadata individually
- [x] print links
    - [x] forward links (from a Zettel to other Zettel)
    - [x] backlinks (to a Zettel from other Zettel)
- [x] projects (subdirectories within the main Zettelkasten folder)
    - [x] add notes to projects
    - [x] generate the database with projects included
    - [x] start with an 'inbox' project by default

##### Meta

- [x] configure `Cargo.toml` properties
- [x] shell autocompletion
    - [x] zsh
    - [x] bash
    - [x] fish
- [x] write a proper `man` page
- [ ] logo (pixel art?)
- [x] publish to crates.io

## Contributing

Pull requests are welcome. For major changes, please open an issue first to
discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

[MIT](LICENSE)