rusty-man/README.md
Robin Krahl e222a1f443
Add TUI viewer using cursive
This patch adds a new viewer, tui, that provides an interactive
interface using cursive.  This viewer makes it possible to follow links
to other documentation items and to open external links in a web
browser.
2020-10-06 19:19:13 +02:00

129 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!---
SPDX-FileCopyrightText: 2020 Robin Krahl <robin.krahl@ireas.org>
SPDX-License-Identifier: MIT
-->
# rusty-man
```
$ rusty-man rusty-man | head -5
rusty-man Module rusty-man rusty-man
DESCRIPTION
rusty-man is a command-line viewer for documentation generated by
`rustdoc`.
```
## Example Usage
Before running rusty-man, make sure that you generated the documentation with
`cargo doc`:
```
$ cd rusty-man && cargo doc
```
Then you can open the documentation for an item:
```
$ rusty-man kuchiki::NodeRef
```
You dont have to specificy the full item name:
```
$ rusty-man NodeRef
```
If the documentation is not placed in `./target/doc` or the Rust installation
directory, you have to manually set the source path using the `-s`/`--source`
option:
```
$ rusty-man --source my/other/crate/target/doc io::Error
```
If there are multiple matches for the keyword, rusty-man will show you a list
of all matching items:
```
$ rusty-man --source my/other/crate/target/doc u8
Found mulitple matches for u8 select one of:
[ 0 ] core::u8: The 8-bit unsigned integer type.
[ 1 ] std::u8: The 8-bit unsigned integer type.
> 1
```
For more usage information, run `rusty-man --help`.
## Viewers
rusty-man has three viewers (select one with the `--viewer` option) that
determine the output format:
- `plain` prints the documentation to the standard output without formatting.
This is the default for non-interactive use.
- `rich` prints the documentation to the standard output with formatting and
optional syntax highlighting. This is the default for interactive use.
- `tui` is an interactive terminal interface. You can read the documentation
and follow links.
## Installation
To install rusty-man from source, clone this repository and use cargo to build
the project, or use `cargo install`. See the [`INSTALL.md`][] file for more
information. rusty-man is also available as a package for these distributions:
- Arch Linux: [`rusty-man`][pkg-aur] in the Arch User Repository
rusty-man is developed for Unix-like systems. It should run on other platforms
too, but with some limitations: The `rich` viewer uses ANSI escape codes,
which are not supported on older Windows versions. The `tui` viewer requires
the ncurses library. If you have trouble running rusty-man on your platform or
if you want to help porting rusty-man to other platforms, please let me know.
## Integrations
### vim
You can set rusty-man as the keyword program with `set keywordprg=rusty-man`
and then use `K` to open the documentation for the item under the cursor. If
you want to apply this setting for all Rust files, add it to the
`ftplugin/rust.vim` file in your vim runtime directory (e. g. `~/.vim`).
## Contributing
Contributions to this project are very welcome! You can contribute by writing
code or documentation or by testing. See the [`CONTRIBUTING.md`][] file for
more information.
If you are looking for a good starting point, have a look at the [issues with
the label “good first issue”][issues] in rusty-mans issue tracker.
## Minimum Supported Rust Version
This crate supports Rust 1.40 or later.
## Contact
For bug reports, patches, feature requests or other messages, please send a
mail to the mailing list [~ireas/rusty-man-dev@lists.sr.ht][] ([public
archive][]) or [contact me directly][]. You can also use the rusty-man [issue
tracker][] for bug reports or features requests.
## License
This project is licensed under the [MIT License][]. For license information
for the data used by the test suite, see the [`.reuse/dep5`][] file.
`rusty-man` complies with [version 3.0 of the REUSE specification][reuse].
[`crossterm`]: https://lib.rs/crossterm
[`INSTALL.md`]: https://git.sr.ht/~ireas/rusty-man/tree/refs/heads/master/INSTALL.md
[`CONTRIBUTING.md`]: https://git.sr.ht/~ireas/rusty-man/tree/refs/heads/master/CONTRIBUTING.md
[issues]: https://todo.sr.ht/~ireas/rusty-man?search=label:%22good%20first%20issue%22%20status%3Aopen
[~ireas/rusty-man-dev@lists.sr.ht]: mailto:~ireas/rusty-man-dev@lists.sr.ht
[contact me directly]: mailto:robin.krahl@ireas.org
[public archive]: https://lists.sr.ht/~ireas/rusty-man-dev
[issue tracker]: https://todo.sr.ht/~ireas/rusty-man
[MIT license]: https://opensource.org/licenses/MIT
[`.reuse/dep5`]: https://git.sr.ht/~ireas/rusty-man/tree/refs/heads/master/.reuse/dep5
[reuse]: https://reuse.software/practices/3.0/
[pkg-aur]: https://aur.archlinux.org/packages/rusty-man/