X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/06ccb88bf2bd35a4dc5d591bb296b5b299d07323..6463fb874f6fd93d9a3b857e24987d5fa6ae0d57:/docs/integrations/editors.md?ds=sidebyside diff --git a/docs/integrations/editors.md b/docs/integrations/editors.md index 88176e1..02baa29 100644 --- a/docs/integrations/editors.md +++ b/docs/integrations/editors.md @@ -78,36 +78,51 @@ Options include the following: ## Wing IDE -Wing supports black via the OS Commands tool, as explained in the Wing documentation on -[pep8 formatting](https://wingware.com/doc/edit/pep8). The detailed procedure is: +Wing IDE supports `black` via **Preference Settings** for system wide settings and +**Project Properties** for per-project or workspace specific settings, as explained in +the Wing documentation on +[Auto-Reformatting](https://wingware.com/doc/edit/auto-reformatting). The detailed +procedure is: -1. Install `black`. +### Prerequistes - ```console - $ pip install black - ``` +- Wing IDE version 8.0+ -1. Make sure it runs from the command line, e.g. +- Install `black`. - ```console - $ black --help - ``` + ```console + $ pip install black + ``` + +- Make sure it runs from the command line, e.g. + + ```console + $ black --help + ``` + +### Preference Settings -1. In Wing IDE, activate the **OS Commands** panel and define the command **black** to - execute black on the currently selected file: +If you want Wing IDE to always reformat with `black` for every project, follow these +steps: - - Use the Tools -> OS Commands menu selection - - click on **+** in **OS Commands** -> New: Command line.. - - Title: black - - Command Line: black %s - - I/O Encoding: Use Default - - Key Binding: F1 - - [x] Raise OS Commands when executed - - [x] Auto-save files before execution - - [x] Line mode +1. In menubar navigate to `Edit -> Preferences -> Editor -> Reformatting`. -1. Select a file in the editor and press **F1** , or whatever key binding you selected - in step 3, to reformat the file. +1. Set **Auto-Reformat** from `disable` (default) to `Line after edit` or + `Whole files before save`. + +1. Set **Reformatter** from `PEP8` (default) to `Black`. + +### Project Properties + +If you want to just reformat for a specific project and not intervene with Wing IDE +global setting, follow these steps: + +1. In menubar navigate to `Project -> Project Properties -> Options`. + +1. Set **Auto-Reformat** from `Use Preferences setting` (default) to `Line after edit` + or `Whole files before save`. + +1. Set **Reformatter** from `Use Preferences setting` (default) to `Black`. ## Vim @@ -116,6 +131,8 @@ Wing supports black via the OS Commands tool, as explained in the Wing documenta Commands and shortcuts: - `:Black` to format the entire file (ranges not supported); + - you can optionally pass `target_version=` with the same values as in the + command line. - `:BlackUpgrade` to upgrade _Black_ inside the virtualenv; - `:BlackVersion` to get the current version of _Black_ inside the virtualenv. @@ -146,12 +163,15 @@ $ cd ~/.vim/bundle/black $ git checkout origin/stable -b stable ``` -or you can copy the plugin from -[plugin/black.vim](https://github.com/psf/black/blob/stable/plugin/black.vim). +or you can copy the plugin files from +[plugin/black.vim](https://github.com/psf/black/blob/stable/plugin/black.vim) and +[autoload/black.vim](https://github.com/psf/black/blob/stable/autoload/black.vim). ``` mkdir -p ~/.vim/pack/python/start/black/plugin +mkdir -p ~/.vim/pack/python/start/black/autoload curl https://raw.githubusercontent.com/psf/black/stable/plugin/black.vim -o ~/.vim/pack/python/start/black/plugin/black.vim +curl https://raw.githubusercontent.com/psf/black/stable/autoload/black.vim -o ~/.vim/pack/python/start/black/autoload/black.vim ``` Let me know if this requires any changes to work with Vim 8's builtin `packadd`, or @@ -169,10 +189,13 @@ If you need to do anything special to make your virtualenv work and install _Bla example you want to run a version from main), create a virtualenv manually and point `g:black_virtualenv` to it. The plugin will use it. -To run _Black_ on save, add the following line to `.vimrc` or `init.vim`: +To run _Black_ on save, add the following lines to `.vimrc` or `init.vim`: ``` -autocmd BufWritePre *.py execute ':Black' +augroup black_on_save + autocmd! + autocmd BufWritePre *.py Black +augroup end ``` To run _Black_ on a key press (e.g. F9 below), add this: @@ -199,30 +222,28 @@ Traceback (most recent call last): ImportError: /home/gui/.vim/black/lib/python3.7/site-packages/typed_ast/_ast3.cpython-37m-x86_64-linux-gnu.so: undefined symbool: PyExc_KeyboardInterrupt ``` -Then you need to install `typed_ast` and `regex` directly from the source code. The -error happens because `pip` will download [Python wheels](https://pythonwheels.com/) if -they are available. Python wheels are a new standard of distributing Python packages and -packages that have Cython and extensions written in C are already compiled, so the -installation is much more faster. The problem here is that somehow the Python -environment inside Vim does not match with those already compiled C extensions and these -kind of errors are the result. Luckily there is an easy fix: installing the packages -from the source code. +Then you need to install `typed_ast` directly from the source code. The error happens +because `pip` will download [Python wheels](https://pythonwheels.com/) if they are +available. Python wheels are a new standard of distributing Python packages and packages +that have Cython and extensions written in C are already compiled, so the installation +is much more faster. The problem here is that somehow the Python environment inside Vim +does not match with those already compiled C extensions and these kind of errors are the +result. Luckily there is an easy fix: installing the packages from the source code. -The two packages that cause the problem are: +The package that causes problems is: -- [regex](https://pypi.org/project/regex/) - [typed-ast](https://pypi.org/project/typed-ast/) Now remove those two packages: ```console -$ pip uninstall regex typed-ast -y +$ pip uninstall typed-ast -y ``` And now you can install them with: ```console -$ pip install --no-binary :all: regex typed-ast +$ pip install --no-binary :all: typed-ast ``` The C extensions will be compiled and now Vim's Python environment will match. Note that @@ -232,7 +253,7 @@ Ubuntu/Debian do `sudo apt-get install build-essential python3-dev`). If you later want to update _Black_, you should do it like this: ```console -$ pip install -U black --no-binary regex,typed-ast +$ pip install -U black --no-binary typed-ast ``` ### With ALE @@ -280,24 +301,26 @@ close and reopen your File, _Black_ will be done with its job. ## Visual Studio Code -Use the -[Python extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python) -([instructions](https://code.visualstudio.com/docs/python/editing#_formatting)). +- Use the + [Python extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python) + ([instructions](https://code.visualstudio.com/docs/python/editing#_formatting)). + +- Alternatively the pre-release + [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter) + extension can be used which runs a [Language Server Protocol](https://langserver.org/) + server for Black. Formatting is much more responsive using this extension, **but the + minimum supported version of Black is 22.3.0**. ## SublimeText 3 Use [sublack plugin](https://github.com/jgirardet/sublack). -## Jupyter Notebook Magic - -Use [blackcellmagic](https://github.com/csurfer/blackcellmagic). - -## Python Language Server +## Python LSP Server If your editor supports the [Language Server Protocol](https://langserver.org/) (Atom, Sublime Text, Visual Studio Code and many more), you can use the -[Python Language Server](https://github.com/palantir/python-language-server) with the -[pyls-black](https://github.com/rupert/pyls-black) plugin. +[Python LSP Server](https://github.com/python-lsp/python-lsp-server) with the +[python-lsp-black](https://github.com/python-lsp/python-lsp-black) plugin. ## Atom/Nuclide