1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 06:20:05 +08:00

Merge branch 'dev' into lang/ruby

This commit is contained in:
Wang Shidong 2017-10-08 06:17:11 -05:00 committed by GitHub
commit 918e41c81b
36 changed files with 809 additions and 321 deletions

9
.editorconfig Normal file
View File

@ -0,0 +1,9 @@
root = true
[*.vim]
indent_style = space
indent_size = 2
end_of_line = 1f
insert_final_newline = true
charset = utf_8

1
.gitignore vendored
View File

@ -24,3 +24,4 @@ cscope.files
cscope.out
cscope.in.out
cscope.po.out
build/

View File

@ -27,39 +27,36 @@ matrix:
install:
- |
set -e
if [ "${LINT#vimlint}" != "$LINT" ]; then
git clone --depth=1 https://github.com/syngan/vim-vimlint /tmp/vimlint
git clone --depth=1 https://github.com/ynkdir/vim-vimlparser /tmp/vimlparser
elif [ "${LINT#vint}" != "$LINT" ]; then
virtualenv /tmp/vint && source /tmp/vint/bin/activate && pip install vim-vint
elif [ "${LINT#vader}" != "$LINT" ]; then
git clone https://github.com/junegunn/vader.vim.git /tmp/vader
C_OPTS="--prefix=$DEPS --with-features=huge --disable-gui --enable-pythoninterp"
git clone --depth 1 https://github.com/vim/vim
cd vim
./configure $C_OPTS
make
make install
cd -
(git clone --depth 1 https://github.com/vim/vim /tmp/vim &&
cd /tmp/vim &&
./configure $C_OPTS &&
make install)
fi
script:
- |
set -ex
if [ "$LINT" = "vimlint" ]; then
sh /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser ./config
sh /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser ./autoload
sh /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser ./ftplugin
sh /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser ./syntax
sh /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser ./mode
for file in $(find . -name "*.vim");
do
sh /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser $file;
done
elif [ "$LINT" = "vimlint-errors" ]; then
sh /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser ./config
sh /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser ./autoload
sh /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser ./ftplugin
sh /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser ./syntax
sh /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser ./mode
for file in $(find . -name "*.vim");
do
sh /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser $file;
done
elif [ "$LINT" = "vint" ]; then
vint .
elif [ "$LINT" = "vint-errors" ]; then
vint --error .
elif [ "$LINT" = "vader" ]; then
vim -Nu test/test.vim -c 'Vader! test/**'
make test
fi

13
Makefile Normal file
View File

@ -0,0 +1,13 @@
test: build/vader | build
vim -Nu test/vimrc -c 'Vader! test/**'
build/vader:
git clone --depth 1 https://github.com/junegunn/vader.vim.git $@
build:
mkdir -p $@
clean:
$(RM) -r build
.PHONY: clean test

View File

