diff --git a/autoload/SpaceVim/layers/lang/python.vim b/autoload/SpaceVim/layers/lang/python.vim index 23974db24..159dc7070 100644 --- a/autoload/SpaceVim/layers/lang/python.vim +++ b/autoload/SpaceVim/layers/lang/python.vim @@ -34,6 +34,8 @@ function! SpaceVim#layers#lang#python#plugins() abort \ { 'on_ft' : 'python'}]) call add(plugins, ['jeetsukumaran/vim-pythonsense', \ { 'on_ft' : 'python'}]) + call add(plugins, ['alfredodeza/coveragepy.vim', + \ { 'merged' : 0}]) return plugins endfunction @@ -102,6 +104,24 @@ function! s:language_specified_mappings() abort \ 'call SpaceVim#plugins#repl#send("selection")', \ 'send selection and keep code buffer focused', 1) + let g:_spacevim_mappings_space.l.c = {'name' : '+Coverage'} + + call SpaceVim#mapping#space#langSPC('nmap', ['l','c', 'r'], + \ 'Coveragepy report', + \ 'coverager eport', 1) + + call SpaceVim#mapping#space#langSPC('nmap', ['l','c', 's'], + \ 'Coveragepy show', + \ 'coverager show', 1) + + call SpaceVim#mapping#space#langSPC('nmap', ['l','c', 'e'], + \ 'Coveragepy session', + \ 'coverager session', 1) + + call SpaceVim#mapping#space#langSPC('nmap', ['l','c', 'f'], + \ 'Coveragepy refresh', + \ 'coverager refresh', 1) + " +Generate {{{ let g:_spacevim_mappings_space.l.g = {'name' : '+Generate'} diff --git a/docs/cn/layers/lang/python.md b/docs/cn/layers/lang/python.md index 969fe4940..04a3d8548 100644 --- a/docs/cn/layers/lang/python.md +++ b/docs/cn/layers/lang/python.md @@ -12,12 +12,11 @@ lang: cn - [功能特性](#功能特性) - [依赖安装及启用模块](#依赖安装及启用模块) - [启用模块](#启用模块) - - [语法检查](#语法检查) - - [代码格式化](#代码格式化) - - [格式化 Imports](#格式化-imports) + - [语言工具](#语言工具) - [快捷键](#快捷键) - [跳至定义处](#跳至定义处) - [代码生成](#代码生成) + - [测试覆盖](#测试覆盖) - [交互式编程](#交互式编程) - [运行当前脚本](#运行当前脚本) - [整理 imports](#整理-imports) @@ -48,7 +47,9 @@ lang: cn name = "lang#python" ``` -### 语法检查 +### 语言工具 + +**语法检查:** `checkers` 模块提供了代码检查功能, 此外需要安装 `flake8` 包: @@ -56,7 +57,7 @@ lang: cn pip install --user flake8 ``` -### 代码格式化 +**代码格式化:** 默认的代码格式化快捷键为 `SPC b f`, 需要安装 `yapf`。若需要在保存文件时自动格式化该 Python 文件,需要设置 `format-on-save` 为 `true`。 @@ -64,7 +65,7 @@ pip install --user flake8 pip install --user yapf ``` -### 格式化 Imports +**格式化导包:** 若需要更便捷地删除未使用的 imports,需要安装 [autoflake](https://github.com/myint/autoflake): @@ -78,6 +79,16 @@ pip install --user autoflake pip install --user isort ``` +**测试覆盖:** + +通过安装 coverage 可对代码测试覆盖情况进行统计: + +```sh +pip install --user coverage +``` + + + ## 快捷键 ### 跳至定义处 @@ -92,6 +103,16 @@ pip install --user isort | ------ | ----------- | -------------- | | Normal | `SPC l g d` | 生成 docstring | +### 测试覆盖 + +| 模式 | 快捷键 | 功能描述 | +| ------ | ----------- | ----------------- | +| normal | `SPC l c r` | coverager report | +| normal | `SPC l c s` | coverager show | +| normal | `SPC l c e` | coverager session | +| normal | `SPC l c f` | coverager refresh | + + ### 交互式编程 启动 `python` 或 `ipython` 交互进程,快捷键为: `SPC l s i`。如果存在可执行命令 `ipython`, diff --git a/docs/layers/lang/python.md b/docs/layers/lang/python.md index bb50903f6..dce5ae354 100644 --- a/docs/layers/lang/python.md +++ b/docs/layers/lang/python.md @@ -10,13 +10,12 @@ description: "This layer is for Python development, provide autocompletion, synt - [Description](#description) - [Features](#features) - [Install](#install) - - [Layer](#layer) - - [Syntax Checking](#syntax-checking) - - [Buffer formatting](#buffer-formatting) - - [Format imports](#format-imports) + - [enable layer](#enable-layer) + - [language tools](#language-tools) - [Key bindings](#key-bindings) - [Jump to definition](#jump-to-definition) - [Code generation](#code-generation) + - [Code Coverage](#code-coverage) - [Text objects and motions](#text-objects-and-motions) - [Inferior REPL process](#inferior-repl-process) - [Running current script](#running-current-script) @@ -36,7 +35,7 @@ This layer is for Python development. ## Install -### Layer +### enable layer To use this configuration layer, add following snippet to your custom configuration file. @@ -45,7 +44,10 @@ To use this configuration layer, add following snippet to your custom configurat name = "lang#python" ``` -### Syntax Checking +### language tools + + +**syntax checking:** `checker` layer provide syntax checking feature, and for Python it uses `flake8` package: @@ -53,7 +55,7 @@ To use this configuration layer, add following snippet to your custom configurat pip install --user flake8 ``` -### Buffer formatting +**code formatting:** The default key binding for formatting buffer is `SPC b f`, and you need to install `yapf`. To enable automatic buffer formatting on save, load this layer with setting `format-on-save` to `1`. @@ -67,7 +69,7 @@ The default key binding for formatting buffer is `SPC b f`, and you need to inst pip install --user yapf ``` -### Format imports +**format imports:** To be able to suppress unused imports easily, install [autoflake](https://github.com/myint/autoflake): @@ -81,6 +83,14 @@ To be able to sort your imports, install [isort](https://github.com/timothycrosl pip install --user isort ``` +**code coverage:** + +To be able to show code coverage, install coverage.py + +```sh +pip install --user coverage +``` + ## Key bindings ### Jump to definition @@ -95,6 +105,15 @@ pip install --user isort | ------ | ----------- | ------------------ | | normal | `SPC l g d` | Generate docstring | +### Code Coverage + +| Mode | Key Binding | Description | +| ------ | ----------- | ----------------- | +| normal | `SPC l c r` | coverager report | +| normal | `SPC l c s` | coverager show | +| normal | `SPC l c e` | coverager session | +| normal | `SPC l c f` | coverager refresh | + ### Text objects and motions This layer contains vim-pythonsense which provides text objects and motions for Python classes, methods, functions, and doc strings.