languagetool-code-comments
integrates the LanguageTool API to parse, spell check, and correct the grammar of your code comments!
Overview
Never will you submit a PR where you fat-fingered // This is a hck
in your code again. LTCC can be integrated directly in your editor, or used in a linting fashion in your CI pipelines. Caching is built in to speed up processing new and edited docs.
Using the power of Tree Sitter, LTCC easily integrates with several programming languages. And if privacy is a concern, and you have some spare hardware lying around, LanguageTool offers a great way to self-host your own instance.
languagetool-code-comments v0.4.0
Integrates the LanguageTool API to parse, spell check, and correct the grammar of your code
comments!
USAGE:
languagetool-code-comments <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
cache Functionality around the LanguageTools result cache.
check Parses source code comments from the provided file and passes them to
LanguageTool, returning grammar and spelling mistakes if any.
completion Generates shell completions
help Print this message or the help of the given subcommand(s)
SUPPORTED LANGUAGES:
- astro
- bash
- css
- dockerfile
- go
- hcl
- html
- javascript
- jsx
- lua
- make
- nix
- python
- rust
- sql
- toml
- tsx
- typescript
- yaml
Install
MacOS
brew install dustinblackman/tap/languagetool-code-comments
Debian / Ubuntu
curl -s https://dustinblackman.github.io/apt/deb/KEY.gpg | apt-key add -
curl -s https://dustinblackman.github.io/apt/deb/dustinblackman.list > /etc/apt/sources.list.d/dustinblackman.list
sudo apt-get update
sudo apt-get install languagetool-code-comments
Fedora / CentOS
yum-config-manager --add-repo https://dustinblackman.github.io/yum/config.repo
yum install languagetool-code-comments
Nix
nix-env -f '<nixpkgs>' -iA nur.repos.dustinblackman.languagetool-code-comments
Arch Linux
yay -S languagetool-code-comments-bin
Windows
Chocolatey
choco install languagetool-code-comments --version=0.4.0
Scoop
scoop bucket add dustinblackman https://github.com/dustinblackman/scoop-bucket.git
scoop install languagetool-code-comments
Manual
Download the pre-compiled binaries and packages from the releases page and copy to the desired location.
Source
git clone https://github.com/dustinblackman/languagetool-code-comments.git
cd languagetool-code-comments
git submodule update --init --recursive
cargo install --path .
Usage
CLI
languagetool-code-comments check -l en-US --file /home/me/my-test-file.rs
Neovim
See ./tools/null-ls-config.lua
The above uses null-ls
, and is based off the soon-to-be ltrs
configuration. Once I feel languagetool-code-comments
responses have stabilized, I'll attempt PRing the configs to null-rs
itself.
Visual Studio Code
Coming Soon! Follow #1 for updates.
Development
Setup
git clone https://github.com/dustinblackman/languagetool-code-comments.git
cd languagetool-code-comments
git submodule update --init --recursive
cargo check
Adding a new language
Let's take the following steps to add Perl to languagetool-code-comments
, as example which will take you from selecting the Tree Sitter config, to integrating the language in the repo, writing tests, and QAing. If you'd like to check out a complete example, see add Nix.
- Follow the setup for the project.
- Head over to the Tree Sitter Parsers docs and select the Perl parser.
- Add the repo as a submodule with
git submodule add https://github.com/ganezdragon/tree-sitter-perl ./external/tree-sitter-perl
- Update
build.rs
by adding a configuration for Perl in thelangs
vec. Perl includes both aparser.c
andscanner.cc
, so the configuration would look like the following.
build_treesitter_grammar(
"tree-sitter-perl",
"tree-sitter-perl/src",
vec!["parser.c", "scanner.cc"],
),
- Run
cargo build
to verify the configuration is set up correctly. - Update
parse.rs
by addingfn tree_sitter_perl() - Language;
toextern "C"
,Perl
to theLanguages
enum, a case statement inget_language_config()
, and an extension parser inget_language_from_filepath()
. - Create a Perl file fixture in
./tests/fixtures
, following the examples of the other languages. - Update
parse_test.rs
with a test for Perl, following the examples of the other languages. - Run
cargo test
to prove your tests work. - Run
cargo build
and test the CLI works as expected with Perl.