Native LSP, more Lua, less CoC

This commit is contained in:
Christian Chiarulli 2021-03-09 23:55:11 -05:00 committed by GitHub
parent 56f65b12a4
commit 474f961b2a
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 906 additions and 671 deletions

1
.gitignore vendored
View file

@ -10,4 +10,5 @@ session
wiki/
pack/
utils/java/*
lua-language-server/

122
README.md
View file

@ -8,55 +8,44 @@ The following will install this config if you have an existing config it will mo
This script only supports Mac, Ubuntu and Arch
```
```bash
bash <(curl -s https://raw.githubusercontent.com/ChristianChiarulli/nvim/master/utils/install.sh)
```
## Install Neovim
- Mac
To get the latest and greatest:
```
brew install --HEAD neovim # Nightly version
```bash
cd ~
sudo rm -r neovim
git clone https://github.com/neovim/neovim
cd neovim
sudo make CMAKE_BUILD_TYPE=Release install
cd ~
sudo rm -r neovim
```
brew upgrade neovim --fetch-HEAD # Sometimes you need to update
```
- Ubuntu
```
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage -o /tmp/nvim.appimage
sudo mv /tmp/nvim.appimage /usr/local/bin/nvim
chmod +x /usr/local/bin/nvim
```
- Arch
```
yay -S neovim-git # Latest
```
## Clone this repo into your config
```
```bash
git clone https://github.com/ChristianChiarulli/nvim.git ~/.config/nvim
```
## Install python & node support
```
```bash
pip install pynvim
```
```
```bash
npm i -g neovim
```
## Install Neovim remote
```
```bash
pip install neovim-remote
```
@ -72,13 +61,13 @@ export PATH=$HOME/.local/bin:$PATH
- Ubuntu
```
```bash
sudo apt install xsel
```
- Arch
```
```bash
sudo pacman -S xsel
```
@ -104,56 +93,45 @@ let g:node_host_prog = expand("~/.nvm/versions/node/v12.16.1/bin/neovim-node-hos
- universal-ctags
- lazy git
- lazy docker
- ninja (for lua lsp)
Explanations and installation instruction can be found on my blog
## Language Servers
Since CoC doesn't support all languages in there extensions
I recommend installing some language servers from scratch
and adding them to your `coc-settings.json` file
Some example language servers, if you just install them they will work with this config
Example:
```bash
npm i -g pyright
npm i -g bash-language-server
npm install -g vscode-css-languageserver-bin
npm install -g dockerfile-language-server-nodejs
npm install -g graphql-language-service-cli
npm install -g vscode-html-languageserver-bin
npm install -g typescript typescript-language-server
npm install -g vscode-json-languageserver
npm install -g vim-language-server
npm install -g yaml-language-server
```
- bash
Go [here](https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md)
`npm i -g bash-language-server`
```
"languageserver": {
"bash": {
"command": "bash-language-server",
"args": ["start"],
"filetypes": ["sh"],
"ignoredRootPaths": ["~"]
}
}
```
How to install the lua language server: [link](https://github.com/sumneko/lua-language-server/wiki/Build-and-Run-(Standalone))
## For FAR to work
```
```vim
:UpdateRemotePlugins
```
To replace in file make sure to specify `%:p`
To replace across project specify `**/*.<your_extension>`
## TabNine
To use TabNine enter the following in a buffer:
```
TabNine::config
```
**NOTE** This extension can take up a ton of memory
## Vim Gists
To use **vim-gists** you will need to configure the following:
```
```bash
git config --global github.user <username>
```
@ -165,19 +143,19 @@ You can install it on multiple platforms:
- Mac
```
```bash
brew cask install vscodium
```
- Arch
```
```bash
yay -s vscodium-bin
```
- Snap
```
```bash
snap install codium
```
@ -191,35 +169,27 @@ Along with some of my config files you can find in `utils/vscode_config`
- Better Documentation
https://github.com/gennaro-tedesco/nvim-jqx
https://github.com/nathunsmitty/nvim-ale-diagnostic
https://github.com/mattn/efm-langserver
https://github.com/windwp/nvim-ts-closetag
https://github.com/nvim-telescope/telescope-media-files.nvim
https://github.com/kosayoda/nvim-lightbulb
https://github.com/ms-jpq/chadtree
https://github.com/b3nj5m1n/kommentary
https://github.com/glepnir/lspsaga.nvim
https://github.com/nvim-lua/completion-nvim
https://github.com/nvim-telescope/telescope-frecency.nvim
## CoC extensions to check out
- coc-fzf-preview
- https://github.com/yuki-ycino/fzf-preview.vim/
- coc-floaterm
## 0.5
- native lsp
- treesitter
- native lsp (in progress)
- treesitter (in progress)
## LOW PRIORITY TODO
If anyone reading this has any suggestions about implementing any of the following I will accept a PR, but these are not priority.
- ale
- multiple cursors
- markdown table
- galaxyline automatically grab colors from colorscheme
- tpope/vim-dadbod
- neovide
@ -227,6 +197,6 @@ If anyone reading this has any suggestions about implementing any of the followi
- vimspector this is included but I don't plan on using it much
- can be used with jdb, pdb, gdb, etc...
- nvim-dap and nvim-dap-virtual-text (ALL DEBUGGING IN NEOVIM IS CONFUSING AND HARD TO GET WORKING OR I'M JUST DUMB)
- later manually link pylance
- potentially manually link pylance
- resize with arrows in addition to meta
- how to support meta key on for macOS?

View file

@ -1,155 +0,0 @@
{
// suggestions
// "suggest.echodocSupport": true,
/* https://code.visualstudio.com/docs/editor/intellisense reference for vscode symbols*/
/* https://www.nerdfonts.com/cheat-sheet reference to find some other symbols*/
/* some symbols you might like: */
/* fb44 this is the hex for nf-mdi-file_tree, should be good for class*/
"suggest.completionItemKindLabels": {
"method": "  ",
"function": "  ",
"variable": "[]",
"field": "  ",
"typeParameter": "<>",
"constant": "  ",
"class": "  ",
"interface": " 蘒",
"struct": "  ",
"event": "  ",
"operator": "  ",
"module": "  ",
"property": "  ",
"enum": " 練",
"reference": "  ",
"keyword": "  ",
"file": "  ",
"folder": " ﱮ ",
"color": "  ",
"unit": " 塞 ",
"snippet": "  ",
"text": "  ",
"constructor": "  ",
"value": "  ",
"enumMember": "  ",
"default": "  "
},
"snippets.priority": 1,
//"yank.priority": 1,
"suggest.languageSourcePriority": 99,
"coc.source.file.priority": 2,
"coc.source.around.priority": 3,
"coc.source.buffer.priority": 4,
// diagnostics
"diagnostic.errorSign": " ",
"diagnostic.warningSign": " ",
"diagnostic.infoSign": "",
"diagnostic.hintSign": " ",
// "diagnostic.displayByAle": true,
// "diagnostic.virtualText": true, // this won't work with codelens when error on same line
// codelens
"codeLens.enable": true,
"java.referencesCodeLens.enabled": true,
"java.implementationsCodeLens.enabled": true,
"java.completion.enabled": true,
"java.jdt.ls.vmargs": "-javaagent:/usr/local/share/lombok/lombok.jar",
// list
"list.indicator": ">",
"list.selectedSignText": " ",
// autoformat
"coc.preferences.formatOnSaveFiletypes": [
"css",
"markdown",
"javascript",
"graphql",
"html",
"yaml",
"json",
"python",
"java"
],
"coc.preferences.hoverTarget": "float",
// python config
"python.analysis.autoImportCompletions": true,
"python.analysis.autoSearchPaths": true,
"python.analysis.diagnosticMode": "openFilesOnly",
"python.analysis.stubPath": "typings",
"python.analysis.typeshedPaths": [],
"python.analysis.diagnosticSeverityOverrides": {},
"python.analysis.typeCheckingMode": "basic",
"python.analysis.useLibraryCodeForTypes": true,
"python.pythonPath": "python",
"python.venvPath": "",
"python.formatting.provider": "black",
"python.formatting.blackPath": "~/.local/bin/black",
"python.formatting.blackArgs": [],
"python.formatting.autopep8Path": "autopep8",
"python.formatting.autopep8Args": [],
"python.formatting.yapfPath": "yapf",
"python.formatting.yapfArgs": [],
"python.linting.enabled": true,
"python.linting.flake8Enabled": false,
"python.linting.banditEnabled": false,
"python.linting.mypyEnabled": false,
"python.linting.pytypeEnabled": false,
"python.linting.prospectorEnabled": false,
"python.linting.pydocstyleEnabled": false,
"python.linting.pylamaEnabled": false,
"python.linting.pylintEnabled": false,
// snippets
"snippets.ultisnips.directories": ["UltiSnips", "~/.config/nvim/snips"],
//"snippets.userSnippetsDirectory": "~/.config/nvim/snips",
// emmet
"emmet.includeLanguages": {
"vue-html": "html",
"javascript": "javascriptreact"
},
// CSS (disable since I'm also using stylelintplus)
"css.validate": false,
"less.validate": false,
"scss.validate": false,
"wxss.validate": false,
// explorer
"explorer.width": 30,
"explorer.file.root.template": "[icon] [git] [hidden & 1][root]",
"explorer.icon.enableNerdfont": true,
"explorer.previewAction.onHover": false,
"explorer.icon.enableVimDevicons": false,
"explorer.file.showHiddenFiles": false,
"explorer.keyMappings.global": {
"<cr>": ["expandable?", "expand", "open"],
"v": "open:vsplit"
},
/* "languageserver": { */
/* "lua": { */
/* "command": "/home/chris/.luambenvs/neovim4/bin/lua-lsp", */
/* "filetypes": ["lua"], */
/* "trace.server": "verbose" */
/* } */
/* }, */
//coc-emoji
"coc.source.emoji.filetypes": ["markdown"]
// lua
//"lua.useSumnekoLs": true,
//"lua.commandPath": "/home/chris/.luambenvs/neovim3/bin/lua-lsp"
//"lua.enable": true,
//"Lua.completion.enable": true,
//"Lua.runtime.version": "Lua 5.1",
//"Lua.runtime.path": ["?.lua", "?/init.lua", "?/?.lua"],
//"lua.version": "5.1"
//"lua.commandPath": "/home/chris/.vscode-insiders/extensions/sumneko.lua-1.0.5/server/bin/Linux/lua-language-server"
// TODO b:coc_suggest_disable=1 GOYO
// TODO add to paths.vim g:coc_node_path
}

View file

@ -9,3 +9,7 @@ nnoremap <f10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '>
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<cr>
augroup highlight_yank
autocmd!
au TextYankPost * silent! lua vim.highlight.on_yank { higroup='IncSearch', timeout=200 }
augroup END

View file

@ -35,7 +35,7 @@ set updatetime=300 " Faster completion
set timeoutlen=100 " By default timeoutlen is 1000 ms
set clipboard=unnamedplus " Copy paste between vim and everything else
set incsearch
set guifont=JetBrainsMono\ Nerd\ Font\ Mono
set guifont=JetBrainsMono\ Nerd\ Font\ Mono:h22
" New stuff
" set notimeout nottimeout

120
init.vim
View file

@ -4,64 +4,70 @@
" _/ // / / / / /__| |/ / / / / / / /
"/___/_/ /_/_/\__(_)___/_/_/ /_/ /_/
" General Settings
if !exists('g:vscode')
source $HOME/.config/nvim/plug-config/polyglot.vim
source ~/.config/nvim/plug-config/polyglot.vim
endif
source $HOME/.config/nvim/vim-plug/plugins.vim
source $HOME/.config/nvim/general/settings.vim
source $HOME/.config/nvim/general/functions.vim
source $HOME/.config/nvim/keys/mappings.vim
source ~/.config/nvim/vim-plug/plugins.vim
source ~/.config/nvim/general/settings.vim
source ~/.config/nvim/general/functions.vim
source ~/.config/nvim/keys/mappings.vim
if exists('g:vscode')
" VS Code extension
source $HOME/.config/nvim/vscode/settings.vim
source $HOME/.config/nvim/plug-config/easymotion.vim
source $HOME/.config/nvim/plug-config/highlightyank.vim
source ~/.config/nvim/vscode/settings.vim
source ~/.config/nvim/plug-config/easymotion.vim
source ~/.config/nvim/plug-config/highlightyank.vim
else
" Themes
source $HOME/.config/nvim/themes/syntax.vim
source $HOME/.config/nvim/themes/nvcode.vim
source ~/.config/nvim/themes/syntax.vim
source ~/.config/nvim/themes/nvcode.vim
" Plugin Configuration
source $HOME/.config/nvim/keys/which-key.vim
source $HOME/.config/nvim/plug-config/vim-commentary.vim
source $HOME/.config/nvim/plug-config/rnvimr.vim
source $HOME/.config/nvim/plug-config/better-whitespace.vim
source $HOME/.config/nvim/plug-config/fzf.vim
source $HOME/.config/nvim/plug-config/codi.vim
source $HOME/.config/nvim/plug-config/vim-wiki.vim
luafile $HOME/.config/nvim/lua/nvcodeline.lua
luafile $HOME/.config/nvim/lua/treesitter.lua
source $HOME/.config/nvim/plug-config/coc/coc.vim
source $HOME/.config/nvim/plug-config/coc/coc-extensions.vim
source $HOME/.config/nvim/plug-config/easymotion.vim
source $HOME/.config/nvim/plug-config/goyo.vim
source $HOME/.config/nvim/plug-config/vim-rooter.vim
source $HOME/.config/nvim/plug-config/start-screen.vim
source $HOME/.config/nvim/plug-config/gitgutter.vim
source $HOME/.config/nvim/plug-config/git-messenger.vim
source $HOME/.config/nvim/plug-config/closetags.vim
source $HOME/.config/nvim/plug-config/floaterm.vim
source $HOME/.config/nvim/plug-config/barbar.vim
source $HOME/.config/nvim/plug-config/far.vim
source $HOME/.config/nvim/plug-config/tagalong.vim
source $HOME/.config/nvim/plug-config/bracey.vim
source $HOME/.config/nvim/plug-config/asynctask.vim
source $HOME/.config/nvim/plug-config/window-swap.vim
source $HOME/.config/nvim/plug-config/markdown-preview.vim
source $HOME/.config/nvim/plug-config/neovide.vim
luafile $HOME/.config/nvim/lua/plug-colorizer.lua
luafile $HOME/.config/nvim/lua/config-telescope.lua
source $HOME/.config/nvim/plug-config/vimspector.vim
" source $HOME/.config/nvim/plug-config/sneak.vim
" source $HOME/.config/nvim/plug-config/rainbow.vim
" source $HOME/.config/nvim/plug-config/illuminate.vim
" source $HOME/.config/nvim/plug-config/vista.vim
" source $HOME/.config/nvim/plug-config/xtabline.vim
" source $HOME/.config/nvim/plug-config/ale.vim
source ~/.config/nvim/keys/which-key.vim
source ~/.config/nvim/plug-config/vim-commentary.vim
source ~/.config/nvim/plug-config/rnvimr.vim
source ~/.config/nvim/plug-config/codi.vim
source ~/.config/nvim/plug-config/vim-wiki.vim
source ~/.config/nvim/plug-config/easymotion.vim
source ~/.config/nvim/plug-config/goyo.vim
source ~/.config/nvim/plug-config/vim-rooter.vim
source ~/.config/nvim/plug-config/start-screen.vim
source ~/.config/nvim/plug-config/gitgutter.vim
source ~/.config/nvim/plug-config/git-messenger.vim
source ~/.config/nvim/plug-config/closetags.vim
source ~/.config/nvim/plug-config/floaterm.vim
source ~/.config/nvim/plug-config/barbar.vim
source ~/.config/nvim/plug-config/far.vim
source ~/.config/nvim/plug-config/tagalong.vim
source ~/.config/nvim/plug-config/bracey.vim
source ~/.config/nvim/plug-config/markdown-preview.vim
source ~/.config/nvim/plug-config/nvimtree-config.vim
source ~/.config/nvim/lua/lsp-wrapper.vim
luafile ~/.config/nvim/lua/plugins/galaxyline-config.lua
luafile ~/.config/nvim/lua/plugins/nvimtree-config.lua
luafile ~/.config/nvim/lua/plugins/treesitter-config.lua
luafile ~/.config/nvim/lua/plugins/colorizer-config.lua
luafile ~/.config/nvim/lua/plugins/telescope-config.lua
luafile ~/.config/nvim/lua/lsp/lsp-kind.lua
luafile ~/.config/nvim/lua/plugins/compe-config.lua
luafile ~/.config/nvim/lua/plugins/lspsaga-config.lua
" LSP
source ~/.config/nvim/plug-config/lsp-config.vim
luafile ~/.config/nvim/lua/lsp/lsp-config.lua
luafile ~/.config/nvim/lua/lsp/lua-ls.lua
luafile ~/.config/nvim/lua/lsp/python-ls.lua
luafile ~/.config/nvim/lua/lsp/bash-ls.lua
luafile ~/.config/nvim/lua/lsp/css-ls.lua
luafile ~/.config/nvim/lua/lsp/docker-ls.lua
luafile ~/.config/nvim/lua/lsp/graphql-ls.lua
luafile ~/.config/nvim/lua/lsp/html-ls.lua
luafile ~/.config/nvim/lua/lsp/javascript-ls.lua
luafile ~/.config/nvim/lua/lsp/json-ls.lua
luafile ~/.config/nvim/lua/lsp/vim-ls.lua
luafile ~/.config/nvim/lua/lsp/yaml-ls.lua
" https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md
endif
source $HOME/.config/nvim/plug-config/quickscope.vim
@ -73,3 +79,23 @@ endif
" Better nav for omnicomplete TODO figure out why this is being overridden
inoremap <expr> <c-j> ("\<C-n>")
inoremap <expr> <c-k> ("\<C-p>")
" TODO highlight groups for native LSP diagnostics
" add back other docs for compe
nnoremap <silent> K <cmd>lua require('lspsaga.hover').render_hover_doc()<CR>
" -- scroll down hover doc or scroll in definition preview
nnoremap <silent> <C-f> <cmd>lua require('lspsaga.action').smart_scroll_with_saga(1)<CR>
" -- scroll up hover doc
nnoremap <silent> <C-b> <cmd>lua require('lspsaga.action').smart_scroll_with_saga(-1)<CR>
" signature
nnoremap <silent> gs <cmd>lua require('lspsaga.signaturehelp').signature_help()<CR>
" Lightbulb
autocmd CursorHold,CursorHoldI * lua require'nvim-lightbulb'.update_lightbulb()
"TODO
" fix space and tab triggering completion all the time
" autoimport jsx
" snippets

View file

@ -1,5 +1,4 @@
" Leader Key Maps
let @s = 'veS"'
" Timeout
@ -17,10 +16,6 @@ let g:which_key_map = {}
let g:which_key_sep = '→'
" set timeoutlen=100
" Coc Search & refactor
nnoremap <leader>? :CocSearch <C-R>=expand("<cword>")<CR><CR>
let g:which_key_map['?'] = 'search word'
" Not a fan of floating windows for this
let g:which_key_use_floating_win = 0
let g:which_key_max_size = 0
@ -39,15 +34,17 @@ autocmd FileType which_key set laststatus=0 noshowmode noruler
" Single mappings
let g:which_key_map['/'] = [ ':call Comment()' , 'comment' ]
let g:which_key_map['?'] = [ ':NvimTreeFindFile' , 'comment' ]
let g:which_key_map['.'] = [ ':e $MYVIMRC' , 'open init' ]
let g:which_key_map[';'] = [ ':Commands' , 'commands' ]
let g:which_key_map['='] = [ '<C-W>=' , 'balance windows' ]
let g:which_key_map['e'] = [ ':CocCommand explorer --toggle --sources=file+' , 'explorer' ]
let g:which_key_map['e'] = [ ':NvimTreeToggle' , 'explorer' ]
let g:which_key_map['h'] = [ '<C-W>s' , 'split below']
let g:which_key_map['n'] = [ ':let @/ = ""' , 'no highlight' ]
let g:which_key_map['o'] = [ ':RnvimrToggle' , 'open' ]
let g:which_key_map['p'] = [ ':Files' , 'search files' ]
let g:which_key_map['q'] = [ '<Plug>(coc-fix-current)' , 'quickfix' ]
" TODO fix this
" let g:which_key_map['q'] = [ ':q' , 'quit' ]
let g:which_key_map['T'] = [ ':TSHighlightCapturesUnderCursor' , 'treesitter highlight' ]
let g:which_key_map['u'] = [ ':UndotreeToggle' , 'undo tree']
let g:which_key_map['v'] = [ '<C-W>v' , 'split right']
@ -156,37 +153,7 @@ let g:which_key_map.m = {
" CoC throws an error
" \ 'a' : [':CocCommand bookmark.annotate', 'annotate bookmark'],
" " s is for search
" let g:which_key_map.s = {
" \ 'name' : '+search' ,
" \ '/' : [':History/' , 'history'],
" \ ';' : [':Commands' , 'commands'],
" \ 'a' : [':Ag' , 'text Ag'],
" \ 'b' : [':BLines' , 'current buffer'],
" \ 'B' : [':Buffers' , 'open buffers'],
" \ 'c' : [':Commits' , 'commits'],
" \ 'C' : [':BCommits' , 'buffer commits'],
" \ 'f' : [':Files' , 'files'],
" \ 'g' : [':GFiles' , 'git files'],
" \ 'G' : [':GFiles?' , 'modified git files'],
" \ 'h' : [':History' , 'file history'],
" \ 'H' : [':History:' , 'command history'],
" \ 'l' : [':Lines' , 'lines'] ,
" \ 'm' : [':Marks' , 'marks'] ,
" \ 'M' : [':Maps' , 'normal maps'] ,
" \ 'p' : [':Helptags' , 'help tags'] ,
" \ 'P' : [':Tags' , 'project tags'],
" \ 's' : [':CocList snippets' , 'snippets'],
" \ 'S' : [':Colors' , 'color schemes'],
" \ 't' : [':Rg' , 'text Rg'],
" \ 'T' : [':BTags' , 'buffer tags'],
" \ 'w' : [':Windows' , 'search windows'],
" \ 'y' : [':Filetypes' , 'file types'],
" \ 'z' : [':FZF' , 'FZF'],
" \ }
" \ 's' : [':Snippets' , 'snippets'],
" TODO fix FZF preview or just move to Telescope
" s is for search powered by telescope
let g:which_key_map.s = {
\ 'name' : '+search' ,
@ -225,17 +192,6 @@ let g:which_key_map.s = {
\ 'u' : [':Telescope colorscheme' , 'colorschemes'],
\ 'z' : [':Telescope current_buffer_fuzzy_find' , 'buf_fuz_find'],
\ }
"
" :CocCommand fzf-preview.AllBuffers
" :CocCommand fzf-preview.Changes
" :CocCommand fzf-preview.Yankround
" :CocCommand fzf-preview.CocReferences
" :CocCommand fzf-preview.CocDiagnostics
" :CocCommand fzf-preview.CocCurrentDiagnostics
" :CocCommand fzf-preview.CocTypeDefinitions
" \ 'l' : [':CocCommand fzf-preview.Bookmarks', 'list bookmarks'],
" $FZF_PREVIEW_PREVIEW_BAT_THEME = 'ansi-dark'
"
let g:which_key_map.S = {
\ 'name' : '+Session' ,
@ -297,46 +253,34 @@ let g:which_key_map.G = {
" l is for language server protocol
let g:which_key_map.l = {
\ 'name' : '+lsp' ,
\ '.' : [':CocConfig' , 'config'],
\ ';' : ['<Plug>(coc-refactor)' , 'refactor'],
\ 'a' : ['<Plug>(coc-codeaction)' , 'code action'],
\ 'A' : ['<Plug>(coc-codeaction-selected)' , 'selected action'],
\ 'b' : [':CocNext' , 'next action'],
\ 'B' : [':CocPrev' , 'prev action'],
\ 'c' : [':CocList commands' , 'commands'],
\ 'd' : ['<Plug>(coc-definition)' , 'definition'],
\ 'D' : ['<Plug>(coc-declaration)' , 'declaration'],
\ 'e' : [':CocList extensions' , 'extensions'],
\ 'f' : ['<Plug>(coc-format-selected)' , 'format selected'],
\ 'F' : ['<Plug>(coc-format)' , 'format'],
\ 'h' : ['<Plug>(coc-float-hide)' , 'hide'],
\ 'i' : ['<Plug>(coc-implementation)' , 'implementation'],
\ 'I' : [':CocList diagnostics' , 'diagnostics'],
\ 'j' : ['<Plug>(coc-float-jump)' , 'float jump'],
\ 'l' : ['<Plug>(coc-codelens-action)' , 'code lens'],
\ 'n' : ['<Plug>(coc-diagnostic-next)' , 'next diagnostic'],
\ 'N' : ['<Plug>(coc-diagnostic-next-error)' , 'next error'],
\ 'a' : [':Lspsaga code_action' , 'code action'],
\ 'A' : [':Lspsaga range_code_action' , 'selected action'],
\ 'd' : [':LspDefinition' , 'definition'],
\ 'D' : [':LspDeclaration' , 'workspace_diagnostics'],
\ 'f' : [':LspFormatting' , 'format'],
\ 'h' : [':Lspsaga hover_doc' , 'hover_doc'],
\ 'H' : [':Lspsaga signature_help' , 'signature_help'],
\ 'K' : [':LspHover' , 'hover'],
\ 'i' : [':LspImplementation' , 'lsp_info'],
\ 'I' : [':LspInfo' , 'lsp_info'],
\ 'l' : [':Lspsaga lsp_finder' , 'lsp_finder'],
\ 'L' : [':Lspsaga show_line_diagnostics' , 'line_diagnostics'],
\ 'n' : [':Lspsaga diagnostic_jump_next' , 'next_diagnostic'],
\ 'o' : [':Vista!!' , 'outline'],
\ 'O' : [':CocList outline' , 'search outline'],
\ 'p' : ['<Plug>(coc-diagnostic-prev)' , 'prev diagnostic'],
\ 'P' : ['<Plug>(coc-diagnostic-prev-error)' , 'prev error'],
\ 'q' : ['<Plug>(coc-fix-current)' , 'quickfix'],
\ 'r' : ['<Plug>(coc-references)' , 'references'],
\ 'R' : ['<Plug>(coc-rename)' , 'rename'],
\ 's' : [':CocList -I symbols' , 'references'],
\ 'S' : [':CocList snippets' , 'snippets'],
\ 't' : ['<Plug>(coc-type-definition)' , 'type definition'],
\ 'u' : [':CocListResume' , 'resume list'],
\ 'U' : [':CocUpdate' , 'update CoC'],
\ 'z' : [':CocDisable' , 'disable CoC'],
\ 'Z' : [':CocEnable' , 'enable CoC'],
\ 'p' : [':Lspsaga diagnostic_jump_prev' , 'prev diagnostic'],
\ 'q' : [':Lspsaga code_action' , 'quickfix'],
\ 'r' : [':LspReferences' , 'references'],
\ 'R' : [':LspRename' , 'rename'],
\ 'T' : [':LspTypeDefinition' , 'type defintion'],
\ 'x' : [':cclose' , 'close quickfix'],
\ 'y' : [':LspDocumentSymbol' , 'document symbols'],
\ 'Y' : [':LspWorkspaceSymbol' , 'workspace symbols'],
\ }
" \ 'o' : ['<Plug>(coc-openlink)' , 'open link'],
" t is for terminal
let g:which_key_map.t = {
\ 'name' : '+terminal' ,
\ ';' : [':FloatermNew --wintype=normal --height=6' , 'terminal'],
\ ';' : [':FloatermNew --wintype=normal --height=6' , 'terminal'],
\ 'f' : [':FloatermNew fzf' , 'fzf'],
\ 'g' : [':FloatermNew lazygit' , 'git'],
\ 'd' : [':FloatermNew lazydocker' , 'docker'],
@ -347,7 +291,7 @@ let g:which_key_map.t = {
\ 'r' : [':FloatermNew ranger' , 'ranger'],
\ 't' : [':FloatermToggle' , 'toggle'],
\ 'y' : [':FloatermNew ytop' , 'ytop'],
\ 's' : [':FloatermNew ncdu' , 'ncdu'],
\ 'u' : [':FloatermNew ncdu' , 'ncdu'],
\ }
" w is for wiki

258
lua/lsp-wrapper.lua Normal file
View file

@ -0,0 +1,258 @@
local lsp_wrapper = {}
-- buf
function lsp_wrapper.add_to_workspace_folder()
vim.lsp.buf.add_workspace_folder()
end
function lsp_wrapper.clear_references()
vim.lsp.buf.clear_references()
end
function lsp_wrapper.code_action()
vim.lsp.buf.code_action()
end
function lsp_wrapper.declaration()
vim.lsp.buf.declaration()
vim.lsp.buf.clear_references()
end
function lsp_wrapper.definition()
vim.lsp.buf.definition()
vim.lsp.buf.clear_references()
end
function lsp_wrapper.document_highlight()
vim.lsp.buf.document_highlight()
end
function lsp_wrapper.document_symbol()
vim.lsp.buf.document_symbol()
end
function lsp_wrapper.formatting()
vim.lsp.buf.formatting()
end
function lsp_wrapper.formatting_sync()
vim.lsp.buf.formatting_sync()
end
function lsp_wrapper.hover()
vim.lsp.buf.hover()
end
function lsp_wrapper.implementation()
vim.lsp.buf.implementation()
end
function lsp_wrapper.incoming_calls()
vim.lsp.buf.incoming_calls()
end
function lsp_wrapper.list_workspace_folders()
vim.lsp.buf.list_workspace_folders()
end
function lsp_wrapper.outgoing_calls()
vim.lsp.buf.outgoing_calls()
end
function lsp_wrapper.range_code_action()
vim.lsp.buf.range_code_action()
end
function lsp_wrapper.range_formatting()
vim.lsp.buf.range_formatting()
end
function lsp_wrapper.references()
vim.lsp.buf.references()
vim.lsp.buf.clear_references()
end
function lsp_wrapper.remove_workspace_folder()
vim.lsp.buf.remove_workspace_folder()
end
function lsp_wrapper.rename()
vim.lsp.buf.rename()
end
function lsp_wrapper.signature_help()
vim.lsp.buf.signature_help()
end
function lsp_wrapper.type_definition()
vim.lsp.buf.type_definition()
end
function lsp_wrapper.workspace_symbol()
vim.lsp.buf.workspace_symbol()
end
-- diagnostic
function lsp_wrapper.get_all()
vim.lsp.diagnostic.get_all()
end
function lsp_wrapper.get_next()
vim.lsp.diagnostic.get_next()
end
function lsp_wrapper.get_prev()
vim.lsp.diagnostic.get_prev()
end
function lsp_wrapper.goto_next()
vim.lsp.diagnostic.goto_next()
end
function lsp_wrapper.goto_prev()
vim.lsp.diagnostic.goto_prev()
end
function lsp_wrapper.show_line_diagnostics()
vim.lsp.diagnostic.show_line_diagnostics()
end
-- misc
-- :lua print(vim.inspect(vim.lsp.buf_get_clients()))
-- autoformat
-- autocmd BufWritePre *.rs lua vim.lsp.buf.formatting_sync(nil, 1000)
return lsp_wrapper
-- You can see more about the differences in types here:
-- https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight
-- *hl-LspReferenceText*
-- LspReferenceText used for highlighting "text" references
-- *hl-LspReferenceRead*
-- LspReferenceRead used for highlighting "read" references
-- *hl-LspReferenceWrite*
-- LspReferenceWrite used for highlighting "write" references
-- *lsp-highlight-diagnostics*
-- All highlights defined for diagnostics begin with `LspDiagnostics` followed by
-- the type of highlight (e.g., `Sign`, `Underline`, etc.) and then the Severity
-- of the highlight (e.g. `Error`, `Warning`, etc.)
-- Sign, underline and virtual text highlights (by default) are linked to their
-- corresponding LspDiagnosticsDefault highlight.
-- For example, the default highlighting for |hl-LspDiagnosticsSignError| is
-- linked to |hl-LspDiagnosticsDefaultError|. To change the default (and
-- therefore the linked highlights), use the |:highlight| command: >
-- highlight LspDiagnosticsDefaultError guifg="BrightRed"
-- <
-- *hl-LspDiagnosticsDefaultError*
-- LspDiagnosticsDefaultError
-- Used as the base highlight group.
-- Other LspDiagnostic highlights link to this by default (except Underline)
-- *hl-LspDiagnosticsDefaultWarning*
-- LspDiagnosticsDefaultWarning
-- Used as the base highlight group.
-- Other LspDiagnostic highlights link to this by default (except Underline)
-- *hl-LspDiagnosticsDefaultInformation*
-- LspDiagnosticsDefaultInformation
-- Used as the base highlight group.
-- Other LspDiagnostic highlights link to this by default (except Underline)
-- *hl-LspDiagnosticsDefaultHint*
-- LspDiagnosticsDefaultHint
-- Used as the base highlight group.
-- Other LspDiagnostic highlights link to this by default (except Underline)
-- *hl-LspDiagnosticsVirtualTextError*
-- LspDiagnosticsVirtualTextError
-- Used for "Error" diagnostic virtual text.
-- See |vim.lsp.diagnostic.set_virtual_text()|
-- *hl-LspDiagnosticsVirtualTextWarning*
-- LspDiagnosticsVirtualTextWarning
-- Used for "Warning" diagnostic virtual text.
-- See |vim.lsp.diagnostic.set_virtual_text()|
-- *hl-LspDiagnosticsVirtualTextInformation*
-- LspDiagnosticsVirtualTextInformation
-- Used for "Information" diagnostic virtual text.
-- See |vim.lsp.diagnostic.set_virtual_text()|
-- *hl-LspDiagnosticsVirtualTextHint*
-- LspDiagnosticsVirtualTextHint
-- Used for "Hint" diagnostic virtual text.
-- See |vim.lsp.diagnostic.set_virtual_text()|
-- *hl-LspDiagnosticsUnderlineError*
-- LspDiagnosticsUnderlineError
-- Used to underline "Error" diagnostics.
-- See |vim.lsp.diagnostic.set_underline()|
-- *hl-LspDiagnosticsUnderlineWarning*
-- LspDiagnosticsUnderlineWarning
-- Used to underline "Warning" diagnostics.
-- See |vim.lsp.diagnostic.set_underline()|
-- *hl-LspDiagnosticsUnderlineInformation*
-- LspDiagnosticsUnderlineInformation
-- Used to underline "Information" diagnostics.
-- See |vim.lsp.diagnostic.set_underline()|
-- *hl-LspDiagnosticsUnderlineHint*
-- LspDiagnosticsUnderlineHint
-- Used to underline "Hint" diagnostics.
-- See |vim.lsp.diagnostic.set_underline()|
-- *hl-LspDiagnosticsFloatingError*
-- LspDiagnosticsFloatingError
-- Used to color "Error" diagnostic messages in diagnostics float.
-- See |vim.lsp.diagnostic.show_line_diagnostics()|
-- *hl-LspDiagnosticsFloatingWarning*
-- LspDiagnosticsFloatingWarning
-- Used to color "Warning" diagnostic messages in diagnostics float.
-- See |vim.lsp.diagnostic.show_line_diagnostics()|
-- *hl-LspDiagnosticsFloatingInformation*
-- LspDiagnosticsFloatingInformation
-- Used to color "Information" diagnostic messages in diagnostics float.
-- See |vim.lsp.diagnostic.show_line_diagnostics()|
-- *hl-LspDiagnosticsFloatingHint*
-- LspDiagnosticsFloatingHint
-- Used to color "Hint" diagnostic messages in diagnostics float.
-- See |vim.lsp.diagnostic.show_line_diagnostics()|
-- *hl-LspDiagnosticsSignError*
-- LspDiagnosticsSignError
-- Used for "Error" signs in sign column.
-- See |vim.lsp.diagnostic.set_signs()|
-- *hl-LspDiagnosticsSignWarning*
-- LspDiagnosticsSignWarning
-- Used for "Warning" signs in sign column.
-- See |vim.lsp.diagnostic.set_signs()|
-- *hl-LspDiagnosticsSignInformation*
-- LspDiagnosticsSignInformation
-- Used for "Information" signs in sign column.
-- See |vim.lsp.diagnostic.set_signs()|
-- *hl-LspDiagnosticsSignHint*
-- LspDiagnosticsSignHint
-- Used for "Hint" signs in sign column.
-- See |vim.lsp.diagnostic.set_signs()|

27
lua/lsp-wrapper.vim Normal file
View file

@ -0,0 +1,27 @@
command! LspCodeAction lua require 'lsp-wrapper'.code_action()
command! LspDeclaration lua require 'lsp-wrapper'.declaration()
command! LspDefinition lua require 'lsp-wrapper'.definition()
command! LspDocumentSymbol lua require 'lsp-wrapper'.document_symbol()
command! LspFormatting lua require 'lsp-wrapper'.formatting()
command! LspFormattingSync lua require 'lsp-wrapper'.formatting_sync()
command! LspHover lua require 'lsp-wrapper'.hover()
command! LspImplementation lua require 'lsp-wrapper'.implementation()
command! LspRangeCodeAction lua require 'lsp-wrapper'.range_code_action()
command! LspRangeFormatting lua require 'lsp-wrapper'.range_formatting()
command! LspReferences lua require 'lsp-wrapper'.references()
command! LspRename lua require 'lsp-wrapper'.rename()
command! LspTypeDefinition lua require 'lsp-wrapper'.type_definition()
command! LspWorkspaceSymbol lua require 'lsp-wrapper'.workspace_symbol()
command! LspGotoNext lua require 'lsp-wrapper'.goto_next()
command! LspGotoPrev lua require 'lsp-wrapper'.goto_prev()
command! LspShowLineDiagnostics lua require 'lsp-wrapper'.show_line_diagnostics()
" command! LspAddToWorkspaceFolder lua require 'lsp-wrapper'.add_to_workspace_folder()
" command! LspRemoveWorkspaceFolder lua require 'lsp-wrapper'.remove_workspace_folder()
" command! LspListWorkspaceFolders lua require 'lsp-wrapper'.list_workspace_folders()
" command! LspClearReferences lua require 'lsp-wrapper'.clear_references()
" command! LspGetNext lua require 'lsp-wrapper'.get_next()
" command! LspGetPrev lua require 'lsp-wrapper'.get_prev()
" command! LspGetAll lua require 'lsp-wrapper'.get_all()
" command! LspIncomingCalls lua require 'lsp-wrapper'.incoming_calls()
" command! LspOutGoingCalls lua require 'lsp-wrapper'.outgoing_calls()
" command! LspDocumentHighlight lua require 'lsp-wrapper'.document_highlight()

3
lua/lsp/bash-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm i -g bash-language-server
require'lspconfig'.bashls.setup{}

3
lua/lsp/css-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm install -g vscode-css-languageserver-bin
require'lspconfig'.cssls.setup{}

3
lua/lsp/docker-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm install -g dockerfile-language-server-nodejs
require'lspconfig'.dockerls.setup{}

3
lua/lsp/graphql-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm install -g graphql-language-service-cli
require'lspconfig'.graphql.setup{}

11
lua/lsp/html-ls.lua Normal file
View file

@ -0,0 +1,11 @@
-- npm install -g vscode-html-languageserver-bin
--Enable (broadcasting) snippet capability for completion
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
require'lspconfig'.html.setup {
capabilities = capabilities,
}
require'lspconfig'.html.setup{}

View file

@ -0,0 +1,3 @@
-- npm install -g typescript typescript-language-server
require'lspconfig'.tsserver.setup{}

11
lua/lsp/json-ls.lua Normal file
View file

@ -0,0 +1,11 @@
-- npm install -g vscode-json-languageserver
require'lspconfig'.jsonls.setup {
commands = {
Format = {
function()
vim.lsp.buf.range_formatting({},{0,0},{vim.fn.line("$"),0})
end
}
}
}

61
lua/lsp/lsp-config.lua Normal file
View file

@ -0,0 +1,61 @@
-- local nvim_lsp = require('lspconfig')
-- local on_attach = function(client, bufnr)
-- local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
-- local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
-- buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
-- -- Mappings.
-- local opts = { noremap=true, silent=true }
-- buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
-- -- buf_set_keymap('n', 'gd', ':lua vim.lsp.buf.definition()')
-- buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
-- buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
-- buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
-- buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
-- buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
-- buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
-- buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
-- buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
-- buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
-- -- buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
-- buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
-- buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
-- buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
-- buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
-- -- *vim.lsp.buf.code_action()
-- -- Set some keybinds conditional on server capabilities
-- if client.resolved_capabilities.document_formatting then
-- buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
-- elseif client.resolved_capabilities.document_range_formatting then
-- buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.range_formatting()<CR>", opts)
-- end
-- -- Set autocommands conditional on server_capabilities
-- -- if client.resolved_capabilities.document_highlight then
-- -- vim.api.nvim_exec([[
-- -- hi LspReferenceRead cterm=bold ctermbg=red guibg=Pink
-- -- hi LspReferenceText cterm=bold ctermbg=red guibg=Pink
-- -- hi LspReferenceWrite cterm=bold ctermbg=red guibg=Pink
-- -- augroup lsp_document_highlight
-- -- autocmd! * <buffer>
-- -- autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
-- -- autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
-- -- augroup END
-- -- ]], false)
-- -- end
-- end
-- -- Use a loop to conveniently both setup defined servers
-- -- and map buffer local keybindings when the language server attaches
-- local servers = { "pyright", "rust_analyzer", "tsserver" }
-- for _, lsp in ipairs(servers) do
-- nvim_lsp[lsp].setup { on_attach = on_attach }
-- end
vim.fn.sign_define("LspDiagnosticsSignError", {text = "", numhl = "LspDiagnosticsDefaultError"})
vim.fn.sign_define("LspDiagnosticsSignWarning", {text = "", numhl = "LspDiagnosticsDefaultWarning"})
vim.fn.sign_define("LspDiagnosticsSignInformation", {text = "", numhl = "LspDiagnosticsDefaultInformation"})
vim.fn.sign_define("LspDiagnosticsSignHint", {text = "", numhl = "LspDiagnosticsDefaultHint"})

27
lua/lsp/lsp-kind.lua Normal file
View file

@ -0,0 +1,27 @@
-- commented options are defaults
require('lspkind').init({
with_text = false,
symbol_map = {
Text = '',
Method = '',
Function = '',
Constructor = '',
Variable = '[]',
Class = '',
Interface = '',
Module = '',
Property = '',
Unit = '',
Value = '',
Enum = '',
Keyword = '',
Snippet = '',
Color = '',
File = '',
Folder = '',
EnumMember = '',
Constant = '',
Struct = ''
},
})

42
lua/lsp/lua-ls.lua Normal file
View file

@ -0,0 +1,42 @@
-- https://github.com/sumneko/lua-language-server/wiki/Build-and-Run-(Standalone)
-- TODO fix for different systems and put variable for user
-- local system_name
-- if vim.fn.has("mac") == 1 then
-- system_name = "macOS"
-- elseif vim.fn.has("unix") == 1 then
-- system_name = "Linux"
-- elseif vim.fn.has('win32') == 1 then
-- system_name = "Windows"
-- else
-- print("Unsupported system for sumneko")
-- end
-- set the path to the sumneko installation; if you previously installed via the now deprecated :LspInstall, use
local sumneko_root_path = "/Users/chris/.config/nvim/lua-language-server"
local sumneko_binary = "/Users/chris/.config/nvim/lua-language-server/bin/macOS/lua-language-server"
require'lspconfig'.sumneko_lua.setup {
cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"};
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
-- Setup your lua path
path = vim.split(package.path, ';'),
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = {'vim'},
},
workspace = {
-- Make the server aware of Neovim runtime files
library = {
[vim.fn.expand('$VIMRUNTIME/lua')] = true,
[vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true,
},
},
},
},
}

3
lua/lsp/python-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm i -g pyright
require'lspconfig'.pyright.setup{}

3
lua/lsp/vim-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm install -g vim-language-server
require'lspconfig'.vimls.setup{}

3
lua/lsp/yaml-ls.lua Normal file
View file

@ -0,0 +1,3 @@
-- npm install -g yaml-language-server
require'lspconfig'.yamlls.setup{}

View file

@ -0,0 +1,73 @@
-- TODO we need snippet support and to maybe get better docs idk
vim.o.completeopt = "menuone,noselect"
require'compe'.setup {
enabled = true;
autocomplete = true;
debug = false;
min_length = 1;
preselect = 'enable';
throttle_time = 80;
source_timeout = 200;
incomplete_delay = 400;
max_abbr_width = 100;
max_kind_width = 100;
max_menu_width = 100;
documentation = false;
source = {
path = true;
buffer = true;
calc = true;
vsnip = true;
nvim_lsp = true;
nvim_lua = true;
spell = true;
tags = true;
snippets_nvim = true;
treesitter = true;
};
}
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
end
-- local check_back_space = function()
-- local col = vim.fn.col('.') - 1
-- if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
-- return true
-- else
-- return false
-- end
-- end
-- Use (s-)tab to:
--- move to prev/next item in completion menuone
--- jump to prev/next snippet's placeholder
-- _G.tab_complete = function()
-- if vim.fn.pumvisible() == 1 then
-- return t "<C-n>"
-- elseif vim.fn.call("vsnip#available", {1}) == 1 then
-- return t "<Plug>(vsnip-expand-or-jump)"
-- elseif check_back_space() then
-- return t "<Tab>"
-- else
-- return vim.fn['compe#complete']()
-- end
-- end
_G.s_tab_complete = function()
if vim.fn.pumvisible() == 1 then
return t "<C-p>"
elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then
return t "<Plug>(vsnip-jump-prev)"
else
return t "<S-Tab>"
end
end
-- vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})

View file

@ -0,0 +1,2 @@

View file

@ -0,0 +1,31 @@
local tree_cb = require'nvim-tree.config'.nvim_tree_callback
vim.g.nvim_tree_bindings = {
-- mappings
["<CR>"] = tree_cb("edit"),
["l"] = tree_cb("edit"),
["o"] = tree_cb("edit"),
["<2-LeftMouse>"] = tree_cb("edit"),
["<2-RightMouse>"] = tree_cb("cd"),
["<C-]>"] = tree_cb("cd"),
["v"] = tree_cb("vsplit"),
["s"] = tree_cb("split"),
["<C-t>"] = tree_cb("tabnew"),
["h"] = tree_cb("close_node"),
["<BS>"] = tree_cb("close_node"),
["<S-CR>"] = tree_cb("close_node"),
["<Tab>"] = tree_cb("preview"),
["I"] = tree_cb("toggle_ignored"),
["H"] = tree_cb("toggle_dotfiles"),
["R"] = tree_cb("refresh"),
["a"] = tree_cb("create"),
["d"] = tree_cb("remove"),
["r"] = tree_cb("rename"),
["<C-r>"] = tree_cb("full_rename"),
["x"] = tree_cb("cut"),
["c"] = tree_cb("copy"),
["p"] = tree_cb("paste"),
["[c"] = tree_cb("prev_git_item"),
["]c"] = tree_cb("next_git_item"),
["-"] = tree_cb("dir_up"),
["q"] = tree_cb("close"),
}

View file

@ -1,33 +0,0 @@
let g:coc_global_extensions = [
\ 'coc-snippets',
\ 'coc-actions',
\ 'coc-sh',
\ 'coc-java-debug',
\ 'coc-java',
\ 'coc-lists',
\ 'coc-emmet',
\ 'coc-tasks',
\ 'coc-pairs',
\ 'coc-tsserver',
\ 'coc-floaterm',
\ 'coc-fzf-preview',
\ 'coc-html',
\ 'coc-css',
\ 'coc-cssmodules',
\ 'coc-stylelintplus',
\ 'coc-emoji',
\ 'coc-yaml',
\ 'coc-pyright',
\ 'coc-explorer',
\ 'coc-svg',
\ 'coc-prettier',
\ 'coc-vimlsp',
\ 'coc-xml',
\ 'coc-yank',
\ 'coc-json',
\ 'coc-marketplace',
\ ]
" \ 'coc-tabnine',
" \ 'coc-highlight',
" \ 'coc-bookmark',

View file

@ -1,171 +0,0 @@
" Use tab for trigger completion with characters ahead and navigate.
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion.
inoremap <silent><expr> <c-space> coc#refresh()
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current
" position. Coc only does snippet and additional edit on confirm.
if exists('*complete_info')
inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
else
imap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
endif
" GoTo code navigation.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use K to show documentation in preview window.
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
elseif (coc#rpc#ready())
call CocActionAsync('doHover')
else
execute '!' . &keywordprg . " " . expand('<cword>')
endif
endfunction
" set keywordprg=:call\ CocActionAsync('doHover')
" augroup VimHelp
" autocmd!
" autocmd Filetype vim,help setlocal keywordprg=:help
" augroup END
" Highlight the symbol and its references when holding the cursor.
autocmd CursorHold * silent call CocActionAsync('highlight')
" Symbol renaming.
" nmap <leader>rn <Plug>(coc-rename)
augroup mygroup
autocmd!
" Setup formatexpr specified filetype(s).
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Update signature help on jump placeholder.
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end
" Applying codeAction to the selected region.
" Example: `<leader>aap` for current paragraph
" xmap <leader>a <Plug>(coc-codeaction-selected)
" nmap <leader>a <Plug>(coc-codeaction-selected)
" Remap keys for applying codeAction to the current line.
" nmap <leader>ac <Plug>(coc-codeaction)
" Apply AutoFix to problem on the current line.
" nmap <leader>qf <Plug>(coc-fix-current)
" Introduce function text object
" NOTE: Requires 'textDocument.documentSymbol' support from the language server.
xmap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap if <Plug>(coc-funcobj-i)
omap af <Plug>(coc-funcobj-a)
" Remap <C-f> and <C-b> for scroll float windows/popups.
" Note coc#float#scroll works on neovim >= 0.4.3 or vim >= 8.2.0750
nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
" NeoVim-only mapping for visual mode scroll
" Useful on signatureHelp after jump placeholder of snippet expansion
if has('nvim')
vnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#nvim_scroll(1, 1) : "\<C-f>"
vnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#nvim_scroll(0, 1) : "\<C-b>"
endif
" Add `:Format` command to format current buffer.
command! -nargs=0 Format :call CocAction('format')
" Add `:Fold` command to fold current buffer.
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" Add `:OR` command for organize imports of the current buffer.
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
" Add (Neo)Vim's native statusline support.
" NOTE: Please see `:h coc-status` for integrations with external plugins that
" provide custom statusline: lightline.vim, vim-airline.
" set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Mappings using CoCList:
" Show all diagnostics.
" TODO add these to which key
" nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
" " Manage extensions.
" nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
" " Show commands.
" nnoremap <silent> <space>c :<C-u>CocList commands<cr>
" " Find symbol of current document.
" nnoremap <silent> <space>o :<C-u>CocList outline<cr>
" " Search workspace symbols.
" nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
" " Do default action for next item.
" nnoremap <silent> <space>j :<C-u>CocNext<CR>
" " Do default action for previous item.
" nnoremap <silent> <space>k :<C-u>CocPrev<CR>
" " Resume latest coc list.
" nnoremap <silent> <space>p :<C-u>CocListResume<CR>
" Explorer
let g:coc_explorer_global_presets = {
\ 'floating': {
\ 'position': 'floating',
\ },
\ 'floatingLeftside': {
\ 'position': 'floating',
\ 'floating-position': 'left-center',
\ 'floating-width': 30,
\ },
\ 'floatingRightside': {
\ 'position': 'floating',
\ 'floating-position': 'right-center',
\ 'floating-width': 30,
\ },
\ 'simplify': {
\ 'file.child.template': '[selection | clip | 1] [indent][icon | 1] [filename omitCenter 1]'
\ }
\ }
"nmap <silent> <space>e :CocCommand explorer<CR>
" nnoremap <silent> <leader>e :CocCommand explorer<CR>
" nmap <space>f :CocCommand explorer --preset floatingRightside<CR>
autocmd BufEnter * if (winnr("$") == 1 && &filetype == 'coc-explorer') | q | endif
" Snippets
" Use <C-l> for trigger snippet expand.
imap <C-l> <Plug>(coc-snippets-expand)
" Use <C-j> for select text for visual placeholder of snippet.
vmap <C-j> <Plug>(coc-snippets-select)
" Use <C-j> for jump to next placeholder, it's default of coc.nvim
let g:coc_snippet_next = '<c-j>'
" Use <C-k> for jump to previous placeholder, it's default of coc.nvim
let g:coc_snippet_prev = '<c-k>'
" Use <C-j> for both expand and jump (make expand higher priority.)
imap <C-j> <Plug>(coc-snippets-expand-jump)
augroup MyCocExplorer
autocmd!
autocmd VimEnter * sil! au! FileExplorer *
autocmd BufEnter * let d = expand('%') | if isdirectory(d) | silent! bd | exe 'CocCommand explorer ' . d | endif
augroup END

View file

@ -1,5 +1,6 @@
let g:gitgutter_sign_allow_clobber = 1
let g:gitgutter_sign_added = '▎'
let g:gitgutter_sign_modified = '▎'
let g:gitgutter_sign_removed = '契'

View file

@ -0,0 +1,14 @@
" LSP config (the mappings used in the default file don't quite work right)
nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR>
nnoremap <silent> gD <cmd>lua vim.lsp.buf.declaration()<CR>
nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>
nnoremap <silent> gi <cmd>lua vim.lsp.buf.implementation()<CR>
nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR>
nnoremap <silent> <C-k> <cmd>lua vim.lsp.buf.signature_help()<CR>
nnoremap <silent> [d <cmd>lua vim.lsp.diagnostic.goto_prev()<CR>
nnoremap <silent> ]d <cmd>lua vim.lsp.diagnostic.goto_next()<CR>
" autoformat
autocmd BufWritePre *.js lua vim.lsp.buf.formatting_sync(nil, 100)
autocmd BufWritePre *.jsx lua vim.lsp.buf.formatting_sync(nil, 100)
autocmd BufWritePre *.py lua vim.lsp.buf.formatting_sync(nil, 100)

View file

@ -0,0 +1,45 @@
let g:nvim_tree_side = 'left' " | 'left' "left by default
let g:nvim_tree_width = 40 "30 by default
let g:nvim_tree_ignore = [ '.git', 'node_modules', '.cache' ] "empty by default
let g:nvim_tree_auto_open = 0 "0 by default, opens the tree when typing `vim $DIR` or `vim`
let g:nvim_tree_auto_close = 1 "0 by default, closes the tree when it's the last window
" let g:nvim_tree_auto_ignore_ft = 'startify' "empty by default, don't auto open tree on specific filetypes.
let g:nvim_tree_quit_on_open = 0 "0 by default, closes the tree when you open a file
let g:nvim_tree_follow = 1 "0 by default, this option allows the cursor to be updated when entering a buffer
let g:nvim_tree_indent_markers = 1 "0 by default, this option shows indent markers when folders are open
let g:nvim_tree_hide_dotfiles = 1 "0 by default, this option hides files and folders starting with a dot `.`
let g:nvim_tree_git_hl = 1 "0 by default, will enable file highlight for git attributes (can be used without the icons).
" let g:nvim_tree_root_folder_modifier = ':~' "This is the default. See :help filename-modifiers for more options
" let g:nvim_tree_tab_open = 1 "0 by default, will open the tree when entering a new tab and the tree was previously open
" let g:nvim_tree_width_allow_resize = 1 "0 by default, will not resize the tree when opening a file
let g:nvim_tree_disable_netrw = 1 "1 by default, disables netrw
let g:nvim_tree_hijack_netrw = 1 "1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities)
let g:nvim_tree_show_icons = {
\ 'git': 1,
\ 'folders': 1,
\ 'files': 1,
\ }
"If 0, do not show the icons for one of 'git' 'folder' and 'files'
"1 by default, notice that if 'files' is 1, it will only display
"if nvim-web-devicons is installed and on your runtimepath
" default will show icon by default if no icon is provided
" default shows no icon by default
let g:nvim_tree_icons = {
\ 'default': '',
\ 'symlink': '',
\ 'git': {
\ 'unstaged': "✗",
\ 'staged': "✓",
\ 'unmerged': "",
\ 'renamed': "➜",
\ 'untracked': "ﭖ"
\ },
\ 'folder': {
\ 'default': "",
\ 'open': "",
\ 'empty': "",
\ 'empty_open': "",
\ 'symlink': "",
\ }
\ }

1
spell/en.utf-8.add Normal file
View file

@ -0,0 +1 @@
lua

BIN
spell/en.utf-8.add.spl Normal file

Binary file not shown.

9
utils/install_latest_neovim.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
cd ~
sudo rm -r neovim
git clone https://github.com/neovim/neovim
cd neovim
sudo make CMAKE_BUILD_TYPE=Release install
cd ~
sudo rm -r neovim

84
vim-plug/extras.vim Normal file
View file

@ -0,0 +1,84 @@
" Plugin Graveyard
" Rainbow brackets
" Plug 'luochen1990/rainbow'
" Async Linting Engine
" TODO make sure to add ale config before plugin
" Plug 'dense-analysis/ale'
" Better Whitespace
" Plug 'ntpeters/vim-better-whitespace'
" Multiple Cursors
" TODO add this back in change from C-n
" Plug 'mg979/vim-visual-multi', {'branch': 'master'}
" Plug 'yuezk/vim-js'
" Plug 'maxmellon/vim-jsx-pretty'
" Plug 'jelera/vim-javascript-syntax'
" Debug
" Plug 'mfussenegger/nvim-dap'
" Plug 'nvim-dap-virtual-text'
" Sneak
" Plug 'justinmk/vim-sneak'
" Minimap
" Plug 'wfxr/minimap.vim'
" jsx syntax support
" Typescript syntax
" Plug 'HerringtonDarkholme/yats.vim'
" Multiple Cursors
" Plug 'terryma/vim-multiple-cursors'
" Plug 'kaicataldo/material.vim'
" Plug 'tomasiser/vim-code-dark'
" Plug 'mg979/vim-xtabline'
" Files
" Plug 'tpope/vim-eunuch'
" Vim Wiki
" Plug 'https://github.com/vimwiki/vimwiki.git'
" Better Comments
" Plug 'jbgutierrez/vim-better-comments'
" Echo doc
" Plug 'Shougo/echodoc.vim'
" Plug 'hardcoreplayers/spaceline.vim'
" Plug 'vim-airline/vim-airline'
" Plug 'vim-airline/vim-airline-themes'
" Ranger
" Plug 'francoiscabrol/ranger.vim'
" Plug 'rbgrouleff/bclose.vim'
" Making stuff
" Plug 'neomake/neomake'
" Plug 'mhinz/vim-signify'
" Plug 'preservim/nerdcommenter'
" Plug 'atishay/far.vim'
" Plug 'romgrk/lib.kom'
" Plug 'brooth/far.vim'
" Debugging
" Repeat stuff
" Plug 'tpope/vim-repeat'
" Convert binary, hex, etc..
" Plug 'glts/vim-radical'
" highlight all matches under cursor
" Plug 'RRethy/vim-illuminate'
" Surround
" Plug 'tpope/vim-surround'
" auto set indent settings
" Plug 'tpope/vim-sleuth'
" FZF
" Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
" Plug 'yuki-ycino/fzf-preview.vim', { 'branch': 'release', 'do': ':UpdateRemotePlugins' }
" Plug 'junegunn/fzf.vim'
" undo time travel
" Plug 'mbbill/undotree'
" " async tasks
" Plug 'skywind3000/asynctasks.vim'
" Plug 'skywind3000/asyncrun.vim'
" CoC
" Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Swap windows
" Plug 'wesQ3/vim-windowswap'
" Debugging
" Plug 'puremourning/vimspector'
" Plug 'szw/vim-maximizer'
" Treesitter
" Plug 'nvim-treesitter/playground'
" Plug 'nvim-treesitter/nvim-treesitter-refactor'
" Plug 'nvim-treesitter/nvim-treesitter-textobjects'
" Plug 'romgrk/nvim-treesitter-context'
" Neovim in Browser
" Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(1) } }

View file

@ -12,16 +12,10 @@ call plug#begin('~/.config/nvim/autoload/plugged')
Plug 'tpope/vim-commentary'
" Change dates fast
Plug 'tpope/vim-speeddating'
" Convert binary, hex, etc..
Plug 'glts/vim-radical'
" Repeat stuff
Plug 'tpope/vim-repeat'
" Text Navigation
Plug 'unblevable/quick-scope'
" Useful for React Commenting
Plug 'suy/vim-context-commentstring'
" highlight all matches under cursor
" Plug 'RRethy/vim-illuminate'
if exists('g:vscode')
" Easy motion for VSCode
@ -32,41 +26,19 @@ call plug#begin('~/.config/nvim/autoload/plugged')
" Easymotion
Plug 'easymotion/vim-easymotion'
" Surround
Plug 'tpope/vim-surround'
" Have the file system follow you around
Plug 'airblade/vim-rooter'
" auto set indent settings
Plug 'tpope/vim-sleuth'
" Better Syntax Support
Plug 'sheerun/vim-polyglot'
" Treesitter
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'nvim-treesitter/playground'
" Cool Icons
Plug 'kyazdani42/nvim-web-devicons'
Plug 'ryanoasis/vim-devicons'
" Auto pairs for '(' '[' '{'
Plug 'jiangmiao/auto-pairs'
" Closetags
Plug 'alvan/vim-closetag'
" Themes
Plug 'christianchiarulli/nvcode-color-schemes.vim'
" Intellisense
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Status Line
Plug 'glepnir/galaxyline.nvim'
" Ranger
Plug 'kevinhwang91/rnvimr'
" FZF
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
" Plug 'yuki-ycino/fzf-preview.vim', { 'branch': 'release', 'do': ':UpdateRemotePlugins' }
Plug 'junegunn/fzf.vim'
" Git
Plug 'airblade/vim-gitgutter'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rhubarb'
Plug 'junegunn/gv.vim'
Plug 'rhysd/git-messenger.vim'
" Terminal
Plug 'voldikss/vim-floaterm'
" Start Screen
@ -84,95 +56,51 @@ call plug#begin('~/.config/nvim/autoload/plugged')
Plug 'metakirby5/codi.vim'
" Better tabline
Plug 'romgrk/barbar.nvim'
" undo time travel
Plug 'mbbill/undotree'
" Find and replace
" Plug 'ChristianChiarulli/far.vim'
Plug 'brooth/far.vim'
" Auto change html tags
Plug 'AndrewRadev/tagalong.vim'
" live server
Plug 'turbio/bracey.vim'
" Smooth scroll
Plug 'psliwka/vim-smoothie'
" " async tasks
Plug 'skywind3000/asynctasks.vim'
Plug 'skywind3000/asyncrun.vim'
" Swap windows
Plug 'wesQ3/vim-windowswap'
" Markdown Preview
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & npm install' }
" Easily Create Gists
Plug 'mattn/vim-gist'
Plug 'mattn/webapi-vim'
" Colorizer
Plug 'norcalli/nvim-colorizer.lua'
" Intuitive buffer closing
Plug 'moll/vim-bbye'
" Debugging
Plug 'puremourning/vimspector'
Plug 'szw/vim-maximizer'
" Neovim in Browser
Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(1) } }
" Telescope
Plug 'nvim-lua/popup.nvim'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
" Rainbow brackets
" Plug 'luochen1990/rainbow'
" Async Linting Engine
" TODO make sure to add ale config before plugin
" Plug 'dense-analysis/ale'
" Better Whitespace
" Plug 'ntpeters/vim-better-whitespace'
" Multiple Cursors
" TODO add this back in change from C-n
" Plug 'mg979/vim-visual-multi', {'branch': 'master'}
" Plug 'yuezk/vim-js'
" Plug 'maxmellon/vim-jsx-pretty'
" Plug 'jelera/vim-javascript-syntax'
" Plugin Graveyard
" Intellisense
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/nvim-compe'
Plug 'glepnir/lspsaga.nvim'
Plug 'onsails/lspkind-nvim'
Plug 'kosayoda/nvim-lightbulb'
" File Explorer
Plug 'kyazdani42/nvim-tree.lua'
" Debug
" Plug 'mfussenegger/nvim-dap'
" Plug 'nvim-dap-virtual-text'
" Sneak
" Plug 'justinmk/vim-sneak'
" Plug 'nvim-treesitter/nvim-treesitter-refactor'
" Plug 'nvim-treesitter/nvim-treesitter-textobjects'
" Plug 'romgrk/nvim-treesitter-context'
" Minimap
" Plug 'wfxr/minimap.vim'
" jsx syntax support
" Typescript syntax
" Plug 'HerringtonDarkholme/yats.vim'
" Multiple Cursors
" Plug 'terryma/vim-multiple-cursors'
" Plug 'kaicataldo/material.vim'
" Plug 'tomasiser/vim-code-dark'
" Plug 'mg979/vim-xtabline'
" Files
" Plug 'tpope/vim-eunuch'
" Vim Wiki
" Plug 'https://github.com/vimwiki/vimwiki.git'
" Better Comments
" Plug 'jbgutierrez/vim-better-comments'
" Echo doc
" Plug 'Shougo/echodoc.vim'
" Plug 'hardcoreplayers/spaceline.vim'
" Plug 'vim-airline/vim-airline'
" Plug 'vim-airline/vim-airline-themes'
" Ranger
" Plug 'francoiscabrol/ranger.vim'
" Plug 'rbgrouleff/bclose.vim'
" Making stuff
" Plug 'neomake/neomake'
" Plug 'mhinz/vim-signify'
" Plug 'preservim/nerdcommenter'
" Plug 'atishay/far.vim'
" Plug 'romgrk/lib.kom'
" Plug 'brooth/far.vim'
" Debugging
" Themes
Plug 'christianchiarulli/nvcode-color-schemes.vim'
" Better Syntax Support
Plug 'sheerun/vim-polyglot'
" Git
Plug 'airblade/vim-gitgutter'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rhubarb'
Plug 'junegunn/gv.vim'
Plug 'rhysd/git-messenger.vim'
" Easily Create Gists
Plug 'mattn/vim-gist'
Plug 'mattn/webapi-vim'
" Webdev
" Auto change html tags
Plug 'AndrewRadev/tagalong.vim'
" Closetags
Plug 'alvan/vim-closetag'
" Colorizer
Plug 'norcalli/nvim-colorizer.lua'
" live server
Plug 'turbio/bracey.vim'
endif
call plug#end()