pysen-ls (pysen language server) extension for coc.nvim. Python linting, formatting made easy.
MIT License
fork from a bonprosoft/pysen-vscode
pysen-ls (pysen language server) extension for coc.nvim.
Python linting, formatting made easy.
Due to the nature of the tool, it may take some time for the formatter to complete its execution.
You may want to refrain from setting up automatic formatting when saving files.
CocInstall:
:CocInstall @yaegassy/coc-pysen
scoped packages
vim-plug:
Plug 'yaegassy/coc-pysen', {'do': 'yarn install --frozen-lockfile'}
To run linter and formatter in "pysen", you need pyproject.toml
.
e.g. pyproject.toml:
[tool.pysen]
version = "0.10"
[tool.pysen.lint]
enable_black = true
enable_flake8 = true
enable_isort = true
enable_mypy = true
mypy_preset = "strict"
line_length = 88
py_version = "py37"
[[tool.pysen.lint.mypy_targets]]
paths = ["."]
More Info:
Check the README of "pysen".
coc-pysen
detects and starts pysen-ls
.
Priority to detect:
pysen.pysenLsPath
coc-pysen allows you to create an extension-only "venv" and install "pysen-ls".
Also install flake8, mypy, black, and isort together.
You can also specify the version of each tool. (setting: pysen.bultin.flake8Version
, pysen.bultin.mypyVersion
, pysen.bultin.blackVersion
, pysen.bultin.isortVersion
)
The first time you use coc-pysen, if pysen-ls is not detected, you will be prompted to do a built-in installation.
You can also run the installation command manually.
:CocCommand pysen.installServer
pysen.enable
: Enable coc-pysen extension, default: true
pysen.pysenLsPath
: (Optional) The custom path to the pysen-ls (Absolute path)pysen.bultin.flake8Version
: (Optional) Version of flake8 for built-in install, e.g. "3.9.0", default: ""
pysen.bultin.mypyVersion
: (Optional) Version of mypy for built-in install, e.g. "0.812", default: ""
pysen.bultin.blackVersion
: (Optional) Version of black for built-in install, e.g. "20.8b1", default: ""
pysen.bultin.isortVersion
: (Optional) Version of isort for built-in install, e.g. "5.8.0", default: ""
pysen.client.connectionMode
: Controls the communication method to pysen-ls, valid options ["stdio", "tcp"]
, default: "stdio"
stdio
: Use stdio to communicate with pysen-ls.tcp
: Use tcp to connect pysen-ls. You need to launch pysen-ls.pysen.client.pythonPath
: (Optional) Specifies the python path to use pysen, default: ""
pysen.client.tcpHost
: Specifies the host name to connect pysen-ls server. This setting only works with connectionMode is 'tcp', default: 127.0.0.1
pysen.client.tcpPort
: Specifies the port to connect pysen-ls server. This setting only works with connectionMode is 'tcp', default: 3746
pysen.server.enableLintOnSave
: Controls whether to trigger the lint task on save, default: true
pysen.server.enableCodeAction
: Enable/disable code actions, default: true
pysen.server.lintTargets
: Controls target names for pysen to invoke in the lint task, default: ["lint"]
pysen.server.formatTargets
: Controls target names for pysen to invoke in the format task, default: ["format", "lint"]
pysen.trace.server
: Traces the communication between coc.nvim and the pysen language server, default: "off"
pysen.installServer
: Install pysen-ls (builtin)
~/.config/coc/extensions/@yaegassy/coc-pysen-data/pysen-ls/venv/bin/pysen_language_server
~/AppData/Local/coc/extensions/@yaegassy/coc-pysen-data/pysen-ls/venv/bin/pysen_language_server
pysen.triggerLintDocument
: Lint Current Documentpysen.triggerLintWorkspace
: Lint Entire Workspacepysen.triggerFormatDocument
: Format Current Documentpysen.triggerFormatWorkspace
: Format Entire Workspacepysen.triggerFormatWorkspace
: Format Entire WorkspaceMIT
This extension is built with create-coc-extension