Code Monkey home page Code Monkey logo

sublack's Introduction

image

image

sublack

Black integration for SublimeText

Installation

  1. Install Black (if you haven't already):

    pip install black # Requires python 3.6
    or pip install blackd # for blackd support
  2. In PackageControl just find sublack, and that's it !

or

Without PackageControl install manually by navigating to Sublime's Packages folder and cloning this repository:

git clone https://github.com/jgirardet/sublack.git

Usage

  • Run Black on current file:

    Press Ctrl-Alt-B to format the entire file. You can also Ctrl-Shift-P (Mac: Cmd-Shift-P) and select Sublack: Format file.

  • Run Black with --diff:

    Press Ctrl-Alt-Shift-B will show diff in a new tab. You can also Ctrl-Shift-P (Mac: Cmd-Shift-P) and select Sublack: Diff file.

  • Toggle Black on save for current view :

    Press Ctrl-Shift-P (Mac: Cmd-Shift-P) and select Sublack: Toggle black on save for current view.

  • run Black Format All :

    Press Ctrl-Shift-P (Mac: Cmd-Shift-P) and select Sublack: Format All. Run black against each root folder in a standard way (without taking care of sublack options and configuration). Same thing as running black . being in the folder.

  • Start Blackd Server :

    Press Ctrl-Shift-P (Mac: Cmd-Shift-P) and select Sublack: Start BlackdServer.

  • Stop Blackd Server :

    Press Ctrl-Shift-P (Mac: Cmd-Shift-P) and select Sublack: Stop BlackdServer.

Blackd Mode

Sublack supports blackd. If option black_use_blackd is to true, Sublack will use blackd (and not black) according the 'host' and 'port' configuration.

You can run blackd from SublimeText manually via Start Blackd Server command or automatically at sublimetext start via setting black_blackd_autostart to true.

Blackd server started via SublimeText can be stopped manually via the Stop Blackd Server command or automatically at sublime's exit.

Unlike "standalone" blackd, using sublack with blackd will continue to take care of the pyproject file.

Using standard mode ou blackd mode in sublack should always have the same result...or it's a bug :-)

Blackd is faster than Black.

Diff is always run with black.

Pre-commit integration

You can choose tu run Black via pre-commit by setting black_use_precommit to true. Sublack settings will be ignored.

Settings

Sublack will always look for settings in the following order:
  • First in a pyproject.toml file
  • Second in project file : first with sublack prefix then in a subsetting (see Project settings).
  • Then in Users global settings
  • finally in sublack's default settings

Global settings

Preferences -> Package Settings -> sublack -> settings :

Black specifics options

  • black_line_length:

    Set custom line length option used by Black. Default = null which lets black default.

  • black_fast:

    Black fast mode. default is false.

  • black_skip_string_normalization:

    Don't normalize string quotes or prefixes. Default = false.

  • black_skip_numeric_underscore_normalization:

    Don't normalize underscores in numeric literals.

  • black_exclude:

    Regex matching excluded path. Default is Black's default.

  • black_include:

    Regex matching included path. Default is Black's default.

  • black_py36:

    Force use of python 3.6 only syntax. Default is Black-s default.

Sublack specifics options

  • black_command:

    Set custom location. Default = "black".

  • black_on_save:

    Black is always run before saving file. Default = false.

  • black_log:

    Show non error messages in console. Default = info.

  • black_default_encoding:

    Should not be changed. Only needed on some OSX platforms.

  • black_use_blackd:

    Use blackd instead of black. Default is false.

  • black_blackd_server_host:

    default = "localhost",

  • black_blackd_server_port:

    default = "45484"

  • black_blackd_autostart:

    Automaticaly run blackd in the background wen sublime starts. default is false.

  • black_use_precommit:

    run black via pre-commit hook.

Project settings

Just add sublack as prefix (recommended):

{
"settings":{
    "sublack.black_on_save": true
    }
}

A sublack subsettings is still possible:

{
"settings":{
    "sublack":{
        "black_on_save": true
        }
    }
}

pyproject.toml settings

Sublack support use of black configuration in pyproject.toml. Be aware that global/project settings will BE OVERRIDEN by pyproject.toml's settings. Sublack will look for this file in your project directory then in your root folder(s). See black about pyproject.toml .

Sublime Linter integration

You can install SublimeLinter-addon-black-for-flake. The plugin will auto configure flake8 and mute all warnings black can actually fix.

Issues

If there is something wrong with this plugin, add an issue on GitHub and I'll try to address it.

Thanks

This plugin is very inspired by the very good PyYapf Plugin. Thanks to Jason Kane.

Changelog

see install.txt

Contributing

  • remove sublack via Package Control.
  • fork sublack
  • clone your sublack fork to your Packages folder (Preferences --> Browse Packages...).
  • Package Control: Satisfy Dependencies (install requests)
  • install UnitTesting in Package Control
  • adding a test for new features or bugfix is really nice if you can.
  • add your name to Authors in readme.

Authors

Laboriously coded by Jimmy Girardet

contributions by:

sublack's People

Contributors

bambalaam avatar catch22 avatar jgirardet avatar jpetrucciani avatar kaste avatar nicokist avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.