docs: update readme

This commit is contained in:
iff 2024-09-24 18:47:31 +02:00
parent adfedfad3d
commit 19737de708

View file

@ -35,7 +35,7 @@ You can now **press `F` to Pay Respects**!
Currently, only corrections to `bash`, `zsh`, and `fish` are working flawlessly.
`nushell` is currently usable, but there is no alias expansion and you will have to put the evaluated initialization command in your config file (added automatically with `pay-respects nushell`). In addition, commands that need to be evaluated in the current working shell (such as `cd`) cannot yet be implemented in `nushell`.
`nushell` is currently usable, but there is no alias expansion, and you will have to put the evaluated initialization command in your config file (added automatically with `pay-respects nushell`). In addition, commands that need to be evaluated in the current working shell (such as `cd`) cannot yet be implemented in `nushell`.
## Installing
@ -45,13 +45,29 @@ paru -S pay-respects # compile from source
paru -S pay-respects-bin # binary version
```
Or if you have cargo installed, you can install it from [crates.io](https://crates.io/):
```
Or if you have cargo installed:
```shell
# install from crates.io
cargo install pay-respects
# clone from git and install, suitable for adding custom rules
git clone --depth 1 https://github.com/iffse/pay-respects
cd pay-respects
cargo install --path .
```
Alternatively, you can download Linux binary from [releases](https://github.com/iffse/pay-respects/releases).
## Compiling
Using cargo, the process is straight forward:
```shell
git clone --depth 1 https://github.com/iffse/pay-respects
cd pay-respects
cargo build --release
```
## Rule Files
Rule files are parsed at compilation. Everything in rule files is converted to Rust code before compiling. You don't have to know the project structure nor Rust to write the rules!
@ -93,14 +109,14 @@ The placeholder is evaluated as following:
- `{{command}}`: All the command without any modification
- `{{command[1]}}`: The first argument of the command (the command itself has index of 0)
- `{{command[2:5]}}`: The second to fifth arguments. If any of the side is not specified, them it defaults to the start (if it is left) or the end (if it is right).
- `{{command[2:5]}}`: The second to fifth arguments. If any of the side is not specified, then it defaults to the start (if it is left) or the end (if it is right).
- `{{typo[2](fix1, fix2)}}`: This will try to change the second argument to candidates in the parenthesis. The argument in parentheses must have at least 2 values. Single arguments are reserved for specific matches, for instance, `path` to search all commands found in the `$PATH` environment, or the `{{shell}}` placeholder, among others.
- `{{opt::<Regular Expression>}}`: Optional patterns that are found in the command with RegEx (see RegEx crate for syntax). Note that all patterns matching this placeholder will not take a place when indexing.
- `{{opt::<Regular Expression>}}`: Optional patterns found in the command with RegEx (see RegEx crate for syntax). Note that all patterns matching this placeholder will not take place when indexing.
- `{{cmd::<Regular Expression>}}`: Get the matching pattern from the last command. Unlike `{{opt}}`, this won't remove the string after matching
- `{{err::<Regular Expression}}`: Get the matching patterns from the error message.
- `{{shell(<shell commands>)}}`: Replace with the output of the shell command. This placeholder can be used along `{{typo}}` as its only argument, where each newline will be evaluated to a candidate.
The suggestion can have additional conditions to check. To specify the conditions, add a `#[...]` at the first line (just like derive macros in Rust). Available conditions:
Suggestions can have additional conditions to check. To specify conditions, add a `#[...]` at the first line (just like derive macros in Rust). Available conditions:
- `executable`: Check whether the argument can be found by `which`
- `cmd_contains`: Check whether the last user input contains the argument