Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thep0y/python-black
Black formatter for Sublime Text
https://github.com/thep0y/python-black
black formatter formatting python sublime-text
Last synced: 8 days ago
JSON representation
Black formatter for Sublime Text
- Host: GitHub
- URL: https://github.com/thep0y/python-black
- Owner: thep0y
- License: mit
- Created: 2021-06-02T04:06:30.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-02T06:46:24.000Z (11 months ago)
- Last Synced: 2024-10-15T03:46:04.025Z (21 days ago)
- Topics: black, formatter, formatting, python, sublime-text
- Language: Python
- Homepage:
- Size: 3.77 MB
- Stars: 40
- Watchers: 2
- Forks: 6
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README
python-black
[Black](https://github.com/psf/black) formatter for Sublime Text.
It is recommended to use it with [LSP-pyright](https://github.com/sublimelsp/LSP-pyright).
### Installation
> There is **no need** to install `black`. However, if you choose to install it, it will not affect this package..
You can install `python-black` with Package Control:
1. Open your command pallete and type `Package Control: Install Package`.
2. Find this project `python-black` and press `Enter`.#### ~~Local installation~~
~~This package has been uploaded to packagecontrol.io, so you do not need to choose local installation:~~
```shell
git clone https://github.com/thep0y/python-black.git
```~~Copy or move the `python-black` folder to the `Packages` directory of **Sublime Text 4**.~~
### Usage
#### 1 Key Binding
You can create custom key binding based on sample`Preferences - Package Settings - Python Black - Key Bindings`, such as:
```json
{
"keys": ["ctrl+super+l"],
"command": "black",
"args": {
"use_selection": true
}
}
```The optional `use_selection` boolean (defaults to `true`) controls whether to format the selected region or the entire file.
> :warning:Note: Do not **duplicate** the key binding of other packages.
#### 2 Settings
There are some modifiable properties in settings:
```js
{
// Whether to automatically format the entire document when saving.
// There are three modes:
// - "on"
// - "off"
// - "smart": Automatic formatting is only enabled if there is a `black` section in the project's `pyproject.toml`
"format_on_save": "on",
// Black [OPTIONS]
// The priority of loading options for Black is:
// Sublime project settings > Configuration file > Sublime package user settings > Sublime package default settings
"options": {
// Python versions that should be supported by Black's output.
"target_version": [],
// How many characters per line to allow.
"line_length": 88,
// Format all input files like typing stubs regardless of file extension (useful when piping source on standard input).
"is_pyi": false,
// Skip the first line of the source code.
"skip_source_first_line": false,
// Don't normalize string quotes or prefixes.
"skip_string_normalization": false,
// Don't use trailing commas as a reason to split lines.
"skip_magic_trailing_comma": false
}
}```
The `format_on_save` can also be toggled via `Preferences > Package Settings > Python Black > Format On Save`.
The Black options can also be configured in sublime-project:
```js
{
"settings": {
// ...
"python-black": {
"options": {
"line_length": 127,
"skip_string_normalization": true
}
}
}
}
```#### 3 Create Black Configuration File
You can quickly generate a black configuration file for the current project.
| Command | Description |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `python-black: Create Black Configuration File` | Creates a `pyproject.toml` file in the root of the project with basic options. Opens the configuration file if it already exists. |> :warning: If you don't want to generate a `pyproject.toml` for _**each project**_, you need to create a **global configuration file** for Black.
>
> Refer to [Black Documentation](https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#where-black-looks-for-the-file).> If you want to disable `format_on_save` in a project that does not use `black` code style [#14](https://github.com/thep0y/python-black/issues/14), you need to add the configuration to `*.sublime-project`:
>
> ```js
> {
> ...
> "settings": {
> ...
> "python-black": {
> "format_on_save": "off"
> }
> }
> }
> ```### Development
If you want to fix bugs or add features, you can read the logs:
- Colorful: in `python-black.log` in the `[SublimeText]/Log` directory.
- Colorless: in the Sublime Text console.
You can also add logs where you think they should be logged as follows:
```python
from .log import child_loggerlogger = child_logger(__name__)
# ...
logger.debug("...")
logger.info("...")
logger.warning("...")
logger.error("...")
# ...
```Discussion and creation of PRs are welcome.
### TODO
- [ ] format all python files in the current project