2.9 KiB
Contribution tools
The Carbon language project has a number of tools used to assist in preparing contributions.
Table of contents
pre-commit
We use pre-commit to run various checks. This will automatically run important checks, including formatting.
To set up pre-commit:
- Follow the installation instructions.
- Enable per-repo:
pre-commit install- We already have
pre-commitconfigured for Carbon repos -- do not go through theQuick startinstructions.
- We already have
- pre-commit may be run either automatically with
git commitor manually withpre-commit run.- When files are modified, including by pre-commit failures,
git addwill need to be run to include the modifications in the commit, and the commit re-started.
- When files are modified, including by pre-commit failures,
When modifying or adding pre-commit hooks, please run
pre-commit run --all-files to see what changes.
black
pre-commit enabled: If you're using pre-commit, it will run this. Installing and running manually is optional, but may be helpful.
We use Black to format Python code. Although Prettier is used for most languages, it doesn't support Python.
codespell
pre-commit enabled: If you're using pre-commit, it will run this. Installing and running manually is optional, but may be helpful.
We use codespell to spellcheck common errors. This won't catch every error; we're trying to balance true and false positives.
markdown-toc
pre-commit enabled: If you're using pre-commit, it will run this. Installing and running manually is optional, but may be helpful.
We use markdown-toc to provide GitHub-compatible tables of contents for some documents.
If run manually, specify --bullets=- to use Prettier-compatible bullets, or
always run Prettier after markdown-toc.
Prettier
pre-commit enabled: If you're using pre-commit, it will run this. Installing and running manually is optional, but may be helpful.
We use Prettier for formatting. There is an rc file for configuration.
vim-prettier
If you use vim-prettier, it may help
to add to your .vimrc:
let g:prettier#config#print_width = '80'
let g:prettier#config#tab_width = '2'
let g:prettier#config#use_tabs = 'false'
let g:prettier#config#prose_wrap = 'always'