From 13fe60ed2eb95fcb160e895e711bde31f0a74399 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 8 Jul 2024 17:45:42 +0800 Subject: [PATCH] feat(github): enable github action --- .ci/bootstrap | 5 + .ci/build-production | 6 + .ci/common/github_commenter.vim | 75 ++++ .ci/detach_plugin.sh | 455 +++++++++++++++++++++ .ci/install/linux.sh | 64 +++ .ci/install/windows.ps1 | 63 +++ .ci/push_baidu.sh | 10 + .ci/script.sh | 89 ++++ .ci/update_mirror.sh | 46 +++ .github/CODEOWNERS | 22 + .github/FUNDING.yml | 1 + .github/ISSUE_TEMPLATE/bug-report.yml | 29 ++ .github/ISSUE_TEMPLATE/config.yml | 5 + .github/ISSUE_TEMPLATE/feature_request.yml | 28 ++ .github/PULL_REQUEST_TEMPLATE.md | 13 + .github/SUPPORT.md | 15 + .github/workflows/async.yml | 18 + .github/workflows/check.yml | 201 +++++++++ .github/workflows/docker.yml | 34 ++ .github/workflows/lint.yml | 13 + .github/workflows/remote.yml | 23 ++ README.md | 40 +- docker/Dockerfile | 41 ++ docker/Makefile | 13 + docker/README.md | 43 ++ docker/init.toml | 232 +++++++++++ 26 files changed, 1566 insertions(+), 18 deletions(-) create mode 100644 .ci/bootstrap create mode 100644 .ci/build-production create mode 100644 .ci/common/github_commenter.vim create mode 100644 .ci/detach_plugin.sh create mode 100644 .ci/install/linux.sh create mode 100644 .ci/install/windows.ps1 create mode 100644 .ci/push_baidu.sh create mode 100644 .ci/script.sh create mode 100644 .ci/update_mirror.sh create mode 100644 .github/CODEOWNERS create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/SUPPORT.md create mode 100644 .github/workflows/async.yml create mode 100644 .github/workflows/check.yml create mode 100644 .github/workflows/docker.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/remote.yml create mode 100644 docker/Dockerfile create mode 100644 docker/Makefile create mode 100644 docker/README.md create mode 100644 docker/init.toml diff --git a/.ci/bootstrap b/.ci/bootstrap new file mode 100644 index 000000000..0c1041c1d --- /dev/null +++ b/.ci/bootstrap @@ -0,0 +1,5 @@ +#!/bin/sh +# usage: script/bootstrap +# + +cd docs && bundle install diff --git a/.ci/build-production b/.ci/build-production new file mode 100644 index 000000000..d49c0c57a --- /dev/null +++ b/.ci/build-production @@ -0,0 +1,6 @@ +#!/bin/sh +# usage: script/build-production +# +# Run the jekyll build + +cd docs && bundle exec jekyll build diff --git a/.ci/common/github_commenter.vim b/.ci/common/github_commenter.vim new file mode 100644 index 000000000..4e8d8731f --- /dev/null +++ b/.ci/common/github_commenter.vim @@ -0,0 +1,75 @@ +exe 'set nocp' +set rtp+=/build/GitHub.vim +set rtp+=/API +so /build/GitHub.vim/plugin/github.vim +let s:LIST = SpaceVim#api#import('data#list') +let s:log = filereadable('build_log') ? system('cat build_log') : '' +let g:githubapi_verbose = 1 +function! s:update_log(log, summary, new_log) abort + let log = split(a:log, "\n") + let begin = -1 + let end = -1 + for i in range(len(log)) + if log[i] =~ a:summary + let begin = i + endif + if begin != -1 && log[i] ==# '' + let end = i + endif + endfor + if begin != -1 && end != -1 + return s:LIST.replace(log, begin, end, split(a:new_log, "\n")) + else + return a:log . "\n" . a:new_log + endif + +endfunction +if !empty(s:log) + if $LINT ==# 'vader' + let s:summary = $VIM . ' ' . $LINT . ' build log' + else + let s:summary = $LINT . ' build log' + endif + let s:log = '
' . s:summary . "\n" . s:log . "\n
" + let s:comments = github#api#issues#List_comments('SpaceVim', 'SpaceVim',$TRAVIS_PULL_REQUEST ,'') + if empty(s:comments) + call github#api#issues#Create_comment('SpaceVim','SpaceVim', $TRAVIS_PULL_REQUEST, {'body': s:log}, 'SpaceVimBot', $BOTSECRET) + else + let s:nr = 0 + for s:comment in s:comments + if s:comment.user.login ==# 'SpaceVimBot' + let s:nr = s:comment.id + break + endif + endfor + if s:nr == 0 + call github#api#issues#Create_comment('SpaceVim','SpaceVim', $TRAVIS_PULL_REQUEST, {'body': s:log}, 'SpaceVimBot', $BOTSECRET) + else + call github#api#issues#Edit_comment('SpaceVim','SpaceVim', s:nr, + \ {'body': s:update_log(s:comment.body, s:summary, s:log)}, 'SpaceVimBot', $BOTSECRET) + endif + endif +else + if $LINT ==# 'vader' + let s:summary = $VIM . ' ' . $LINT . ' build log' + else + let s:summary = $LINT . ' build log' + endif + let s:log = '
' . s:summary . "\n" . s:log . "\n
" + let s:comments = github#api#issues#List_comments('SpaceVim', 'SpaceVim',$TRAVIS_PULL_REQUEST ,'') + if !empty(s:comments) + let s:nr = 0 + for s:comment in s:comments + if s:comment.user.login ==# 'SpaceVimBot' + let s:nr = s:comment.id + break + endif + endfor + if s:nr != 0 + call github#api#issues#Edit_comment('SpaceVim','SpaceVim', s:nr, + \ {'body': s:update_log(s:comment.body, s:summary, s:log)}, 'SpaceVimBot', $BOTSECRET) + endif + endif +endif +echom v:shell_error +quit diff --git a/.ci/detach_plugin.sh b/.ci/detach_plugin.sh new file mode 100644 index 000000000..798bc126e --- /dev/null +++ b/.ci/detach_plugin.sh @@ -0,0 +1,455 @@ +#!/usr/bin/env bash + +_detact () { + cp -f ../../$1 $1 +} + +_detact_bundle () { + cp -f ../../bundle/$1/$2 $2 +} + +_checkdir () { + if [[ ! -d "$1" ]]; then + mkdir -p $1 + fi +} + +_default_readme () { + cat < README.md +# $1 +> $2 + +This plugin is automatically detach from [SpaceVim](https://github.com/SpaceVim/SpaceVim/). you can use it without SpaceVim. +EOT +} + + +main () { + case "$1" in + flygrep) + git clone https://github.com/wsdjeg/FlyGrep.vim.git detach/$1 + cd detach/$1 + _checkdir syntax/ + _checkdir autoload/SpaceVim/api + _checkdir autoload/SpaceVim/api/vim + _checkdir autoload/SpaceVim/api/neovim + _checkdir autoload/SpaceVim/api/data + _checkdir autoload/SpaceVim/mapping + _checkdir autoload/SpaceVim/plugins + _detact autoload/SpaceVim/plugins/flygrep.vim + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/api/logger.vim + _detact autoload/SpaceVim/api/vim/buffer.vim + _detact autoload/SpaceVim/api/vim/regex.vim + _detact autoload/SpaceVim/api/vim/compatible.vim + _detact autoload/SpaceVim/api/vim/floating.vim + _detact autoload/SpaceVim/api/vim/highlight.vim + _detact autoload/SpaceVim/api/vim/statusline.vim + _detact autoload/SpaceVim/api/vim/window.vim + _detact autoload/SpaceVim/api/neovim/floating.vim + _detact autoload/SpaceVim/api/data/dict.vim + _detact autoload/SpaceVim/api/data/list.vim + _detact autoload/SpaceVim/api/data/json.vim + _detact autoload/SpaceVim/api/data/string.vim + _detact autoload/SpaceVim/api/prompt.vim + _detact autoload/SpaceVim/api/job.vim + _detact autoload/SpaceVim/api/vim.vim + _detact autoload/SpaceVim/api/file.vim + _detact autoload/SpaceVim/api/system.vim + _detact autoload/SpaceVim/api/time.vim + _detact autoload/SpaceVim/mapping/search.vim + _detact autoload/SpaceVim/logger.vim + # detach lua version flygrep + _checkdir lua/spacevim/api + _checkdir lua/spacevim/api/vim + _checkdir lua/spacevim/plugin + _detact lua/spacevim/plugin/flygrep.lua + _detact lua/spacevim/plugin/search.lua + _detact lua/spacevim.lua + _detact lua/spacevim/logger.lua + _detact lua/spacevim/api.lua + _detact lua/spacevim/api/logger.lua + _detact lua/spacevim/api/prompt.lua + _detact lua/spacevim/api/notify.lua + _detact lua/spacevim/api/password.lua + _detact lua/spacevim/api/vim.lua + _detact lua/spacevim/api/system.lua + _detact lua/spacevim/api/vim/compatible.lua + _detact lua/spacevim/api/vim/highlight.lua + _detact lua/spacevim/api/vim/regex.lua + _detact lua/spacevim/api/vim/keys.lua + _detact lua/spacevim/api/vim/buffer.lua + _detact lua/spacevim/api/vim/window.lua + _detact lua/spacevim/api/vim/statusline.lua + # detach syntax/ftplugin etc + _detact syntax/SpaceVimFlyGrep.vim + # detach bundle + _checkdir plugin + _detact_bundle FlyGrep plugin/FlyGrep.vim + _detact_bundle FlyGrep README.md + _detact_bundle FlyGrep addon-info.json + _checkdir doc/ + _detact_bundle FlyGrep doc/FlyGrep.txt + # detach LICENSE + _detact LICENSE + # detach test vimrc + _checkdir test + _detact_bundle FlyGrep test/vimrc + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_flygrep https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/FlyGrep.vim.git + git push wsdjeg_flygrep master + cd - + rm -rf detach/$1 + exit 0 + ;; + dein-ui) + git clone https://github.com/wsdjeg/dein-ui.vim.git detach/$1 + cd detach/$1 + _checkdir syntax/ + _checkdir autoload/SpaceVim/api + _checkdir autoload/SpaceVim/api/data + _checkdir autoload/SpaceVim/api/vim + _checkdir autoload/SpaceVim/mapping + _checkdir autoload/SpaceVim/plugins + _detact autoload/SpaceVim/plugins/manager.vim + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/commands.vim + _detact autoload/SpaceVim/logger.vim + _detact autoload/SpaceVim/api/job.vim + _detact autoload/SpaceVim/api/system.vim + _detact autoload/SpaceVim/api/data/list.vim + _detact autoload/SpaceVim/api/vim/compatible.vim + _detact syntax/SpaceVimPlugManager.vim + _detact LICENSE + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_dein_ui https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/dein-ui.vim.git + git push wsdjeg_dein_ui master + cd - + rm -rf detach/$1 + exit 0 + ;; + iedit) + git clone https://github.com/wsdjeg/iedit.vim.git detach/$1 + cd detach/$1 + _checkdir autoload/SpaceVim/api/vim + _checkdir autoload/SpaceVim/api/data + _checkdir autoload/SpaceVim/plugins + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/api/vim/compatible.vim + _detact autoload/SpaceVim/api/vim/highlight.vim + _detact autoload/SpaceVim/api/data/string.vim + _detact autoload/SpaceVim/plugins/iedit.vim + _checkdir autoload/plugin + cat < autoload/plugin/iedit.vim +"============================================================================= +" iedit.vim --- multiple cursor support for neovim and vim +" Copyright (c) 2016-2022 Shidong Wang & Contributors +" Author: Shidong Wang < wsdjeg@outlook.com > +" URL: https://github.com/wsdjeg/iedit.vim +" License: MIT license +"============================================================================= + +"" +" @section Introduction, intro +" @stylized iedit.vim +" @library +" @order intro version dicts functions exceptions layers api faq +" multiple cursor in vim, written in pure vim script for MacVim, gvim and vim version +" 8.0+. +" + +command! -nargs=0 Iedit call SpaceVim#plugins#iedit#start() +EOT + _detact LICENSE + _default_readme "iedit.vim" "multiple cussor support for Vim/Neovim" + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update" + git remote add wsdjeg_vim_todo https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/iedit.vim.git + git push wsdjeg_vim_todo master + cd - + rm -rf detach/$1 + exit 0 + ;; + vim-todo) + git clone https://github.com/wsdjeg/vim-todo.git detach/$1 + cd detach/$1 + _checkdir syntax/ + _detact syntax/SpaceVimTodoManager.vim + _checkdir autoload/SpaceVim/api/vim + _checkdir autoload/SpaceVim/api/data + _checkdir autoload/SpaceVim/plugins + _checkdir autoload/SpaceVim/mapping + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/api/logger.vim + _detact autoload/SpaceVim/api/job.vim + _detact autoload/SpaceVim/api/system.vim + _detact autoload/SpaceVim/api/data/string.vim + _detact autoload/SpaceVim/api/file.vim + _detact autoload/SpaceVim/api/vim/buffer.vim + _detact autoload/SpaceVim/api/vim/regex.vim + _detact autoload/SpaceVim/api/vim/compatible.vim + _detact autoload/SpaceVim/logger.vim + _detact autoload/SpaceVim/mapping/search.vim + _detact autoload/SpaceVim/plugins/todo.vim + _checkdir plugin + cat < plugin/todo.vim +"============================================================================= +" todo.vim --- todo manager for SpaceVim +" Copyright (c) 2016-2023 Wang Shidong & Contributors +" Author: Wang Shidong < wsdjeg@outlook.com > +" URL: https://spacevim.org +" License: GPLv3 +"============================================================================= + +command! OpenTodo call todo#open() +EOT + _detact LICENSE + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update" + git remote add wsdjeg_vim_todo https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/vim-todo.git + git push wsdjeg_vim_todo master + cd - + rm -rf detach/$1 + exit 0 + ;; + vim-chat) + git clone https://github.com/wsdjeg/vim-chat.git detach/$1 + cd detach/$1 + _detact LICENSE + _checkdir autoload/SpaceVim/api + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/api/job.vim + _checkdir autoload/chat/ + _detact_bundle vim-chat autoload/chat.vim + _detact_bundle vim-chat autoload/chat/gitter.vim + _detact_bundle vim-chat autoload/chat/logger.vim + _detact_bundle vim-chat autoload/chat/notify.vim + _detact_bundle vim-chat autoload/chat/qq.vim + _detact_bundle vim-chat autoload/chat/weixin.vim + _checkdir doc/ + _detact_bundle vim-chat doc/vim-chat.txt + _checkdir syntax/ + _detact_bundle vim-chat syntax/vimchat.vim + _detact_bundle vim-chat addon-info.json + _detact_bundle vim-chat README.md + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_vim_chat https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/vim-chat.git + git push wsdjeg_vim_chat master + cd - + rm -rf detach/$1 + exit 0 + ;; + JavaUnit.vim) + git clone https://github.com/wsdjeg/JavaUnit.vim.git detach/$1 + cd detach/$1 + # _detact LICENSE + # _checkdir autoload/SpaceVim/api + # _detact autoload/SpaceVim/api.vim + # _detact autoload/SpaceVim/api/job.vim + # _checkdir autoload/chat/ + _detact_bundle JavaUnit.vim README.md + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_javaunit_vim https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/JavaUnit.vim.git + git push wsdjeg_javaunit_vim master + cd - + rm -rf detach/$1 + exit 0 + ;; + git.vim) + git clone https://github.com/wsdjeg/git.vim.git detach/$1 + cd detach/$1 + _checkdir autoload/SpaceVim/api + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/api/job.vim + _detact_bundle git.vim LICENSE + _detact_bundle git.vim README.md + _detact_bundle git.vim addon-info.json + _checkdir autoload/git/branch + _detact_bundle git.vim autoload/git.vim + _detact_bundle git.vim autoload/git/add.vim + _detact_bundle git.vim autoload/git/blame.vim + _detact_bundle git.vim autoload/git/branch.vim + _detact_bundle git.vim autoload/git/branch/manager.vim + _detact_bundle git.vim autoload/git/checkout.vim + _detact_bundle git.vim autoload/git/cherry_pick.vim + _detact_bundle git.vim autoload/git/clean.vim + _detact_bundle git.vim autoload/git/commit.vim + _detact_bundle git.vim autoload/git/config.vim + _detact_bundle git.vim autoload/git/diff.vim + _detact_bundle git.vim autoload/git/fetch.vim + _detact_bundle git.vim autoload/git/log.vim + _detact_bundle git.vim autoload/git/logger.vim + _detact_bundle git.vim autoload/git/merge.vim + _detact_bundle git.vim autoload/git/mv.vim + _detact_bundle git.vim autoload/git/pull.vim + _detact_bundle git.vim autoload/git/push.vim + _detact_bundle git.vim autoload/git/rebase.vim + _detact_bundle git.vim autoload/git/reflog.vim + _detact_bundle git.vim autoload/git/remote.vim + _detact_bundle git.vim autoload/git/reset.vim + _detact_bundle git.vim autoload/git/rm.vim + _detact_bundle git.vim autoload/git/stash.vim + _detact_bundle git.vim autoload/git/status.vim + _checkdir doc + _detact_bundle git.vim doc/git.txt + _checkdir plugin + _detact_bundle git.vim plugin/git.vim + _checkdir syntax + _detact_bundle git.vim syntax/git-blame.vim + _detact_bundle git.vim syntax/git-commit.vim + _detact_bundle git.vim syntax/git-config.vim + _detact_bundle git.vim syntax/git-log.vim + _detact_bundle git.vim syntax/git-rebase.vim + _detact_bundle git.vim syntax/git-reflog.vim + _checkdir test + _detact_bundle git.vim test/vimrc + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_git_vim https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/git.vim.git + git push wsdjeg_git_vim master + cd - + rm -rf detach/$1 + exit 0 + ;; + vim-cheat) + git clone https://github.com/wsdjeg/vim-cheat.git detach/$1 + cd detach/$1 + _checkdir plugin/ + _checkdir autoload/ + _detact LICENSE + _detact_bundle vim-cheat autoload/cheat.vim + _detact_bundle vim-cheat plugin/cheat.vim + _detact_bundle vim-cheat README.md + _detact_bundle vim-cheat .travis.yml + _detact_bundle vim-cheat .vintrc.yaml + _checkdir doc/ + _detact_bundle vim-cheat doc/vim-cheat.txt + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_vim_cheat https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/vim-cheat.git + git push wsdjeg_vim_cheat master + cd - + rm -rf detach/$1 + exit 0 + ;; + xmake.vim) + git clone https://github.com/wsdjeg/xmake.vim.git detach/$1 + cd detach/$1 + _checkdir plugin/ + _detact_bundle xmake.vim plugin/xmake.vim + _detact_bundle xmake.vim plugin/xmgen.py + _checkdir autoload/ + _detact_bundle xmake.vim autoload/xmake.vim + _detact_bundle xmake.vim autoload/spy.lua + _detact LICENSE + _default_readme "xmake.vim" "xmake support for neovim/vim" + _checkdir autoload/xmake/ + _detact_bundle xmake.vim autoload/xmake/log.vim + _checkdir doc/ + _detact_bundle xmake.vim doc/xmake.txt + _checkdir UltiSnips/ + _detact_bundle xmake.vim UltiSnips/lua.snippets + _checkdir rplugin/python3/deoplete/sources/docs/ + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/xmake.py + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_defines + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_defines + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_deps + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_files + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_headers + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_includedirs + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_linkdirs + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_links + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/add_subdirs + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/is_os + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/is_plat + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_basename + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_headerdir + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_kind + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_languages + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_objectdir + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_optimize + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_project + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_strip + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_symbols + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_targetdir + _detact_bundle xmake.vim rplugin/python3/deoplete/sources/docs/set_warnings + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_xmake_vim https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/xmake.vim.git + git push wsdjeg_xmake_vim master + cd - + rm -rf detach/$1 + exit 0 + ;; + scrollbar.vim) + git clone https://github.com/wsdjeg/scrollbar.vim.git detach/$1 + cd detach/$1 + _checkdir autoload/SpaceVim/api/ + _checkdir autoload/SpaceVim/api/vim + _detact autoload/SpaceVim/api.vim + _detact autoload/SpaceVim/api/vim.vim + _detact autoload/SpaceVim/api/vim/buffer.vim + _detact autoload/SpaceVim/api/vim/window.vim + _checkdir autoload/SpaceVim/plugins/ + _detact autoload/SpaceVim/plugins/scrollbar.vim + _detact LICENSE + _default_readme "scrollbar.vim" "floating scrollbar support for neovim/vim[wip]" + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_scrollbar https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/scrollbar.vim.git + git push wsdjeg_scrollbar master + cd - + rm -rf detach/$1 + exit 0 + ;; + github.vim) + git clone https://github.com/wsdjeg/GitHub.vim.git detach/$1 + cd detach/$1 + _checkdir plugin/ + _checkdir autoload/ + _detact LICENSE + _detact_bundle github.vim autoload/github.vim + _detact_bundle github.vim plugin/github.vim + _default_readme "GitHub.vim" "GitHub API support for neovim/vim[wip]" + _checkdir doc/ + _detact_bundle github doc/github.txt + git add . + git config user.email "wsdjeg@qq.com" + git config user.name "SpaceVimBot" + git commit -m "Auto Update based on https://github.com/SpaceVim/SpaceVim/commit/${GITHUB_SHA}" + git remote add wsdjeg_github_vim https://SpaceVimBot:${BOTSECRET}@github.com/wsdjeg/GitHub.vim.git + git push wsdjeg_github_vim master + cd - + rm -rf detach/$1 + exit 0 + ;; + spacevim-theme) + exit 0 + esac +} + +main $@ diff --git a/.ci/install/linux.sh b/.ci/install/linux.sh new file mode 100644 index 000000000..2551a49de --- /dev/null +++ b/.ci/install/linux.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +# Fail on unset variables and command errors +set -ue -o pipefail + +# Prevent commands misbehaving due to locale differences +export LC_ALL=C + +install_vim() { + local URL=https://github.com/vim/vim + local tag=$1 + local ext=$([[ $tag == "nightly" ]] && echo "" || echo "-b $tag") + local tmp="$(mktemp -d)" + local out="${DEPS}/_vim/$tag" + mkdir -p $out + git clone --depth 1 --single-branch $ext $URL $tmp + cd $tmp + + # Apply Vim patch v8.0.1635 to fix build with Python. + if grep -q _POSIX_THREADS src/if_python3.c; then + sed -i '/#ifdef _POSIX_THREADS/,+2 d' src/if_python3.c + fi + + ./configure \ + --with-features=huge \ + --enable-pythoninterp \ + --enable-python3interp \ + --enable-luainterp \ + --prefix=${out} + make + make install +} + +install_nvim() { + local URL=https://github.com/neovim/neovim + local tag=$1 + local tmp="$(mktemp -d)" + local out="${DEPS}/_neovim/$tag" + mkdir -p $out + curl -o $tmp/nvim-linux64.tar.gz -L "https://github.com/neovim/neovim/releases/download/$tag/nvim-linux64.tar.gz" + tar -xzvf $tmp/nvim-linux64.tar.gz -C $tmp + cp -r $tmp/nvim-linux64/* $out + chmod +x $out/bin/nvim + # fix ModuleNotFoundError: No module named 'setuptools' + python3 -m pip install -U setuptools + python3 -m pip install pynvim +} + +install() { + local vim=$1 + local tag=$2 + + if [[ -d "${DEPS}/_$vim/$tag/bin" ]]; then + echo "Use a cached version '$HOME/_$vim/$tag'." + return + fi + if [[ $vim == "nvim" ]]; then + install_nvim $tag + else + install_vim $tag + fi +} + +install $@ diff --git a/.ci/install/windows.ps1 b/.ci/install/windows.ps1 new file mode 100644 index 000000000..df50f0810 --- /dev/null +++ b/.ci/install/windows.ps1 @@ -0,0 +1,63 @@ +function install_vim($ver) +{ + if ($ver -eq "nightly") + { + $url = 'https://github.com/vim/vim-win32-installer/releases/download/v8.2.3361/gvim_8.2.3361_x86.zip' + } + else + { + $ver = $ver -replace "^v", "" + $url = 'https://github.com/vim/vim-win32-installer/releases/download/v' + $ver + '/gvim_' + $ver + '_x86.zip' + } + $Env:VIM_BIN = $Env:DEPS + '\vim\vim82\vim.exe' + $zip = $Env:DEPS + '\vim.zip' + echo "download: $url" + echo "path: $zip" + (New-Object Net.WebClient).DownloadFile($url, $zip) + [Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') > $null + [System.IO.Compression.ZipFile]::ExtractToDirectory($zip, $Env:DEPS) +} + +function install_nvim($ver) +{ + if ($ver -eq "nightly") + { + $url = 'https://github.com/neovim/neovim/releases/download/nightly/nvim-win64.zip' + } + else + { + $url = 'https://github.com/neovim/neovim/releases/download/' + $ver + '/nvim-win64.zip' + } + $zip = $Env:DEPS + '\nvim.zip' + (New-Object Net.WebClient).DownloadFile($url, $zip) + [Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') > $null + [System.IO.Compression.ZipFile]::ExtractToDirectory($zip, $Env:DEPS) + if (Test-Path '$DEPS\Neovim\bin\nvim.exe') { + $Env:VIM_BIN = $Env:DEPS + '\Neovim\bin\nvim.exe' + }else{ + $Env:VIM_BIN = $Env:DEPS + '\nvim-win64\bin\nvim.exe' + + } + echo "VIM_BIN is: $Env:VIM_BIN" +} + +function download_lua() +{ + $url = 'https://github.com/wsdjeg/vim-galore-zh_cn/releases/download/downdows/lua53.zip' + $zip = $Env:DEPS + '\lua53.zip' + (New-Object Net.WebClient).DownloadFile($url, $zip) + [Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') > $null + [System.IO.Compression.ZipFile]::ExtractToDirectory($zip, $Env:DEPS + '\vim\vim82') +} + +if ($Env:VIM_BIN.StartsWith("nvim")) +{ + mkdir $Env:DEPS + install_nvim $Env:VIM_TAG +} +elseif ($Env:VIM_BIN.StartsWith("vim")) +{ + mkdir $Env:DEPS + install_vim $Env:VIM_TAG + download_lua +} diff --git a/.ci/push_baidu.sh b/.ci/push_baidu.sh new file mode 100644 index 000000000..bf0d6f32b --- /dev/null +++ b/.ci/push_baidu.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +date_en=`cat docs/_site/sitemap.xml` +date_cn=`cat docs/_site/cn/sitemap.xml` +echo $date_en | grep -oP 'https://spacevim[^\<]*' > urls_en.txt +echo $date_cn | grep -oP 'https://spacevim[^\<]*' > urls_cn.txt + + +curl -H 'Content-Type:text/plain' --data-binary @urls_en.txt "http://data.zz.baidu.com/urls?site=spacevim.org&token=4MYgdYW7QHIaM01P" +curl -H 'Content-Type:text/plain' --data-binary @urls_cn.txt "http://data.zz.baidu.com/urls?site=spacevim.org&token=4MYgdYW7QHIaM01P" diff --git a/.ci/script.sh b/.ci/script.sh new file mode 100644 index 000000000..3b36ef20b --- /dev/null +++ b/.ci/script.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +set -ex +export TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST} +if [ "$LINT" = "vimlint" ]; then + if [[ -f build_log ]]; then + rm build_log + fi + for file in $(git ls-files | grep SpaceVim.*.vim); + do + /tmp/vimlint/bin/vimlint.sh -l /tmp/vimlint -p /tmp/vimlparser $file >> build_log 2>&1; + done + if [[ -s build_log ]]; then + exit 2 + fi +elif [ "$LINT" = "vimlint-errors" ]; then + if [[ -f build_log ]]; then + rm build_log + fi + for file in $(git ls-files | grep SpaceVim.*.vim); + do + /tmp/vimlint/bin/vimlint.sh -E -l /tmp/vimlint -p /tmp/vimlparser $file >> build_log 2>&1; + done + if [[ -s build_log ]]; then + exit 2 + fi +elif [ "$LINT" = "file-encoding" ]; then + if [[ -f build_log ]]; then + rm build_log + fi + for file in $(git diff --name-only HEAD master); + do + # get the encoding of a file, based on: + # https://superuser.com/a/351658/618193 + # It should be -b instead of -bi + encoding=`file -b --mime-encoding $file` + if [ $encoding != "utf-8" ] && [ $encoding != "us-ascii" ]; + then + echo $file " " $encoding >> build_log + fi + done + if [[ -s build_log ]]; then + exit 2 + fi +elif [ "$LINT" = "vint" ]; then + if [[ -f build_log ]]; then + rm build_log + fi + for file in $(git ls-files | grep SpaceVim.*.vim); + do + vint --enable-neovim $file >> build_log 2>&1; + done + if [[ -s build_log ]]; then + exit 2 + fi +elif [ "$LINT" = "vint-errors" ]; then + if [[ -f build_log ]]; then + rm build_log + fi + for file in $(git ls-files | grep SpaceVim.*.vim); + do + vint --enable-neovim --error $file >> build_log 2>&1; + done + if [[ -s build_log ]]; then + exit 2 + fi +elif [ "$LINT" = "vader" ]; then + if [ "$VIM_BIN" = "nvim" ]; then + export PATH="${DEPS}/_neovim/${VIM_TAG}/bin:${PATH}" + export VIM="${DEPS}/_neovim/${VIM_TAG}/share/nvim/runtime" + else + export PATH="${DEPS}/_vim/${VIM_TAG}/bin:${PATH}" + export VIM="${DEPS}/_vim/${VIM_TAG}/share/vim" + fi + + echo "\$PATH: \"${PATH}\"" + echo "\$VIM: \"${VIM}\"" + echo "================= ${VIM_BIN} version ======================" + $VIM_BIN --version + pip install covimerage + pip install codecov + python -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);' + make test_coverage + covimerage -vv xml --omit 'build/*' + codecov -X search gcov pycov -f coverage.xml +elif [ "$LINT" = "jekyll" ]; then + .ci/build-production +fi +set +x diff --git a/.ci/update_mirror.sh b/.ci/update_mirror.sh new file mode 100644 index 000000000..c7ed94075 --- /dev/null +++ b/.ci/update_mirror.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +usage () { + echo ".ci/update_remote.sh [option] [target]" +} + +push_gitee() +{ + git remote add gitee https://SpaceVimBot:${BOTSECRET}@gitee.com/spacevim/SpaceVim.git + git push gitee master -f +} + +push_gitlab() +{ + git remote add gitlab https://SpaceVimBot:${BOTSECRET}@gitlab.com/SpaceVim/SpaceVim.git + git push gitlab master -f +} + +push_coding() +{ + git remote add coding https://spacevim%40outlook.com:${CODINGBOTSECRET}@e.coding.net/spacevim/SpaceVim.git + git push coding master -f +} + +main () { + case $1 in + --help|-h) + usage + exit 0 + ;; + gitee) + push_gitee + exit 0 + ;; + gitlab) + push_gitlab + exit 0 + ;; + coding) + push_coding + exit 0 + ;; + esac +} + +main $@ diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..1d810c1f0 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,22 @@ +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# @wsdjeg will be requested for review when someone opens a +# pull request. +# Just watching this repo, disable duplicate message +# * @wsdjeg + +# lang#julia layer +autoload/SpaceVim/layers/lang/julia.vim @jingpengw +docs/layers/lang/julia.md @jingpengw +docs/cn/layers/lang/julia.md @jingpengw + +# lang#javascript layer +autoload/SpaceVim/layers/lang/javascript.vim @zhujinxuan @S1ngS1ng @chemzqm +docs/layers/lang/javascript.md @zhujinxuan @S1ngS1ng @chemzqm +docs/cn/layers/lang/javascript.md @zhujinxuan @S1ngS1ng @chemzqm + + +# lang#erlang layer +autoload/SpaceVim/layers/lang/erlang.vim @suzuiyuegjy +docs/layers/lang/erlang.md @suzuiyuegjy +docs/cn/layers/lang/erlang.md @suzuiyuegjy diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..cfe300685 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: https://spacevim.org/sponsors/ diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 000000000..18d2a186e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,29 @@ +name: Bug Report +description: File a bug report +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior. + description: What is the expected behavior? + validations: + required: true + - type: textarea + id: reproduce-step + attributes: + label: The reproduce ways from Vim starting. + description: The reproduce ways are needed to debug. + placeholder: Tell us what you see! + value: "A bug happened!" + validations: + required: true + - type: textarea + id: SPDebugInfo + attributes: + label: Output of the `:SPDebugInfo!` + description: Please copy and paste the result of :SPDebugInfo! command. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..505d0a56d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Community Support + url: https://app.element.io/#/room/#spacevim:matrix.org + about: Please ask and answer questions here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..d46338352 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,28 @@ +name: Feature Request +description: request an new feature +labels: ["feature request"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature request! + - type: textarea + id: feature-description + attributes: + label: Is your feature request related to a problem? Please describe.. + description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + validations: + required: true + - type: textarea + id: feature-solution + attributes: + label: Describe the solution you'd like. + description: A clear and concise description of what you want to happen. + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Additional context + description: Add any other context or screenshots about the feature request here. + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..d56345420 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,13 @@ +### PR Prelude + +Thank you for working on SpaceVim! :) + +Please complete these steps and check these boxes before filing your PR: + +- [ ] I have read and understood SpaceVim's [CONTRIBUTING](https://github.com/SpaceVim/SpaceVim/blob/master/CONTRIBUTING.md) document. +- [ ] I have read and understood SpaceVim's [CODE_OF_CONDUCT](https://github.com/SpaceVim/SpaceVim/blob/master/CODE_OF_CONDUCT.md) document. +- [ ] I understand my PR may be closed if it becomes obvious I didn't actually perform all of these steps. + +### Why this change is necessary and useful? + +[Please explain **in detail** why the changes in this PR are needed.] diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md new file mode 100644 index 000000000..1a6da8a33 --- /dev/null +++ b/.github/SUPPORT.md @@ -0,0 +1,15 @@ +SpaceVim is an open source project. +Currently, this project is maintained by [@wsdjeg](https://github.com/wsdjeg), +If you use SpaceVim in your daily work and feel that it has made your life easier, +please consider supporting SpaceVim by: + +- [Become a backer on opencollective](https://opencollective.com/spacevim) +- [Become a backer on Bountysource](https://salt.bountysource.com/teams/spacevim) + +Also, you can buy me a coffee via ko-fi.com or wechat: + +Buy Me a Coffee at ko-fi.com + +| wechat | alipay | +| ------------------------------------------------------------------------ | -------------------------------------------------------------------------- | +| | | diff --git a/.github/workflows/async.yml b/.github/workflows/async.yml new file mode 100644 index 000000000..232b14db9 --- /dev/null +++ b/.github/workflows/async.yml @@ -0,0 +1,18 @@ +name: Detach Plugins + +on: [push] + +jobs: + check: + strategy: + fail-fast: false + matrix: + detachPlugin: ["flygrep", "dein-ui", "vim-todo", "iedit", "scrollbar.vim", "vim-chat", "vim-cheat", "xmake.vim", "github.vim", "JavaUnit.vim", "git.vim"] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@master + - name: Detach ${{ matrix.detachPlugin }} + env: + BOTSECRET: ${{ secrets.BOTSECRET_GITHUB }} + run: .ci/detach_plugin.sh ${{ matrix.detachPlugin }} diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 000000000..182efc125 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,201 @@ +name: test + +on: [push, pull_request] + +jobs: + Linux: + strategy: + fail-fast: false + matrix: + include: + - vimbin: vim + vimtag: v7.4.052 + disable_es: true + - vimbin: vim + vimtag: v7.4.629 + disable_es: true + - vimbin: vim + vimtag: v7.4.1689 + disable_es: true + - vimbin: vim + vimtag: v8.0.0027 + disable_es: true + - vimbin: vim + vimtag: v8.0.0183 + disable_es: true + - vimbin: vim + vimtag: v8.0.0184 + - vimbin: vim + vimtag: v8.0.1453 + - vimbin: vim + vimtag: v8.1.2269 + - vimbin: vim + vimtag: v8.2.2434 + - vimbin: vim + vimtag: v8.2.3995 + - vimbin: vim + vimtag: nightly + - vimbin: nvim + vimtag: nightly + - vimbin: nvim + vimtag: v0.9.1 + - vimbin: nvim + vimtag: v0.9.0 + - vimbin: nvim + vimtag: v0.8.3 + - vimbin: nvim + vimtag: v0.8.2 + - vimbin: nvim + vimtag: v0.8.1 + - vimbin: nvim + vimtag: v0.8.0 + - vimbin: nvim + vimtag: v0.7.2 + - vimbin: nvim + vimtag: v0.7.0 + - vimbin: nvim + vimtag: v0.6.1 + - vimbin: nvim + vimtag: v0.6.0 + - vimbin: nvim + vimtag: v0.5.1 + - vimbin: nvim + vimtag: v0.5.0 + - vimbin: nvim + vimtag: v0.4.4 + - vimbin: nvim + vimtag: v0.4.3 + - vimbin: nvim + vimtag: v0.4.2 + - vimbin: nvim + vimtag: v0.4.0 + - vimbin: nvim + vimtag: v0.3.8 + runs-on: ubuntu-20.04 + env: + VIM_BIN: ${{ matrix.vimbin }} + VIM_TAG: ${{ matrix.vimtag }} + DEPS: /home/runner/work/SpaceVim/deps + DISABLE_ES: ${{ matrix.disable_es }} + steps: + - name: Checkout + uses: actions/checkout@master + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install ninja-build gettext libtool libtool-bin autoconf automake cmake g++ pkg-config unzip curl lua5.2 liblua5.2-dev + - name: Install ${{ matrix.vimbin }} ${{ matrix.vimtag }} + run: | + .ci/install/linux.sh $VIM_BIN $VIM_TAG + - name: Run test + run: | + if [ "$VIM_BIN" = "nvim" ]; then + export PATH="${DEPS}/_neovim/${VIM_TAG}/bin:${PATH}" + export VIM="${DEPS}/_neovim/${VIM_TAG}/share/nvim/runtime" + export VIM_Es="--headless" + else + export PATH="${DEPS}/_vim/${VIM_TAG}/bin:${PATH}" + export VIM="${DEPS}/_vim/${VIM_TAG}/share/vim" + if [ "$DISABLE_ES" = "true" ]; then + export VIM_Es="" + else + export VIM_Es="-Es" + fi + fi + export PATH="/home/runner/.local/bin:${PATH}" + echo "\$PATH: \"${PATH}\"" + echo "\$VIM: \"${VIM}\"" + echo "================= ${VIM_BIN} version ======================" + $VIM_BIN --version + pip3 install --upgrade "pip < 21.0" + pip3 install covimerage virtualenv codecov + make test_coverage + covimerage -vv xml --omit 'build/*' --omit 'bundle/*' + codecov -X search gcov pycov -f coverage.xml + Windows: + strategy: + fail-fast: false + matrix: + include: + - vimbin: vim + vimtag: nightly + - vimbin: vim + vimtag: v7.4.1185 + - vimbin: vim + vimtag: v7.4.1689 + - vimbin: vim + vimtag: v8.0.0027 + - vimbin: vim + vimtag: v8.0.1453 + - vimbin: vim + vimtag: v8.1.2269 + - vimbin: vim + vimtag: v8.2.2434 + - vimbin: vim + vimtag: v8.2.3995 + - vimbin: nvim + vimtag: nightly + - vimbin: nvim + vimtag: v0.9.1 + - vimbin: nvim + vimtag: v0.9.0 + - vimbin: nvim + vimtag: v0.8.3 + - vimbin: nvim + vimtag: v0.8.2 + - vimbin: nvim + vimtag: v0.8.1 + - vimbin: nvim + vimtag: v0.8.0 + - vimbin: nvim + vimtag: v0.7.2 + - vimbin: nvim + vimtag: v0.7.0 + - vimbin: nvim + vimtag: v0.6.1 + - vimbin: nvim + vimtag: v0.6.0 + - vimbin: nvim + vimtag: v0.5.1 + - vimbin: nvim + vimtag: v0.5.0 + - vimbin: nvim + vimtag: v0.4.4 + - vimbin: nvim + vimtag: v0.4.3 + - vimbin: nvim + vimtag: v0.4.2 + - vimbin: nvim + vimtag: v0.3.8 + runs-on: windows-latest + env: + VIM_BIN: ${{ matrix.vimbin }} + VIM_TAG: ${{ matrix.vimtag }} + DEPS: C:\deps + steps: + - name: Checkout + uses: actions/checkout@master + - name: Install ${{ matrix.vimbin }} ${{ matrix.vimtag }} + run: | + .ci/install/windows.ps1 $VIM_BIN $VIM_TAG + - name: Run test + run: | + if ($Env:VIM_BIN.StartsWith("nvim")) + { + if (Test-Path $env:DEPS\Neovim\bin ) { + $Env:PATH = $Env:DEPS + '\Neovim\bin\;' + $Env:PATH + $Env:VIM = $Env:DEPS + '\Neovim\share\nvim' + }else{ + $Env:PATH = $Env:DEPS + '\nvim-win64\bin\;' + $Env:PATH + $Env:VIM = $Env:DEPS + '\nvim-win64\share\nvim' + } + $Env:VIM_Es = '--headless' + } + elseif ($Env:VIM_BIN.StartsWith("vim")) + { + $Env:PATH = $Env:DEPS + '\vim\vim82\;' + $Env:PATH + $Env:VIM = $Env:DEPS + '\vim' + } + echo $Env:PATH + echo $Env:VIM + make test diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 000000000..af3106f0b --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,34 @@ +name: docker + +on: + push: + branches: + - 'master' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: docker/Dockerfile + push: true + tags: spacevim/spacevim:latest diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..bf4a07708 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,13 @@ +name: reviewdog +on: [pull_request] +jobs: + vint: + name: runner / vint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: vint + uses: reviewdog/action-vint@v1 + with: + github_token: ${{ secrets.github_token }} + reporter: github-pr-review # Change reporter. diff --git a/.github/workflows/remote.yml b/.github/workflows/remote.yml new file mode 100644 index 000000000..cb381e7da --- /dev/null +++ b/.github/workflows/remote.yml @@ -0,0 +1,23 @@ +name: mirror + +on: [push] + +jobs: + check: + strategy: + fail-fast: false + matrix: + mirror: ["gitee", "coding", "gitlab"] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@master + with: + fetch-depth: 0 + - name: Push to ${{ matrix.mirror }} + env: + BOTSECRET: ${{ secrets.BOTSECRET }} + BOTSECRET_GITHUB: ${{ secrets.BOTSECRET_GITHUB }} + CODINGBOTSECRET: ${{ secrets.CODINGBOTSECRET }} + run: .ci/update_mirror.sh ${{ matrix.mirror }} + diff --git a/README.md b/README.md index 097a17ad4..d2a9c045c 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,29 @@ -# SpaceVim +