@ -1,32 +1,33 @@
[![SpaceVim](https://spacevim.org/logo.png)](https://spacevim.org)
[Wiki](https://github.com/SpaceVim/SpaceVim/wiki) |
[Documentation](http://spacevim.org/documentation/) |
[Twitter](https://twitter.com/SpaceVim) |
[Community](https://spacevim.org/community/) |
[Gitter **Chat**](https://gitter.im/SpaceVim/SpaceVim) |
[Wiki](https://github.com/SpaceVim/SpaceVim/wiki) \|
[Documentation](http://spacevim.org/documentation/) \|
[Twitter](https://twitter.com/SpaceVim) \|
[Community](https://spacevim.org/community/) \|
[Gitter **Chat**](https://gitter.im/SpaceVim/SpaceVim) \|
[中文文档](http://spacevim.org/README_zh_cn/)
[![Build Status](https://travis-ci.org/SpaceVim/SpaceVim.svg?branch=dev)](https://travis-ci.org/SpaceVim/SpaceVim)
[![codecov](https://codecov.io/gh/SpaceVim/SpaceVim/branch/master/graph/badge.svg)](https://codecov.io/gh/SpaceVim/SpaceVim)
![Version](https://img.shields.io/badge/version-0.5.0--dev-FF00CC.svg)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Doc](https://img.shields.io/badge/doc-%3Ah%20SpaceVim-orange.svg)](doc/SpaceVim.txt)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/SpaceVim/SpaceVim.svg)](http://isitmaintained.com/project/SpaceVim/SpaceVim "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/SpaceVim/SpaceVim.svg)](http://isitmaintained.com/project/SpaceVim/SpaceVim "Percentage of issues still open")
SpaceVim is a community-driven vim distribution that seeks to provide layer feature, especially for neovim. It offers a variety of layers to choose from. to create a suitable vim development environment, you just need to select the required layers. If you use SpaceVim,
please star it on github. It's a great way of getting feedback and gives me the kick to
put more time into development.
SpaceVim is a community-driven vim distribution that seeks to provide layer feature, compatible with vim and neoVim. Layers help collect related plugins together to provide features. Also help keep configuration organized and reduces overhead for the user by keeping them from having to think about what plugins to install. star it on github is a great way of getting feedback and gives me the kick to put more time into development.
![welcome-page](https://cloud.githubusercontent.com/assets/13142418/26402270/28ad72b8-40bc-11e7-945e-003f41e057be.png)
See the [documentation](https://spacevim.org/documentation) or [the list of layers](http://spacevim.org/layers/) for more information.
Here is a throughput graph of the repository for the last few weeks:
[![Throughput Graph](https://graphs.waffle.io/SpaceVim/SpaceVim/throughput.svg)](https://waffle.io/SpaceVim/SpaceVim/metrics/throughput)
### Requirements
SpaceVim's basic mode only requests `git` comamnd in your `$PATH`, but if you want to get better user experience, you need to install [nerd-font](https://github.com/ryanoasis/nerd-fonts). And make sure your terminal support [true colors](https://gist.github.com/XVilka/8346728).
### Install
@ -44,11 +45,11 @@ curl -sLf https://spacevim.org/install.sh | bash -s -- -h
### Features
- **Great documentation:** access documentation in Vim with
<kbd>:h SpaceVim</kbd>.
- **Great documentation:** access documentation in Vim with <kbd>:h SpaceVim</kbd>.
- **Beautiful GUI:** you'll love the awesome UI and its useful features.
- **Mnemonic key bindings:** all key bindings have mnemonic prefixes.
- **Lazy load plugins:** Lazy-load 90% of plugins with [dein.vim](https://github.com/Shougo/dein.vim)
![UI for dein](https://user-images.githubusercontent.com/13142418/31309093-36c01150-abb3-11e7-836c-3ad406bdd71a.gif)
- **Neovim centric:** Dark powered mode of SpaceVim
### Support SpaceVim
@ -62,6 +63,7 @@ If you want to show your support financially you can buy a drink for the mainta
### Credits & Thanks
- [![GitHub contributors](https://img.shields.io/github/contributors/SpaceVim/SpaceVim.svg)](https://github.com/SpaceVim/SpaceVim/graphs/contributors)
- [@Gabirel](https://github.com/Gabirel) and his [Hack-SpaceVim](https://github.com/Gabirel/Hack-SpaceVim)
- [vimdoc](https://github.com/google/vimdoc) generate doc file for SpaceVim
- [Rafael Bodill](https://github.com/rafi) and his vim-config
- [Bailey Ling](https://github.com/bling) and his dotvim

View File

@ -200,6 +200,9 @@ let g:spacevim_vim_help_language = 'en'
" <
let g:spacevim_language = ''
""
" Option for keep the spacevim server ailive
let g:spacevim_keep_server_alive = 1
""
" The colorscheme of SpaceVim. Default is 'gruvbox'.
let g:spacevim_colorscheme = 'gruvbox'
""
@ -345,7 +348,7 @@ let g:spacevim_enable_vimfiler_gitstatus = 0
" Enable/Disable filetypeicon colum in vimfiler buffer, default is 0.
let g:spacevim_enable_vimfiler_filetypeicon = 0
let g:spacevim_smartcloseignorewin = ['__Tagbar__' , 'vimfiler:default']
let g:spacevim_smartcloseignoreft = ['help', 'tagbar', 'vimfiler']
let g:spacevim_smartcloseignoreft = ['help', 'tagbar', 'vimfiler', 'SpaceVimRunner']
let g:spacevim_altmoveignoreft = ['Tagbar' , 'vimfiler']
let g:spacevim_enable_javacomplete2_py = 0
let g:spacevim_src_root = 'E:\sources\'
@ -467,6 +470,10 @@ endfunction
function! SpaceVim#end() abort
if g:spacevim_keep_server_alive
call SpaceVim#server#export_server()
endif
if !empty(g:spacevim_windows_leader)
call SpaceVim#mapping#leader#defindWindowsLeader(g:spacevim_windows_leader)
endif

View File

@ -1,5 +1,5 @@
function! SpaceVim#api#job#get() abort
return deepcopy(s:self)
return deepcopy(s:self)
endfunction
" make vim and neovim use same job func.
@ -9,195 +9,220 @@ let s:self.nvim_job = has('nvim')
let s:self.vim_job = !has('nvim') && has('job') && has('patch-8.0.0027')
let s:self.vim_co = SpaceVim#api#import('vim#compatible')
if !s:self.nvim_job && !s:self.vim_job
augroup SpaceVim_job
au!
au! User SpaceVim_job_stdout nested call call(s:self.opts.on_stdout, s:self.job_argv)
au! User SpaceVim_job_stderr nested call call(s:self.opts.on_stderr, s:self.job_argv)
au! User SpaceVim_job_exit nested call call(s:self.opts.on_exit, s:self.job_argv)
augroup ENd
endif
function! s:self.warn(...) abort
if len(a:000) == 0
echohl WarningMsg | echom 'Current version do not support job feature, fallback to sync system()' | echohl None
elseif len(a:000) == 1 && type(a:1) == type('')
echohl WarningMsg | echom a:1| echohl None
else
endif
if len(a:000) == 0
echohl WarningMsg | echom 'Current version do not support job feature, fallback to sync system()' | echohl None
elseif len(a:000) == 1 && type(a:1) == type('')
echohl WarningMsg | echom a:1| echohl None
else
endif
endfunction
function! s:self.warp(argv, opts) abort
let obj = {}
let obj._argv = a:argv
let obj._opts = a:opts
let obj.in_io = get(a:opts, 'in_io', 'pipe')
" @vimlint(EVL103, 1, a:job_id)
function! obj._out_cb(job_id, data) abort
if has_key(self._opts, 'on_stdout')
call self._opts.on_stdout(self._opts.jobpid, [a:data], 'stdout')
endif
endfunction
function! obj._err_cb(job_id, data) abort
if has_key(self._opts, 'on_stderr')
call self._opts.on_stderr(self._opts.jobpid, [a:data], 'stderr')
endif
endfunction
function! obj._exit_cb(job_id, data) abort
if has_key(self._opts, 'on_exit')
call self._opts.on_exit(self._opts.jobpid, a:data, 'exit')
endif
endfunction
" @vimlint(EVL103, 0, a:job_id)
let obj = {
\ 'argv': a:argv,
\ 'opts': {
\ 'mode': 'nl',
\ 'in_io' : obj.in_io,
\ 'out_cb': obj._out_cb,
\ 'err_cb': obj._err_cb,
\ 'exit_cb': obj._exit_cb,
\ }
\ }
if has_key(a:opts, 'cwd')
call extend(obj.opts, {'cwd' : a:opts.cwd})
let obj = {}
let obj._argv = a:argv
let obj._opts = a:opts
let obj.in_io = get(a:opts, 'in_io', 'pipe')
" @vimlint(EVL103, 1, a:job_id)
function! obj._out_cb(job_id, data) abort
if has_key(self._opts, 'on_stdout')
call self._opts.on_stdout(self._opts.jobpid, [a:data], 'stdout')
endif
return obj
endfunction
function! obj._err_cb(job_id, data) abort
if has_key(self._opts, 'on_stderr')
call self._opts.on_stderr(self._opts.jobpid, [a:data], 'stderr')
endif
endfunction
function! obj._exit_cb(job_id, data) abort
if has_key(self._opts, 'on_exit')
call self._opts.on_exit(self._opts.jobpid, a:data, 'exit')
endif
endfunction
" @vimlint(EVL103, 0, a:job_id)
let obj = {
\ 'argv': a:argv,
\ 'opts': {
\ 'mode': 'nl',
\ 'in_io' : obj.in_io,
\ 'out_cb': obj._out_cb,
\ 'err_cb': obj._err_cb,
\ 'exit_cb': obj._exit_cb,
\ }
\ }
if has_key(a:opts, 'cwd')
call extend(obj.opts, {'cwd' : a:opts.cwd})
endif
return obj
endfunction
" start a job, and return the job_id.
function! s:self.start(argv, ...) abort
if self.nvim_job
if len(a:000) > 0
let job = jobstart(a:argv, a:1)
else
let job = jobstart(a:argv)
endi
if job > 0
let msg = ['process '. jobpid(job), ' run']
call extend(self.jobs, {job : msg})
endif
return job
elseif self.vim_job
if len(a:000) > 0
let opts = a:1
else
let opts = {}
endif
let id = len(self.jobs) + 1
let opts.jobpid = id
let wrapped = self.warp(a:argv, opts)
if has_key(wrapped.opts, 'cwd')
let old_wd = getcwd()
let cwd = expand(wrapped.opts.cwd, 1)
" Avoid error E475: Invalid argument: cwd
call remove(wrapped.opts, 'cwd')
exe 'cd' fnameescape(cwd)
endif
let job = job_start(wrapped.argv, wrapped.opts)
if exists('old_wd')
exe 'cd' fnameescape(old_wd)
endif
call extend(self.jobs, {id : job})
return id
if self.nvim_job
if len(a:000) > 0
let job = jobstart(a:argv, a:1)
else
if len(a:000) > 0
let opts = a:1
else
let opts = {}
endif
if has_key(opts, 'cwd')
let old_wd = getcwd()
let cwd = expand(opts.cwd, 1)
exe 'cd' fnameescape(cwd)
endif
let output = self.vim_co.systemlist(a:argv)
if exists('old_wd')
exe 'cd' fnameescape(old_wd)
endif
let id = -1
if v:shell_error
if has_key(opts,'on_stderr')
call call(opts.on_stderr, [id, output, 'stderr'])
endif
else
if has_key(opts,'on_stdout')
call call(opts.on_stdout, [id, output, 'stdout'])
endif
endif
if has_key(opts,'on_exit')
call call(opts.on_exit, [id, v:shell_error, 'exit'])
endif
return id
let job = jobstart(a:argv)
endi
if job > 0
let msg = ['process '. jobpid(job), ' run']
call extend(self.jobs, {job : msg})
endif
return job
elseif self.vim_job
if len(a:000) > 0
let opts = a:1
else
let opts = {}
endif
let id = len(self.jobs) + 1
let opts.jobpid = id
let wrapped = self.warp(a:argv, opts)
if has_key(wrapped.opts, 'cwd')
let old_wd = getcwd()
let cwd = expand(wrapped.opts.cwd, 1)
" Avoid error E475: Invalid argument: cwd
call remove(wrapped.opts, 'cwd')
exe 'cd' fnameescape(cwd)
endif
let job = job_start(wrapped.argv, wrapped.opts)
if exists('old_wd')
exe 'cd' fnameescape(old_wd)
endif
call extend(self.jobs, {id : job})
return id
else
if len(a:000) > 0
let opts = a:1
else
let opts = {}
endif
if has_key(opts, 'cwd')
let old_wd = getcwd()
let cwd = expand(opts.cwd, 1)
exe 'cd' fnameescape(cwd)
endif
let output = self.vim_co.systemlist(a:argv)
if exists('old_wd')
exe 'cd' fnameescape(old_wd)
endif
let id = -1
let s:self.opts = opts
if v:shell_error
if has_key(opts,'on_stderr')
let s:self.job_argv = [id, output, 'stderr']
try
doautocmd User SpaceVim_job_stderr
catch
doautocmd User SpaceVim_job_stderr
endtry
endif
else
if has_key(opts,'on_stdout')
let s:self.job_argv = [id, output, 'stdout']
try
doautocmd User SpaceVim_job_stdout
catch
doautocmd User SpaceVim_job_stdout
endtry
endif
endif
if has_key(opts,'on_exit')
let s:self.job_argv = [id, v:shell_error, 'exit']
try
doautocmd User SpaceVim_job_exit
catch
doautocmd User SpaceVim_job_exit
endtry
endif
return id
endif
endfunction
function! s:self.stop(id) abort
if self.nvim_job
if has_key(self.jobs, a:id)
call jobstop(a:id)
call remove(self.jobs, a:id)
else
call self.warn('No job with such id')
endif
elseif self.vim_job
if has_key(self.jobs, a:id)
call job_stop(get(self.jobs, a:id))
call remove(self.jobs, a:id)
endif
if self.nvim_job
if has_key(self.jobs, a:id)
call jobstop(a:id)
call remove(self.jobs, a:id)
else
call self.warn()
call self.warn('No job with such id')
endif
elseif self.vim_job
if has_key(self.jobs, a:id)
call job_stop(get(self.jobs, a:id))
call remove(self.jobs, a:id)
endif
else
call self.warn()
endif
endfunction
function! s:self.send(id, data) abort
if self.nvim_job
if has_key(self.jobs, a:id)
if type(a:data) == type('')
call jobsend(a:id, [a:data, ''])
else
call jobsend(a:id, a:data)
endif
else
call self.warn('No job with such id')
endif
elseif self.vim_job
if has_key(self.jobs, a:id)
let job = get(self.jobs, a:id)
let chanel = job_getchannel(job)
call ch_sendraw(chanel, a:data . "\n")
else
call self.warn('No job with such id')
endif
if self.nvim_job
if has_key(self.jobs, a:id)
if type(a:data) == type('')
call jobsend(a:id, [a:data, ''])
else
call jobsend(a:id, a:data)
endif
else
call self.warn()
call self.warn('No job with such id')
endif
elseif self.vim_job
if has_key(self.jobs, a:id)
let job = get(self.jobs, a:id)
let chanel = job_getchannel(job)
call ch_sendraw(chanel, a:data . "\n")
else
call self.warn('No job with such id')
endif
else
call self.warn()
endif
endfunction
function! s:self.status(id) abort
if self.nvim_job
if has_key(self.jobs, a:id)
return get(self.jobs, a:id)[1]
endif
elseif self.vim_job
if has_key(self.jobs, a:id)
return job_status(get(self.jobs, a:id))
endif
else
call self.warn('No job with such id!')
if self.nvim_job
if has_key(self.jobs, a:id)
return get(self.jobs, a:id)[1]
endif
elseif self.vim_job
if has_key(self.jobs, a:id)
return job_status(get(self.jobs, a:id))
endif
else
call self.warn('No job with such id!')
endif
endfunction
function! s:self.list() abort
return copy(self.jobs)
return copy(self.jobs)
endfunction
function! s:self.info(id) abort
let info = {}
if self.nvim_job
let info.status = self.status(a:id)
let info.job_id = a:id
return info
elseif self.vim_job
if has_key(self.jobs, a:id)
return job_info(get(self.jobs, a:id))
else
call self.warn('No job with such id!')
endif
let info = {}
if self.nvim_job
let info.status = self.status(a:id)
let info.job_id = a:id
return info
elseif self.vim_job
if has_key(self.jobs, a:id)
return job_info(get(self.jobs, a:id))
else
call self.warn()
call self.warn('No job with such id!')
endif
else
call self.warn()
endif
endfunction

View File

@ -12,46 +12,75 @@ else
endif
function! s:self.open(opts) abort
let buf = get(a:opts, 'bufname', '')
let mode = get(a:opts, 'mode', 'vertical topleft split')
let Initfunc = get(a:opts, 'initfunc', '')
let cmd = get(a:opts, 'cmd', '')
if empty(buf)
exe mode | enew
else
exe mode buf
endif
if !empty(Initfunc)
call call(Initfunc, [])
endif
let buf = get(a:opts, 'bufname', '')
let mode = get(a:opts, 'mode', 'vertical topleft split')
let Initfunc = get(a:opts, 'initfunc', '')
let cmd = get(a:opts, 'cmd', '')
if empty(buf)
exe mode | enew
else
exe mode buf
endif
if !empty(Initfunc)
call call(Initfunc, [])
endif
if !empty(cmd)
exe cmd
endif
if !empty(cmd)
exe cmd
endif
endfunction
func! s:self.resize(size, ...) abort
let cmd = get(a:000, 0, 'vertical')
exe cmd 'resize' a:size
let cmd = get(a:000, 0, 'vertical')
exe cmd 'resize' a:size
endf
function! s:self.listed_buffers() abort
return filter(range(1, bufnr('$')), 'buflisted(v:val)')
return filter(range(1, bufnr('$')), 'buflisted(v:val)')
endfunction
function! s:self.filter_do(expr) abort
let buffers = range(1, bufnr('$'))
for f_expr in a:expr.expr
let buffers = filter(buffers, f_expr)
endfor
for b in buffers
exe printf(a:expr.do, b)
endfor
let buffers = range(1, bufnr('$'))
for f_expr in a:expr.expr
let buffers = filter(buffers, f_expr)
endfor
for b in buffers
exe printf(a:expr.do, b)
endfor
endfunction
" just same as nvim_buf_set_lines
function! s:self.buf_set_lines(buffer, start, end, strict_indexing, replacement) abort
if exists('*nvim_buf_set_lines')
call nvim_buf_set_lines(a:buffer, a:start, a:end, a:strict_indexing, a:replacement)
elseif has('python')
py import vim
py import string
if bufexists(a:buffer)
py bufnr = string.atoi(vim.eval("a:buffer"))
py start_line = string.atoi(vim.eval("a:start"))
py end_line = string.atoi(vim.eval("a:end"))
py lines = vim.eval("a:replacement")
py vim.buffers[bufnr][start_line:end_line] = lines
endif
elseif has('python3')
py3 import vim
py3 import string
if bufexists(a:buffer)
py3 bufnr = string.atoi(vim.eval("a:buffer"))
py3 start_line = string.atoi(vim.eval("a:start"))
py3 end_line = string.atoi(vim.eval("a:end"))
py3 lines = vim.eval("a:replacement")
py3 vim.buffers[bufnr][start_line:end_line] = lines
endif
else
endif
endfunction
fu! SpaceVim#api#vim#buffer#get() abort
return deepcopy(s:self)
return deepcopy(s:self)
endf

View File

@ -1,7 +1,7 @@
let s:self = {}
function! s:self.build(left_sections, right_sections, lsep, rsep, hi_a, hi_b, hi_c, hi_z) abort
function! s:self.build(left_sections, right_sections, lsep, rsep, fname, hi_a, hi_b, hi_c, hi_z) abort
let l = '%#' . a:hi_a . '#' . a:left_sections[0]
let l .= '%#' . a:hi_a . '_' . a:hi_b . '#' . a:lsep
let flag = 1
@ -24,9 +24,9 @@ function! s:self.build(left_sections, right_sections, lsep, rsep, hi_a, hi_b, hi
endif
endif
if flag == 1
let l .= '%#' . a:hi_c . '_' . a:hi_z . '#' . a:lsep . '%='
let l .= '%#' . a:hi_c . '_' . a:hi_z . '#' . a:lsep . a:fname . '%='
else
let l .= '%#' . a:hi_b . '_' . a:hi_z . '#' . a:lsep . '%='
let l .= '%#' . a:hi_b . '_' . a:hi_z . '#' . a:lsep . a:fname . '%='
endif
let l .= '%#' . a:hi_b . '_' . a:hi_z . '#' . a:rsep
let flag = 1

View File

@ -35,6 +35,13 @@ function! SpaceVim#commands#load() abort
command! -nargs=*
\ -complete=custom,SpaceVim#commands#complete_plugin
\ SPUpdate call SpaceVim#commands#update_plugin(<f-args>)
""
" Command for reinstall plugin, support completion of plugin anme.
command! -nargs=+
\ -complete=custom,SpaceVim#commands#complete_plugin
\ SPReinstall call SpaceVim#commands#reinstall_plugin(<f-args>)
""
" Command for install plugins.
command! -nargs=* SPInstall call SpaceVim#commands#install_plugin(<f-args>)
@ -80,6 +87,14 @@ function! SpaceVim#commands#update_plugin(...) abort
endif
endfunction
function! SpaceVim#commands#reinstall_plugin(...)
if g:spacevim_plugin_manager ==# 'dein'
call SpaceVim#plugins#manager#reinstall(a:000)
elseif g:spacevim_plugin_manager ==# 'neobundle'
elseif g:spacevim_plugin_manager ==# 'vim-plug'
endif
endfunction
function! SpaceVim#commands#install_plugin(...) abort
if g:spacevim_plugin_manager ==# 'neobundle'
elseif g:spacevim_plugin_manager ==# 'dein'

View File

@ -15,4 +15,9 @@ function! SpaceVim#layers#core#config() abort
call SpaceVim#mapping#space#def('nnoremap', ['p', 'k'], 'call SpaceVim#plugins#projectmanager#kill_project()', 'kill all project buffers', 1)
call SpaceVim#mapping#space#def('nnoremap', ['p', 'f'], 'CtrlP', 'find files in current project', 1)
call SpaceVim#mapping#space#def('nnoremap', ['p', '/'], 'Grepper', 'fuzzy search for text in current project', 1)
call SpaceVim#mapping#space#def('nnoremap', ['q', 'q'], 'qa', 'prompt-kill-vim', 1)
call SpaceVim#mapping#space#def('nnoremap', ['q', 'Q'], 'qa!', 'kill-vim', 1)
call SpaceVim#mapping#space#def('nnoremap', ['q', 'R'], '', 'restart-vim(TODO)', 1)
call SpaceVim#mapping#space#def('nnoremap', ['q', 'r'], '', 'restart-vim-resume-layouts(TODO)', 1)
call SpaceVim#mapping#space#def('nnoremap', ['q', 't'], 'tabclose!', 'kill current tab', 1)
endfunction

View File

@ -86,6 +86,15 @@ function! s:check_mode() abort
endif
endfunction
" only when there are more than two buffers have same name.
function! s:buffer_name() abort
if get(b:, '_spacevim_statusline_showbfname', 0) == 1
return ' ' . bufname('%')
else
return ''
endif
endfunction
function! s:search_status() abort
let ct = 0
let tt = 0
@ -242,6 +251,8 @@ function! SpaceVim#layers#core#statusline#get(...) abort
return '%#SpaceVim_statusline_a# Transient State %#SpaceVim_statusline_a_SpaceVim_statusline_b#'
elseif &filetype ==# 'HelpDescribe'
return '%#SpaceVim_statusline_a# HelpDescribe %#SpaceVim_statusline_a_SpaceVim_statusline_b#'
elseif &filetype ==# 'SpaceVimRunner'
return '%#SpaceVim_statusline_a# Runner %#SpaceVim_statusline_a_SpaceVim_statusline_b# %{SpaceVim#plugins#runner#status()}'
endif
if a:0 > 0
return s:active()
@ -285,7 +296,8 @@ function! s:active() abort
if index(s:loaded_sections, 'whitespace') != -1
call add(rsec, s:whitespace())
endif
return s:STATUSLINE.build(lsec, rsec, s:lsep, s:rsep,
let fname = s:buffer_name()
return s:STATUSLINE.build(lsec, rsec, s:lsep, s:rsep, fname,
\ 'SpaceVim_statusline_a', 'SpaceVim_statusline_b', 'SpaceVim_statusline_c', 'SpaceVim_statusline_z')
endfunction
@ -386,7 +398,7 @@ function! SpaceVim#layers#core#statusline#config() abort
\ 'toggle the statuline itself', 1)
function! TagbarStatusline(...) abort
let name = (strwidth(a:3) > (g:spacevim_sidebar_width - 15)) ? a:3[:g:spacevim_sidebar_width - 20] . '..' : a:3
return s:STATUSLINE.build([s:winnr(),' Tagbar ', ' ' . name . ' '], [], s:lsep, s:rsep,
return s:STATUSLINE.build([s:winnr(),' Tagbar ', ' ' . name . ' '], [], s:lsep, s:rsep, '',
\ 'SpaceVim_statusline_ia', 'SpaceVim_statusline_b', 'SpaceVim_statusline_c', 'SpaceVim_statusline_z')
endfunction
let g:tagbar_status_func = 'TagbarStatusline'
@ -413,17 +425,22 @@ endfunction
" |
" +- a:marked : The number of marked files, or a comma separated list of
" the marked filenames.
" @vimlint(EVL103, 1, a:regex)
" @vimlint(EVL103, 1, a:marked)
function! SpaceVim#layers#core#statusline#ctrlp(focus, byfname, regex, prev, item, next, marked) abort
return s:STATUSLINE.build([' Ctrlp ', ' ' . a:prev . ' ', ' ' . a:item . ' ', ' ' . a:next . ' '],
\ [' ' . a:focus . ' ', ' ' . a:byfname . ' ', ' ' . getcwd() . ' '], s:lsep, s:rsep,
\ [' ' . a:focus . ' ', ' ' . a:byfname . ' ', ' ' . getcwd() . ' '], s:lsep, s:rsep, '',
\ 'SpaceVim_statusline_a_bold', 'SpaceVim_statusline_b', 'SpaceVim_statusline_c', 'SpaceVim_statusline_z')
endfunction
" @vimlint(EVL103, 0, a:regex)
" @vimlint(EVL103, 0, a:marked)
" a:str : Either the number of files scanned so far, or a string indicating
" the current directory is being scanned with a user_command.
function! SpaceVim#layers#core#statusline#ctrlp_status(str) abort
return s:STATUSLINE.build([' Ctrlp ', ' ' . a:str . ' '],
\ [' ' . getcwd() . ' '], s:lsep, s:rsep,
\ [' ' . getcwd() . ' '], s:lsep, s:rsep, '',
\ 'SpaceVim_statusline_a', 'SpaceVim_statusline_b', 'SpaceVim_statusline_c', 'SpaceVim_statusline_z')
endfunction

View File

@ -58,9 +58,20 @@ function! s:tabname(id) abort
endif
endfunction
function! s:need_show_bfname(stack, nr) abort
let dupbufs = filter(a:stack, "fnamemodify(bufname(v:val), ':t') ==# fnamemodify(bufname(a:nr), ':t')")
if len(dupbufs) >= 2
for i in dupbufs
call setbufvar(i, '_spacevim_statusline_showbfname', 1)
endfor
endif
endfunction
function! SpaceVim#layers#core#tabline#get() abort
let nr = tabpagenr('$')
let t = ''
" the stack should be the bufnr stack of tabline
let stack = []
if nr > 1
let ct = tabpagenr()
if ct == 1
@ -78,6 +89,8 @@ function! SpaceVim#layers#core#tabline#get() abort
if empty(name)
let name = 'No Name'
endif
call add(stack, buflist[winnr - 1])
call s:need_show_bfname(stack, buflist[winnr - 1])
if g:spacevim_buffer_index_type == 3
let id = s:messletters.index_num(i)
elseif g:spacevim_buffer_index_type == 4
@ -101,7 +114,7 @@ function! SpaceVim#layers#core#tabline#get() abort
endif
endfor
let t .= '%=%#SpaceVim_tabline_a_SpaceVim_tabline_b#' . s:rsep
let t .= '%#SpaceVim_tabline_a# Tabs'
let t .= '%#SpaceVim_tabline_a# Tabs '
else
let s:buffers = s:BUFFER.listed_buffers()
let g:_spacevim_list_buffers = s:buffers
@ -123,6 +136,8 @@ function! SpaceVim#layers#core#tabline#get() abort
if empty(name)
let name = 'No Name'
endif
call add(stack, i)
call s:need_show_bfname(stack, i)
if g:spacevim_buffer_index_type == 3
let id = s:messletters.index_num(index(s:buffers, i) + 1)
elseif g:spacevim_buffer_index_type == 4
@ -146,7 +161,7 @@ function! SpaceVim#layers#core#tabline#get() abort
endif
endfor
let t .= '%=%#SpaceVim_tabline_a_SpaceVim_tabline_b#' . s:rsep
let t .= '%#SpaceVim_tabline_a# Buffers'
let t .= '%#SpaceVim_tabline_a# Buffers '
endif
return t
endfunction
@ -173,7 +188,7 @@ endfunction
function! SpaceVim#layers#core#tabline#jump(id) abort
if len(s:buffers) >= a:id
let bid = s:buffers[a:id - 1]
exe 'b' . bid
exe 'silent b' . bid
endif
endfunction

View File

@ -19,7 +19,7 @@ function! SpaceVim#layers#edit#plugins() abort
\ ['gcmt/wildfire.vim',{'on_map' : '<Plug>(wildfire-'}],
\ ['easymotion/vim-easymotion'],
\ ['haya14busa/vim-easyoperator-line'],
\ ['editorconfig/editorconfig-vim', { 'on_cmd' : 'EditorConfigReload'}],
\ ['editorconfig/editorconfig-vim', { 'merged' : 0}],
\ ['floobits/floobits-neovim', { 'on_cmd' : ['FlooJoinWorkspace','FlooShareDirPublic','FlooShareDirPrivate']}],
\ ]
if executable('fcitx')

View File

@ -138,6 +138,9 @@ function! s:language_specified_mappings() abort
" debug
let g:_spacevim_mappings_space.l.d = {'name' : '+Debug'}
call SpaceVim#mapping#space#langSPC('nmap', ['l','d', 's'], ':VBGstartJDB', 'start jdb', 0)
call SpaceVim#mapping#space#langSPC('nmap', ['l','d', 't'], 'VBGtoggleBreakpointThisLine', 'toggle breakpoint at this line', 1)
" maven
let g:_spacevim_mappings_space.l.m = {'name' : '+Maven'}
call SpaceVim#mapping#space#langSPC('nnoremap', ['l','m', 'i'], 'call call('

View File

@ -1,3 +1,12 @@
"=============================================================================
" php.vim --- lang#php layer
" Copyright (c) 2016-2017 Shidong Wang & Contributors
" Author: Shidong Wang < wsdjeg at 163.com >
" URL: https://spacevim.org
" License: MIT license
"=============================================================================
""
" @section lang#php, layer-lang-php
" @parentsection layers

View File

@ -8,25 +8,33 @@
" <
function! SpaceVim#layers#lang#python#plugins() abort
let plugins = []
" python
if has('nvim')
call add(plugins, ['zchee/deoplete-jedi', { 'on_ft' : 'python'}])
else
call add(plugins, ['davidhalter/jedi-vim', { 'on_ft' : 'python',
\ 'if' : has('python') || has('python3')}])
endif
call add(plugins, ['Vimjas/vim-python-pep8-indent',
\ { 'on_ft' : 'python'}])
return plugins
let plugins = []
" python
if has('nvim')
call add(plugins, ['zchee/deoplete-jedi', { 'on_ft' : 'python'}])
else
call add(plugins, ['davidhalter/jedi-vim', { 'on_ft' : 'python',
\ 'if' : has('python') || has('python3')}])
endif
call add(plugins, ['Vimjas/vim-python-pep8-indent',
\ { 'on_ft' : 'python'}])
return plugins
endfunction
function! SpaceVim#layers#lang#python#config() abort
call SpaceVim#layers#edit#add_ft_head_tamplate('python',
\ ['#!/usr/bin/env python',
\ '# -*- coding: utf-8 -*-',
\ '']
\ )
call SpaceVim#plugins#runner#reg_runner('python', 'python %s')
call SpaceVim#mapping#space#regesit_lang_mappings('python', funcref('s:language_specified_mappings'))
call SpaceVim#layers#edit#add_ft_head_tamplate('python',
\ ['#!/usr/bin/env python',
\ '# -*- coding: utf-8 -*-',
\ '']
\ )
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

View File

@ -8,7 +8,7 @@
function! SpaceVim#layers#lang#ruby#plugins() abort
let plugins = []
call add(plugins, ['vim-ruby/vim-ruby', { 'on_ft' : 'ruby'}])
return plugins
endfunction

View File

@ -1,16 +1,37 @@
function! SpaceVim#layers#lang#vim#plugins() abort
let plugins = [
\ ['syngan/vim-vimlint', { 'on_ft' : 'vim'}],
\ ['ynkdir/vim-vimlparser', { 'on_ft' : 'vim'}],
\ ['todesking/vint-syntastic', { 'on_ft' : 'vim'}],
\ ]
call add(plugins,['tweekmonster/exception.vim'])
call add(plugins,['mhinz/vim-lookup'])
call add(plugins,['Shougo/neco-vim', { 'on_event' : 'InsertEnter', 'loadconf_before' : 1}])
call add(plugins,['tweekmonster/helpful.vim', {'on_cmd': 'HelpfulVersion'}])
return plugins
let plugins = [
\ ['syngan/vim-vimlint', { 'on_ft' : 'vim'}],
\ ['ynkdir/vim-vimlparser', { 'on_ft' : 'vim'}],
\ ['todesking/vint-syntastic', { 'on_ft' : 'vim'}],
\ ]
call add(plugins,['tweekmonster/exception.vim'])
call add(plugins,['mhinz/vim-lookup'])
call add(plugins,['Shougo/neco-vim', { 'on_event' : 'InsertEnter', 'loadconf_before' : 1}])
call add(plugins,['tweekmonster/helpful.vim', {'on_cmd': 'HelpfulVersion'}])
return plugins
endfunction
function! SpaceVim#layers#lang#vim#config() abort
call SpaceVim#mapping#gd#add('vim','lookup#lookup')
call SpaceVim#mapping#gd#add('vim','lookup#lookup')
call SpaceVim#mapping#space#regesit_lang_mappings('vim', funcref('s:language_specified_mappings'))
endfunction
function! s:language_specified_mappings() abort
call SpaceVim#mapping#space#langSPC('nmap', ['l','e'], 'call call('
\ . string(function('s:eval_cursor')) . ', [])',
\ 'echo eval under cursor', 1)
call SpaceVim#mapping#space#langSPC('nmap', ['l','v'], 'call call('
\ . string(function('s:helpversion_cursor')) . ', [])',
\ 'echo helpversion under cursor', 1)
endfunction
function! s:eval_cursor() abort
let is_keyword = &iskeyword
set iskeyword+=:
echo expand('<cword>') 'is' eval(expand('<cword>'))
let &iskeyword = is_keyword
endfunction
function! s:helpversion_cursor() abort
exe 'HelpfulVersion' expand('<cword>')
endfunction

View File

@ -11,9 +11,8 @@ function! SpaceVim#layers#shell#plugins() abort
let plugins = []
if has('nvim')
call add(plugins,['Shougo/deol.nvim'])
else
call add(plugins,['Shougo/vimshell.vim', { 'on_cmd':['VimShell']}])
endif
call add(plugins,['Shougo/vimshell.vim', { 'on_cmd':['VimShell']}])
return plugins
endfunction
@ -33,7 +32,7 @@ function! SpaceVim#layers#shell#config() abort
endfunction
function! SpaceVim#layers#shell#set_variable(var) abort
let s:default_shell = get(a:var, 'defaut_shell', 'terminal')
let s:default_shell = get(a:var, 'default_shell', 'terminal')
let s:default_position = get(a:var, 'default_position', 'top')
let s:default_height = get(a:var, 'default_height', 30)
endfunction
@ -42,6 +41,7 @@ let s:shell_win_nr = 0
function! s:open_default_shell() abort
if s:shell_win_nr != 0 && getwinvar(s:shell_win_nr, '&buftype') ==# 'terminal' && &buftype !=# 'terminal'
exe s:shell_win_nr . 'wincmd w'
startinsert
return
endif
if &buftype ==# 'terminal'
@ -60,14 +60,20 @@ function! s:open_default_shell() abort
exe 'resize ' . lines
endif
if s:default_shell ==# 'terminal'
if exists(':te')
exe 'te'
if exists(':terminal')
if has('nvim')
exe 'terminal'
else
call term_start('bash', {'curwin' : 1, 'term_finish' : 'close'})
endif
let s:shell_win_nr = winnr()
let w:shell_layer_win = 1
startinsert
else
echo ':terminal is not supported in this version'
endif
elseif s:default_shell ==# 'VimShell'
VimShell
imap <buffer> <C-d> exit<esc><Plug>(vimshell_enter)
endif
endfunction

View File

@ -30,7 +30,7 @@ function! SpaceVim#layers#ui#config() abort
let g:indentLine_fileTypeExclude = ['help', 'startify', 'vimfiler']
let g:signify_disable_by_default = 0
let g:signify_line_highlight = 0
noremap <silent> <F2> :TagbarToggle<CR>
noremap <silent> <F2> :silent TagbarToggle<CR>
" Ui toggles
call SpaceVim#mapping#space#def('nnoremap', ['t', '8'], 'call call('
\ . string(s:_function('s:toggle_fill_column')) . ', [])',
@ -76,7 +76,7 @@ function! SpaceVim#layers#ui#config() abort
\ 'toggle syntax checker', 1)
call SpaceVim#mapping#space#def('nnoremap', ['t', 'S'], 'call call('
\ . string(s:_function('s:toggle_spell_check')) . ', [])',
\ 'toggle syntax checker', 1)
\ 'toggle spell checker', 1)
call SpaceVim#mapping#space#def('nnoremap', ['t', 'w'], 'call call('
\ . string(s:_function('s:toggle_whitespace')) . ', [])',
\ 'toggle the whitespace', 1)
@ -202,9 +202,9 @@ function! s:toggle_syntax_checker() abort
call SpaceVim#layers#core#statusline#toggle_mode('syntax-checking')
let g:_spacevim_toggle_syntax_flag = g:_spacevim_toggle_syntax_flag * -1
if g:_spacevim_toggle_syntax_flag == 1
echo "syntax-checking enabled."
echo 'syntax-checking enabled.'
else
echo "syntax-checking disabled."
echo 'syntax-checking disabled.'
endif
endfunction
@ -215,6 +215,11 @@ function! s:toggle_spell_check() abort
let &l:spell = 1
endif
call SpaceVim#layers#core#statusline#toggle_mode('spell-checking')
if &l:spell == 1
echo 'spell-checking enabled.'
else
echo 'spell-checking disabled.'
endif
endfunction
function! s:toggle_whitespace() abort

View File

@ -401,6 +401,7 @@ function! s:winopen() " {{{
setlocal nocursorline nocursorcolumn colorcolumn=
setlocal winfixwidth winfixheight
call s:updateStatusline()
call s:toggle_hide_cursor()
endfunction " }}}
function! s:updateStatusline() abort
@ -428,7 +429,16 @@ function! s:guide_help_msg() abort
return substitute(msg,' ', '\\ ', 'g')
endfunction
let s:t_ve = ''
function! s:toggle_hide_cursor() abort
let t_ve = &t_ve
let &t_ve = s:t_ve
let s:t_ve = t_ve
endfunction
function! s:winclose() " {{{
call s:toggle_hide_cursor()
noautocmd execute s:gwin.'wincmd w'
if s:gwin == winnr()
noautocmd close

View File

@ -1,15 +1,9 @@
let s:file = expand('<sfile>:~')
function! SpaceVim#mapping#space#init() abort
if s:has_map_to_spc()
return
endif
nnoremap <silent><nowait> [SPC] :<c-u>LeaderGuide " "<CR>
vnoremap <silent><nowait> [SPC] :<c-u>LeaderGuideVisual " "<CR>
nmap <Space> [SPC]
vmap <Space> [SPC]
let g:_spacevim_mappings_space = {}
let g:_spacevim_mappings_prefixs['[SPC]'] = {'name' : '+SPC prefix'}
let g:_spacevim_mappings_space['?'] = ['Unite menu:CustomKeyMaps -input=[SPC]', 'show mappings']
let g:_spacevim_mappings_space['?'] =
\ ['Unite menu:CustomKeyMaps -input=[SPC]', 'show mappings']
let g:_spacevim_mappings_space.t = {'name' : '+Toggles'}
let g:_spacevim_mappings_space.t.h = {'name' : '+Toggles highlight'}
let g:_spacevim_mappings_space.t.m = {'name' : '+modeline'}
@ -23,12 +17,22 @@ function! SpaceVim#mapping#space#init() abort
let g:_spacevim_mappings_space.w = {'name' : '+Windows'}
let g:_spacevim_mappings_space.p = {'name' : '+Projects'}
let g:_spacevim_mappings_space.h = {'name' : '+Help'}
let g:_spacevim_mappings_space.q = {'name' : '+Quit'}
let g:_spacevim_mappings_space.l = {'name' : '+Language Specified'}
let g:_spacevim_mappings_space.s = {'name' : '+Searching'}
let g:_spacevim_mappings_space.r = {'name' : '+Registers/rings/resume'}
if s:has_map_to_spc()
return
endif
nnoremap <silent><nowait> [SPC] :<c-u>LeaderGuide " "<CR>
vnoremap <silent><nowait> [SPC] :<c-u>LeaderGuideVisual " "<CR>
nmap <Space> [SPC]
vmap <Space> [SPC]
" Windows
for i in range(1, 9)
exe "call SpaceVim#mapping#space#def('nnoremap', [" . i . "], 'call SpaceVim#layers#core#statusline#jump(" . i . ")', 'window " . i . "', 1)"
exe "call SpaceVim#mapping#space#def('nnoremap', ["
\ . i . "], 'call SpaceVim#layers#core#statusline#jump("
\ . i . ")', 'window " . i . "', 1)"
endfor
let g:_spacevim_mappings_space.w['<Tab>'] = ['wincmd w', 'alternate-window']
nnoremap <silent> [SPC]w<tab> :wincmd w<cr>
@ -37,33 +41,60 @@ function! SpaceVim#mapping#space#init() abort
\ 'call call('
\ . string(function('s:windows_layout_toggle'))
\ . ', [])', 'windows-layout-toggle', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'c'], 'Goyo', 'centered-buffer-mode', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'C'], 'ChooseWin | Goyo', 'centered-buffer-mode(other windows)', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'd'], 'close', 'delete window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'D'], 'ChooseWin | close | wincmd w', 'delete window (other windows)', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'F'], 'tabnew', 'create new tab', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'h'], 'wincmd h', 'window-left', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'j'], 'wincmd j', 'window-down', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'k'], 'wincmd k', 'window-up', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'l'], 'wincmd l', 'window-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'H'], 'wincmd H', 'window-far-left', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'J'], 'wincmd J', 'window-far-down', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'K'], 'wincmd K', 'window-far-up', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'L'], 'wincmd L', 'window-far-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'm'], 'only', 'maximize/minimize window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'M'], 'ChooseWinSwap', 'swap window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'o'], 'tabnext', 'other tabs', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '/'], 'bel vs | wincmd w', 'split-window-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'v'], 'bel vs | wincmd w', 'split-window-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '-'], 'bel split | wincmd w', 'split-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 's'], 'bel split | wincmd w', 'split-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'S'], 'bel split', 'split-focus-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '2'], 'silent only | vs | wincmd w', 'layout-double-columns', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '3'], 'silent only | vs | vs | wincmd H', 'split-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'V'], 'bel vs', 'split-window-right-focus', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '='], 'wincmd =', 'balance-windows', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'w'], 'wincmd w', 'cycle and focus between windows', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'W'], 'ChooseWin', 'select window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'c'],
\ 'Goyo', 'centered-buffer-mode', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'C'],
\ 'ChooseWin | Goyo', 'centered-buffer-mode(other windows)', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'd'],
\ 'close', 'delete window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'D'],
\ 'ChooseWin | close | wincmd w', 'delete window (other windows)', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'F'],
\ 'tabnew', 'create new tab', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'h'],
\ 'wincmd h', 'window-left', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'j'],
\ 'wincmd j', 'window-down', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'k'],
\ 'wincmd k', 'window-up', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'l'],
\ 'wincmd l', 'window-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'H'],
\ 'wincmd H', 'window-far-left', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'J'],
\ 'wincmd J', 'window-far-down', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'K'],
\ 'wincmd K', 'window-far-up', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'L'],
\ 'wincmd L', 'window-far-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'm'],
\ 'only', 'maximize/minimize window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'M'],
\ 'ChooseWinSwap', 'swap window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'o'],
\ 'tabnext', 'other tabs', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '/'],
\ 'bel vs | wincmd w', 'split-window-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'v'],
\ 'bel vs | wincmd w', 'split-window-right', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '-'],
\ 'bel split | wincmd w', 'split-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 's'],
\ 'bel split | wincmd w', 'split-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'S'],
\ 'bel split', 'split-focus-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '2'],
\ 'silent only | vs | wincmd w', 'layout-double-columns', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '3'],
\ 'silent only | vs | vs | wincmd H', 'split-window-below', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'V'],
\ 'bel vs', 'split-window-right-focus', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', '='],
\ 'wincmd =', 'balance-windows', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'w'],
\ 'wincmd w', 'cycle and focus between windows', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'W'],
\ 'ChooseWin', 'select window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'u'], 'call SpaceVim#plugins#windowsmanager#UndoQuitWin()', 'undo quieted window', 1)
call SpaceVim#mapping#space#def('nnoremap', ['w', 'U'], 'call SpaceVim#plugins#windowsmanager#RedoQuitWin()', 'redo quieted window', 1)
let s:lnum = expand('<slnum>') + 3
@ -416,4 +447,4 @@ function! s:comment_to_line(invert) abort
endif
endfunction
" vim:set et sw=2 cc=80:
" vim:set et nowrap sw=2 cc=80:

