Просмотр исходного кода

Native LSP, more Lua, less CoC

Christian Chiarulli 4 лет назад
Родитель
Сommit
474f961b2a

+ 1 - 0
.gitignore

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

+ 46 - 76
README.md

@@ -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
-
-  ```
-  brew install --HEAD neovim # Nightly version
-
-  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
+To get the latest and greatest:
 
-  chmod +x /usr/local/bin/nvim
-  ```
-
-- Arch
+```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
+```
 
-  ```
-  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
+```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
+```
 
-  `npm i -g bash-language-server`
+Go [here](https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md)
 
-  ```
-  "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
+  https://github.com/nvim-lua/completion-nvim
 
-- coc-fzf-preview
-  - https://github.com/yuki-ycino/fzf-preview.vim/
-- coc-floaterm
+  https://github.com/nvim-telescope/telescope-frecency.nvim
 
 ## 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?

+ 0 - 155
coc-settings.json

@@ -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
-}

+ 4 - 0
general/functions.vim

@@ -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

+ 1 - 1
general/settings.vim

@@ -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

+ 73 - 47
init.vim

@@ -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

+ 27 - 83
keys/which-key.vim

@@ -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 - 0
lua/lsp-wrapper.lua

@@ -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 - 0
lua/lsp-wrapper.vim

@@ -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 - 0
lua/lsp/bash-ls.lua

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

+ 3 - 0
lua/lsp/css-ls.lua

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

+ 3 - 0
lua/lsp/docker-ls.lua

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

+ 3 - 0
lua/lsp/graphql-ls.lua

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

+ 11 - 0
lua/lsp/html-ls.lua

@@ -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{}

+ 3 - 0
lua/lsp/javascript-ls.lua

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

+ 11 - 0
lua/lsp/json-ls.lua

@@ -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 - 0
lua/lsp/lsp-config.lua

@@ -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 - 0
lua/lsp/lsp-kind.lua

@@ -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 - 0
lua/lsp/lua-ls.lua

@@ -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 - 0
lua/lsp/python-ls.lua

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

+ 3 - 0
lua/lsp/vim-ls.lua

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

+ 3 - 0
lua/lsp/yaml-ls.lua

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

+ 0 - 0
lua/plug-colorizer.lua → lua/plugins/colorizer-config.lua


+ 73 - 0
lua/plugins/compe-config.lua

@@ -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})

+ 0 - 0
lua/nvcodeline.lua → lua/plugins/galaxyline-config.lua


+ 2 - 0
lua/plugins/lspsaga-config.lua

@@ -0,0 +1,2 @@
+
+

+ 31 - 0
lua/plugins/nvimtree-config.lua

@@ -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"),
+}

+ 0 - 0
lua/config-telescope.lua → lua/plugins/telescope-config.lua


+ 0 - 0
lua/treesitter.lua → lua/plugins/treesitter-config.lua


+ 0 - 33
plug-config/coc/coc-extensions.vim

@@ -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',
-

+ 0 - 171
plug-config/coc/coc.vim

@@ -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

+ 1 - 0
plug-config/gitgutter.vim

@@ -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            = '契'

+ 14 - 0
plug-config/lsp-config.vim

@@ -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)
+

+ 45 - 0
plug-config/nvimtree-config.vim

@@ -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 - 0
spell/en.utf-8.add

@@ -0,0 +1 @@
+lua

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


+ 9 - 0
utils/install_latest_neovim.sh

@@ -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 - 0
vim-plug/extras.vim

@@ -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) } }

+ 33 - 105
vim-plug/plugins.vim

@@ -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()