+ + SpaceVim + +

-[![twitter](https://img.spacevim.org/twitter.svg)](https://twitter.com/SpaceVim) +[Quick Start Guide](https://spacevim.org/quick-start-guide/) \| +[FAQ](https://spacevim.org/faq/) -SpaceVim is a modular configuration of Vim and Neovim. -It's inspired by spacemacs. It manages collections of plugins in layers, -which help to collect related packages together to provide features. -This approach helps keep the configuration organized and reduces -overhead for the user by keeping them from having to think about -what packages to install. +[![build](https://img.shields.io/github/actions/workflow/status/SpaceVim/SpaceVim/check.yml?branch=master)](https://github.com/SpaceVim/SpaceVim/actions/workflows/check.yml?query=branch%3Amaster) +[![Codecov coverage](https://img.shields.io/codecov/c/github/SpaceVim/SpaceVim.svg)](https://codecov.io/gh/SpaceVim/SpaceVim) +[![GPLv3 License](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://github.com/SpaceVim/SpaceVim/blob/master/LICENSE) +[![Docker Pulls](https://img.shields.io/docker/pulls/spacevim/spacevim)](https://hub.docker.com/r/spacevim/spacevim) -- [Quick start guide](https://spacevim.org/quick-start-guide/): installation, configuration, and learning resources for SpaceVim -- [Documentation](https://spacevim.org/documentation/): the primary official documentation of SpaceVim -- [Available layers](https://spacevim.org/layers/): a list of available layers which can be used in SpaceVim +SpaceVim is a (neo)vim configuration inspired by spacemacs. -## Community +## Features -- English: [https://spacevim.org/community/](https://spacevim.org/community/) -- Chinese: [https://spacevim.org/cn/community/](https://spacevim.org/cn/community/) +- **Modularization:** plugins and functions are organized in [layers](https://spacevim.org/layers/). +- **Compatible api:** a series of [compatible APIs](https://spacevim.org/api/) for Vim/Neovim. +- **Great documentation:** online [documentation](https://spacevim.org/documentation/) and `:h SpaceVim`. +- **Better experience:** [Use lua to implement core plugins](https://spacevim.org/use-lua-to-reimplement-core-plugins/) +- **Beautiful UI:** you'll love the awesome UI and its useful features. +- **Mnemonic key bindings:** key binding guide will be displayed automatically +- **Fast boot time:** Lazy-load 90% of plugins with [dein.vim](https://github.com/Shougo/dein.vim) +- **Lower the risk of RSI:** by heavily using the space bar instead of modifiers. +- **Consistent experience:** consistent experience between terminal and gui -## Development - -- English: [https://spacevim.org/development/](https://spacevim.org/development/) -- Chinese: [https://spacevim.org/cn/development/](https://spacevim.org/cn/development/) diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..808a6d9da --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,41 @@ +FROM ubuntu:latest + +MAINTAINER Shidong Wang + +RUN apt update && \ + apt install -y \ + neovim \ + curl \ + python3-dev \ + python3-pynvim \ + lua5.3 \ + git \ + universal-ctags \ + silversearcher-ag && \ + apt clean + +ENV HOME /home/spacevim + +RUN groupdel users \ + && groupadd -r spacevim \ + && useradd --create-home --home-dir $HOME \ + -r -g spacevim \ + spacevim + +USER spacevim + +WORKDIR $HOME + +ENV PYTHON3_HOST_PROG "/usr/bin/python3" + +RUN mkdir -p $HOME/.config $HOME/.SpaceVim.d + +RUN curl https://raw.githubusercontent.com/SpaceVim/SpaceVim/master/docker/init.toml > $HOME/.SpaceVim.d/init.toml + +RUN curl -sLf https://spacevim.org/install.sh | bash + +RUN nvim --headless +'call dein#install#_update([], "install", v:false)' +qall + +RUN rm $HOME/.SpaceVim.d/init.toml + +ENTRYPOINT nvim diff --git a/docker/Makefile b/docker/Makefile new file mode 100644 index 000000000..def3653f1 --- /dev/null +++ b/docker/Makefile @@ -0,0 +1,13 @@ +HAVE_DOCKER := $(shell which docker 2>/dev/null) +HAVE_PODMAN := $(shell which podman 2>/dev/null) + +build: +ifdef HAVE_DOCKER + docker build -t nvim -f Dockerfile . +else +ifdef HAVE_PODMAN + podman build -t nvim -f Dockerfile . +else + $(error "No docker or podman in $(PATH). Check if one was installed.") +endif +endif diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..5113256a5 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,43 @@ +## SpaceVim in DockerHub + +![Docker Automated build](https://img.shields.io/docker/automated/spacevim/spacevim) +![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/spacevim/spacevim?sort=date) +[![Docker Pulls](https://img.shields.io/docker/pulls/spacevim/spacevim)](https://hub.docker.com/r/spacevim/spacevim) + +This Dockerfile builds neovim `HEAD` and installs the latest available version of SpaceVim. You might want to use this for several reasons: + +- Have a consistent version of Neovim and SpaceVim as long as the machine supports Docker. +- Try SpaceVim without modifying your current Vim/Neovim configuration. +- Try the latest Neovim with SpaceVim. +- Try SpaceVim with a newer version of Python. +- Debug SpaceVim configurations. e.g. when posting a bug report if you can reproduce it in this container then there's a higher chance that it is a true bug and not just an issue with your machine. + +### FAQ + +Isn't Docker stateless? Won't I have to reinstall all plugins each time I launch the container? + +- During the build we call `dein#install()` so all plugins are installed and frozen. Your custom configurations can be added as an additional build step using the Docker `COPY` command. + +### Build + +You can build using the supplied `Makefile`: + + make build + +or call the command manually using: + + docker build -t nvim -f Dockerfile . + +### Run + +You can run the container using: + + docker run -it nvim + +but that isn't terribly useful since changes made inside the container won't be visible outside. More useful is mounting the current working directory inside the container: + + docker run -it -v $(pwd):/home/spacevim/src nvim + +Even better is an alias `dnvim` which will do this automatically: + + alias dnvim='docker run -it -v $(pwd):/home/spacevim/src nvim' diff --git a/docker/init.toml b/docker/init.toml new file mode 100644 index 000000000..9103448bf --- /dev/null +++ b/docker/init.toml @@ -0,0 +1,232 @@ +#============================================================================= +# init.toml --- Docker config temp file +# Copyright (c) 2016-2023 Wang Shidong & Contributors +# Author: Wang Shidong < wsdjeg@outlook.com > +# URL: https://spacevim.org +#============================================================================= + +# SpaceVim options {{{ +[options] + # vimcompatible = true + # enable_language_specific_leader = false +# }}} + +## -- SpaceVim layer list start +[[layers]] + name = "VersionControl" + +[[layers]] + name = "autocomplete" + +[[layers]] + name = "chat" + +[[layers]] + name = "checkers" + +[[layers]] + name = "chinese" + +[[layers]] + name = "colorscheme" + +[[layers]] + name = "core#banner" + +[[layers]] + name = "core#statusline" + +[[layers]] + name = "core#tabline" + +[[layers]] + name = "core" + +[[layers]] + name = "cscope" + +[[layers]] + name = "ctrlp" + +[[layers]] + name = "debug" + +[[layers]] + name = "default" + +[[layers]] + name = "denite" + +[[layers]] + name = "edit" + +[[layers]] + name = "floobits" + +[[layers]] + name = "format" + +[[layers]] + name = "fzf" + +[[layers]] + name = "git" + +[[layers]] + name = "github" + +[[layers]] + name = "japanese" + +[[layers]] + name = "lang#WebAssembly" + +[[layers]] + name = "lang#agda" + +[[layers]] + name = "lang#asciidoc" + +[[layers]] + name = "lang#autohotkey" + +[[layers]] + name = "lang#c" + +[[layers]] + name = "lang#clojure" + +[[layers]] + name = "lang#csharp" + +[[layers]] + name = "lang#dart" + +[[layers]] + name = "lang#dockerfile" + +[[layers]] + name = "lang#elixir" + +[[layers]] + name = "lang#elm" + +[[layers]] + name = "lang#erlang" + +[[layers]] + name = "lang#extra" + +[[layers]] + name = "lang#fsharp" + +[[layers]] + name = "lang#go" + +[[layers]] + name = "lang#haskell" + +[[layers]] + name = "lang#html" + +[[layers]] + name = "lang#java" + +[[layers]] + name = "lang#javascript" + +[[layers]] + name = "lang#julia" + +[[layers]] + name = "lang#kotlin" + +[[layers]] + name = "lang#latex" + +[[layers]] + name = "lang#lisp" + +[[layers]] + name = "lang#lua" + +[[layers]] + name = "lang#markdown" + +[[layers]] + name = "lang#nim" + +[[layers]] + name = "lang#ocaml" + +[[layers]] + name = "lang#perl" + +[[layers]] + name = "lang#php" + +[[layers]] + name = "lang#plantuml" + +[[layers]] + name = "lang#puppet" + +[[layers]] + name = "lang#purescript" + +[[layers]] + name = "lang#python" + +[[layers]] + name = "lang#ruby" + +[[layers]] + name = "lang#rust" + +[[layers]] + name = "lang#scala" + +[[layers]] + name = "lang#sh" + +[[layers]] + name = "lang#swift" + +[[layers]] + name = "lang#typescript" + +[[layers]] + name = "lang#vim" + +[[layers]] + name = "lang#vue" + +[[layers]] + name = "lsp" + +[[layers]] + name = "leaderf" + +[[layers]] + name = "shell" + +[[layers]] + name = "sudo" + +[[layers]] + name = "tags" + +[[layers]] + name = "tmux" + +[[layers]] + name = "tools#dash" + +[[layers]] + name = "tools" + +[[layers]] + name = "ui" + +## -- SpaceVim layer list end +