View File

@ -111,6 +111,12 @@ function! s:get_uninstalled_plugins() abort
return filter(values(dein#get()), '!isdirectory(v:val.path)')
endfunction
function! SpaceVim#plugins#manager#reinstall(...)
call dein#reinstall(a:1)
endfunction
" @vimlint(EVL102, 1, l:i)
function! SpaceVim#plugins#manager#install(...) abort
if !s:JOB.vim_job && !s:JOB.nvim_job

View File

@ -0,0 +1,113 @@
"=============================================================================
" runner.vim --- code runner for SpaceVim
" Copyright (c) 2016-2017 Shidong Wang & Contributors
" Author: Shidong Wang < wsdjeg at 163.com >
" URL: https://spacevim.org
" License: MIT license
"=============================================================================
let s:JOB = SpaceVim#api#import('job')
let s:BUFFER = SpaceVim#api#import('vim#buffer')
let s:STRING = SpaceVim#api#import('data#string')
let s:runners = {}
let s:bufnr = 0
function! s:open_win() abort
if s:bufnr != 0 && bufexists(s:bufnr)
exe 'bd ' . s:bufnr
endif
botright split __runner__
let lines = &lines * 30 / 100
exe 'resize ' . lines
setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline nospell nonu norelativenumber
set filetype=SpaceVimRunner
nnoremap <silent><buffer> q :call SpaceVim#plugins#runner#close()<cr>
let s:bufnr = bufnr('%')
wincmd p
endfunction
function! s:async_run(runner) abort
let cmd = printf(a:runner, bufname('%'))
let s:start_time = reltime()
let s:job_id = s:JOB.start(cmd,{
\ 'on_stdout' : function('s:on_stdout'),
\ 'on_stderr' : function('s:on_stderr'),
\ 'on_exit' : function('s:on_exit'),
\ })
endfunction
function! s:update_statusline() abort
redrawstatus!
endfunction
function! SpaceVim#plugins#runner#reg_runner(ft, runner) abort
let s:runners[a:ft] = a:runner
endfunction
function! SpaceVim#plugins#runner#open() abort
let s:lines = 0
let s:status = {
\ 'is_running' : 0,
\ 'is_exit' : 0,
\ 'has_errors' : 0,
\ 'exit_code' : 0
\ }
let runner = get(s:runners, &filetype, '')
if !empty(runner)
call s:open_win()
call s:async_run(runner)
call s:update_statusline()
endif
endfunction
" @vimlint(EVL103, 1, a:job_id)
" @vimlint(EVL103, 1, a:data)
" @vimlint(EVL103, 1, a:event)
function! s:on_stdout(job_id, data, event) abort
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 1, 0, a:data)
let s:lines += len(a:data)
call s:update_statusline()
endfunction
function! s:on_stderr(job_id, data, event) abort
let s:status.has_errors = 1
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 1, 0, a:data)
let s:lines += len(a:data)
call s:update_statusline()
endfunction
function! s:on_exit(job_id, data, event) abort
let s:end_time = reltime(s:start_time)
let s:status.is_exit = 1
let s:status.exit_code = a:data
call s:update_statusline()
endfunction
" @vimlint(EVL103, 0, a:job_id)
" @vimlint(EVL103, 0, a:data)
" @vimlint(EVL103, 0, a:event)
function! s:debug_info() abort
return []
endfunction
function! SpaceVim#plugins#runner#status() abort
if s:status.is_running == 1
elseif s:status.is_exit == 1
return 'exit code : ' . s:status.exit_code
\ . ' time: ' . s:STRING.trim(reltimestr(s:end_time))
endif
return ''
endfunction
function! SpaceVim#plugins#runner#close() abort
if s:status.is_exit == 0
call s:JOB.close(s:job_id)
endif
exe 'bd' s:bufnr
endfunction

