From acddd6d68823098ed91c9f32147c796b5f54d85e Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Tue, 18 Feb 2020 12:40:23 +0800 Subject: [PATCH] Add tags support for zig lang (#3357) --- autoload/SpaceVim/layers/lang/zig.vim | 38 +++++++++++++++++++++++++++ docs/cn/layers/lang/zig.md | 5 ++++ docs/layers/lang/zig.md | 5 ++++ 3 files changed, 48 insertions(+) diff --git a/autoload/SpaceVim/layers/lang/zig.vim b/autoload/SpaceVim/layers/lang/zig.vim index 95417a856..1384ae930 100644 --- a/autoload/SpaceVim/layers/lang/zig.vim +++ b/autoload/SpaceVim/layers/lang/zig.vim @@ -6,6 +6,11 @@ " License: GPLv3 "============================================================================= +if exists('s:ztagsbin') + finish +endif +let s:ztagsbin = 'ztags' + function! SpaceVim#layers#lang#zig#plugins() abort let plugins = [] call add(plugins, ['ziglang/zig.vim', { 'merged' : 0}]) @@ -15,8 +20,41 @@ endfunction function! SpaceVim#layers#lang#zig#config() abort call SpaceVim#plugins#runner#reg_runner('zig', 'zig run %s') call SpaceVim#mapping#space#regesit_lang_mappings('zig', function('s:language_specified_mappings')) + if executable(s:ztagsbin) && !exists('g:tagbar_type_zig') + let g:tagbar_type_zig = { + \ 'ctagstype' : 'zig', + \ 'kinds' : [ + \ 's:structs', + \ 'u:unions', + \ 'e:enums', + \ 'v:variables', + \ 'm:members', + \ 'f:functions', + \ 'r:errors' + \ ], + \ 'sro' : '.', + \ 'kind2scope' : { + \ 'e' : 'enum', + \ 'u' : 'union', + \ 's' : 'struct', + \ 'r' : 'error' + \ }, + \ 'scope2kind' : { + \ 'enum' : 'e', + \ 'union' : 'u', + \ 'struct' : 's', + \ 'error' : 'r' + \ }, + \ 'ctagsbin' : s:ztagsbin, + \ 'ctagsargs' : '' + \ } + endif endfunction function! s:language_specified_mappings() abort call SpaceVim#mapping#space#langSPC('nmap', ['l','r'], 'call SpaceVim#plugins#runner#open()', 'execute current file', 1) endfunction + +function! SpaceVim#layers#lang#zig#set_variable(opt) abort + let s:ztagsbin = get(a:opt, 'ztagsbin', s:ztagsbin) +endfunction diff --git a/docs/cn/layers/lang/zig.md b/docs/cn/layers/lang/zig.md index 23bec3f5a..eaa16e4fa 100644 --- a/docs/cn/layers/lang/zig.md +++ b/docs/cn/layers/lang/zig.md @@ -10,6 +10,7 @@ lang: zh - [模块简介](#模块简介) - [启用模块](#启用模块) +- [模块选项](#模块选项) - [快捷键](#快捷键) - [运行当前脚本](#运行当前脚本) @@ -28,6 +29,10 @@ lang: zh name = "lang#zig" ``` +## 模块选项 + +- `ztagsbin`:制定 ztags 命令的路径。 + ## 快捷键 ### 运行当前脚本 diff --git a/docs/layers/lang/zig.md b/docs/layers/lang/zig.md index a4fb3f424..34852e9b3 100644 --- a/docs/layers/lang/zig.md +++ b/docs/layers/lang/zig.md @@ -9,6 +9,7 @@ description: "This layer is for zig development, provide code runner support for - [Description](#description) - [Install](#install) +- [Options](#options) - [Key bindings](#key-bindings) - [Running current script](#running-current-script) @@ -27,6 +28,10 @@ To use this configuration layer, update custom configuration file with: name = "lang#zig" ``` +## Options + +- `ztagsbin`: specific the path of ztags. + ## Key bindings ### Running current script