View File

@ -0,0 +1,41 @@
"=============================================================================
" server.vim --- server manager for SpaceVim
" Copyright (c) 2016-2017 Shidong Wang & Contributors
" Author: Shidong Wang < wsdjeg at 163.com >
" URL: https://spacevim.org
" License: MIT license
"=============================================================================
function! SpaceVim#server#connect()
if empty($SPACEVIM_SERVER_ADDRESS)
let $SPACEVIM_SERVER_ADDRESS = serverlist()[0]
return 0
else
call sockconnect('pipe', $SPACEVIM_SERVER_ADDRESS, {'rpc' : 1})
return 1
endif
endfunction
function! SpaceVim#server#export_server()
call system('export $TEST_SPACEVIM="test"')
endfunction
function! SpaceVim#server#terminate()
endfunction
function! SpaceVim#server#list()
if has('nvim')
return join(serverlist(), "\n")
else
endif
endfunction

View File

@ -1,3 +1,7 @@
if SpaceVim#server#connect()
finish
endif
let g:Config_Main_Home = fnamemodify(expand('<sfile>'),
\ ':p:h:gs?\\?'.((has('win16') || has('win32')
\ || has('win64'))?'\':'/') . '?')

View File

@ -69,4 +69,13 @@ inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><C-y> neocomplete#close_popup()
inoremap <expr><C-e> neocomplete#cancel_popup()
" Called once right before you start selecting multiple cursors
function! Multiple_cursors_before()
NeoCompleteLock
endfunction
" Called once only when the multiple selection is canceled (default <Esc>)
function! Multiple_cursors_after()
NeoCompleteUnlock
endfunction
" vim:set et sw=2 cc=80:

View File

@ -234,6 +234,9 @@ Set the message language of vim. Default is 'en_US.UTF-8'.
let g:spacevim_language = 'en_CA.utf8'
<
*g:spacevim_keep_server_alive*
Option for keep the spacevim server ailive
*g:spacevim_colorscheme*
The colorscheme of SpaceVim. Default is 'gruvbox'.
@ -412,6 +415,9 @@ COMMANDS *SpaceVim-commands*
:SPUpdate vim-airline
<
:SPReinstall *:SPReinstall*
Command for reinstall plugin, support completion of plugin anme.
:SPInstall *:SPInstall*
Command for install plugins.

View File

@ -407,7 +407,7 @@ Reminder of the color codes for the states:
| Mode | Color |
| ------- | ------ |
| Normal | Grey |
| Insert | Blus |
| Insert | Blue |
| Visual | Orange |
| Replace | Aqua |
@ -461,7 +461,7 @@ all the colors based on the current colorscheme
**Statusline separators:**
It is possible to easily customize the statusline separator by setting the `g:spacevim_statusline_separator` variable in your custon configration file and then redraw the statusline. For instance if you want to set back the separator to the well-known arrow separator add the following snippet to your configuration file:
It is possible to easily customize the statusline separator by setting the `g:spacevim_statusline_separator` variable in your custom configration file and then redraw the statusline. For instance if you want to set back the separator to the well-known arrow separator add the following snippet to your configuration file:
```vim
let g:spacevim_statusline_separator = 'arrow'
@ -809,7 +809,7 @@ Buffer manipulation commands (start with `b`):
##### Special Buffers
In SpaceVim, there are many special buffers, these buffers are created by plugins or SpaceVim isself. and all of this buffers are not listed.
In SpaceVim, there are many special buffers, these buffers are created by plugins or SpaceVim itself. And these buffers are not listed.
##### Files manipulations key bindings
@ -969,7 +969,7 @@ after pressing prefix `z` in normal mode, if you do not remember the mappings, y
| `zO` | open folds recursively |
| `zR` | set `foldlevel` to deepest fold |
| `zW` | mark wrong spelled |
| `zX` | re-apply `foldleve` |
| `zX` | re-apply `foldlevel` |
| `z^` | cursor to screen bottom line N |
| `za` | toggle a fold |
| `zb` | redraw, cursor line at bottom |

37
docs/layers/git.md Normal file
View File

@ -0,0 +1,37 @@
---
title: "SpaceVim git layer"
---
# [SpaceVim Layers:](https://spacevim.org/layers) git
<!-- vim-markdown-toc GFM -->
- [Description](#description)
- [Features](#features)
- [Install](#install)
- [Layer](#layer)
- [Key bindings](#key-bindings)
<!-- vim-markdown-toc -->
## Description
This layers adds extensive support for [git](http://git-scm.com/).
### Features
## Install
### Layer
To use this configuration layer, add `call SpaceVim#layers#load('git')` to your custom configuration file.
## Key bindings
| Key Binding | Description |
| -------------- | ---------------------- |
| `<Leader> g a` | git add current file |
| `<Leader> g A` | git add All files |
| `<Leader> g b` | open git blame window |
| `<Leader> g s` | open git status window |
| `<Leader> g c` | open git commit window |

View File

@ -1,15 +1,27 @@
# [Layers](https://spacevim.org/layers) > lang#php
---
title: "SpaceVim lang#php layer"
---
This layer is for php development.
# [SpaceVim Layers:](https://spacevim.org/layers) lang#php
## Install
<!-- vim-markdown-toc GFM -->
* [Description](#description)
* [Layer Installation](#layer-installation)
* [Requirement](#requirement)
To include this layer, add `SPLayer 'lang#php'` to your custom configuration file.
<!-- vim-markdown-toc -->
## Description
## Requirement
This layer adds PHP language support to SpaceVim.
1. [PHP 5.3+](http://php.net/)
2. [PCNTL](http://php.net/manual/en/book.pcntl.php) Extension
3. [Msgpack 0.5.7+(for NeoVim)](https://github.com/msgpack/msgpack-php) Extension or [JSON(for Vim 7.4+)](http://php.net/manual/en/intro.json.php) Extension
4. [Composer](https://getcomposer.org/) Project
## Layer Installation
To use this configuration layer, add `SPLayer 'lang#php'` to your custom configuration file.
### Requirement
1. [PHP 5.3+](http://php.net/)
2. [PCNTL](http://php.net/manual/en/book.pcntl.php) Extension
3. [Msgpack 0.5.7+(for NeoVim)](https://github.com/msgpack/msgpack-php) Extension or [JSON(for Vim 7.4+)](http://php.net/manual/en/intro.json.php) Extension
4. [Composer](https://getcomposer.org/) Project

28
docs/layers/lang/vim.md Normal file
View File

@ -0,0 +1,28 @@
---
title: "SpaceVim lang#vim layer"
---
# [SpaceVim Layers:](https://spacevim.org/layers) lang#vim
<!-- vim-markdown-toc GFM -->
- [Description](#description)
- [Layer Installation](#layer-installation)
- [Key bindings](#key-bindings)
<!-- vim-markdown-toc -->
## Description
This layer is for vim plugin development.
## Layer Installation
To use this configuration layer, add `call SpaceVim#layers#load('lang#vim')` to your custom configuration file.
## Key bindings
| Key Binding | Description |
| ----------- | ----------------------------------------- |
| `SPC l e` | print the eval under the cursor |
| `SPC l v` | print the helpfulversion under the cursor |

View File

@ -1,6 +1,14 @@
Execute ( SpaceVim api: vim#buffer ):
Execute ( SpaceVim api: vim#buffer open ):
new
let buffer = SpaceVim#api#import('vim#buffer')
call buffer.open({'bufname':'foo', 'cmd' : 'setl buftype=nofile bufhidden=wipe'})
AssertEqual bufname('%'), 'foo'
AssertEqual &buftype, 'nofile'
Execute ( SpaceVim api: vim#buffer buf_set_lines):
new
let buffer = SpaceVim#api#import('vim#buffer')
let nr = bufnr('%')
new
call buffer.buf_set_lines(nr, 0, 1, 0, ['line 1', 'line 2', 'line 3'])
AssertEqual getbufline(nr, 1, '$'), ['line 1', 'line 2', 'line 3']

View File

@ -1,4 +0,0 @@
if [ ! -e /tmp/vader ]; then
git clone https://github.com/junegunn/vader.vim.git /tmp/vader
fi
vim -Nu test/test.vim -c 'Vader! test/**'

View File

@ -1,5 +1,5 @@
filetype off
set rtp+=/tmp/vader
set rtp+=build/vader
set rtp+=.
set rtp+=after
filetype plugin indent on