Bläddra i källkod

Native LSP, more Lua, less CoC

Christian Chiarulli 4 år sedan
förälder
incheckning
474f961b2a

+ 1 - 0
.gitignore

@@ -10,4 +10,5 @@ session
 wiki/
 wiki/
 pack/
 pack/
 utils/java/*
 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
 This script only supports Mac, Ubuntu and Arch
 
 
-```
+```bash
 bash <(curl -s https://raw.githubusercontent.com/ChristianChiarulli/nvim/master/utils/install.sh)
 bash <(curl -s https://raw.githubusercontent.com/ChristianChiarulli/nvim/master/utils/install.sh)
 ```
 ```
 
 
 ## Install Neovim
 ## 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
 ## Clone this repo into your config
 
 
-```
+```bash
 git clone https://github.com/ChristianChiarulli/nvim.git ~/.config/nvim
 git clone https://github.com/ChristianChiarulli/nvim.git ~/.config/nvim
 ```
 ```
 
 
 ## Install python & node support
 ## Install python & node support
 
 
-```
+```bash
 pip install pynvim
 pip install pynvim
 ```
 ```
 
 
-```
+```bash
 npm i -g neovim
 npm i -g neovim
 ```
 ```
 
 
 ## Install Neovim remote
 ## Install Neovim remote
 
 
-```
+```bash
 pip install neovim-remote
 pip install neovim-remote
 ```
 ```
 
 
@@ -72,13 +61,13 @@ export PATH=$HOME/.local/bin:$PATH
 
 
 - Ubuntu
 - Ubuntu
 
 
-  ```
+  ```bash
   sudo apt install xsel
   sudo apt install xsel
   ```
   ```
 
 
 - Arch
 - Arch
 
 
-  ```
+  ```bash
   sudo pacman -S xsel
   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
 - universal-ctags
 - lazy git
 - lazy git
 - lazy docker
 - lazy docker
+- ninja (for lua lsp)
 
 
 Explanations and installation instruction can be found on my blog
 Explanations and installation instruction can be found on my blog
 
 
 ## Language Servers
 ## 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
 ## For FAR to work
 
 
-```
+```vim
 :UpdateRemotePlugins
 :UpdateRemotePlugins
 ```
 ```
 
 
 To replace in file make sure to specify `%:p`
 To replace in file make sure to specify `%:p`
 To replace across project specify `**/*.<your_extension>`
 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
 ## Vim Gists
 
 
 To use **vim-gists** you will need to configure the following:
 To use **vim-gists** you will need to configure the following:
 
 
-```
+```bash
 git config --global github.user <username>
 git config --global github.user <username>
 ```
 ```
 
 
@@ -165,19 +143,19 @@ You can install it on multiple platforms:
 
 
 - Mac
 - Mac
 
 
-  ```
+  ```bash
   brew cask install vscodium
   brew cask install vscodium
   ```
   ```
 
 
 - Arch
 - Arch
 
 
-  ```
+  ```bash
   yay -s vscodium-bin
   yay -s vscodium-bin
   ```
   ```
 
 
 - Snap
 - Snap
 
 
-  ```
+  ```bash
   snap install codium
   snap install codium
   ```
   ```
 
 
@@ -191,35 +169,27 @@ Along with some of my config files you can find in `utils/vscode_config`
 
 
 - Better Documentation
 - Better Documentation
   https://github.com/gennaro-tedesco/nvim-jqx
   https://github.com/gennaro-tedesco/nvim-jqx
-  https://github.com/nathunsmitty/nvim-ale-diagnostic
+
   https://github.com/mattn/efm-langserver
   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/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/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
 ## 0.5
 
 
-- native lsp
-- treesitter
+- native lsp (in progress)
+- treesitter (in progress)
 
 
 ## LOW PRIORITY TODO
 ## 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.
 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
 - multiple cursors
-- markdown table
 - galaxyline automatically grab colors from colorscheme
 - galaxyline automatically grab colors from colorscheme
 - tpope/vim-dadbod
 - tpope/vim-dadbod
 - neovide
 - 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
 - vimspector this is included but I don't plan on using it much
   - can be used with jdb, pdb, gdb, etc...
   - 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)
 - 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
 - resize with arrows in addition to meta
 - how to support meta key on for macOS?
 - 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(synID(line("."),col("."),0),"name") . "> lo<"
 \ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<cr>
 \ . 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 timeoutlen=100                      " By default timeoutlen is 1000 ms
 set clipboard=unnamedplus               " Copy paste between vim and everything else
 set clipboard=unnamedplus               " Copy paste between vim and everything else
 set incsearch
 set incsearch
-set guifont=JetBrainsMono\ Nerd\ Font\ Mono
+set guifont=JetBrainsMono\ Nerd\ Font\ Mono:h22
 
 
 " New stuff
 " New stuff
 " set notimeout nottimeout
 " set notimeout nottimeout

+ 73 - 47
init.vim

@@ -4,64 +4,70 @@
 " _/ // / / / / /__| |/ / / / / / / /
 " _/ // / / / / /__| |/ / / / / / / /
 "/___/_/ /_/_/\__(_)___/_/_/ /_/ /_/
 "/___/_/ /_/_/\__(_)___/_/_/ /_/ /_/
 
 
-
 " General Settings
 " General Settings
 if !exists('g:vscode')
 if !exists('g:vscode')
-  source $HOME/.config/nvim/plug-config/polyglot.vim
+  source ~/.config/nvim/plug-config/polyglot.vim
 endif
 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')
 if exists('g:vscode')
   " VS Code extension
   " 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
 else
 
 
   " Themes
   " 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
   " 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
 endif
 source $HOME/.config/nvim/plug-config/quickscope.vim
 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
 " Better nav for omnicomplete TODO figure out why this is being overridden
 inoremap <expr> <c-j> ("\<C-n>")
 inoremap <expr> <c-j> ("\<C-n>")
 inoremap <expr> <c-k> ("\<C-p>")
 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
 " Leader Key Maps
-
 let @s = 'veS"'
 let @s = 'veS"'
 
 
 " Timeout
 " Timeout
@@ -17,10 +16,6 @@ let g:which_key_map =  {}
 let g:which_key_sep = '→'
 let g:which_key_sep = '→'
 " set timeoutlen=100
 " 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
 " Not a fan of floating windows for this
 let g:which_key_use_floating_win = 0
 let g:which_key_use_floating_win = 0
 let g:which_key_max_size = 0
 let g:which_key_max_size = 0
@@ -39,15 +34,17 @@ autocmd  FileType which_key set laststatus=0 noshowmode noruler
 
 
 " Single mappings
 " Single mappings
 let g:which_key_map['/'] = [ ':call Comment()'                                 , 'comment' ]
 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['.'] = [ ':e $MYVIMRC'                                     , 'open init' ]
 let g:which_key_map[';'] = [ ':Commands'                                       , 'commands' ]
 let g:which_key_map[';'] = [ ':Commands'                                       , 'commands' ]
 let g:which_key_map['='] = [ '<C-W>='                                          , 'balance windows' ]
 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['h'] = [ '<C-W>s'                                          , 'split below']
 let g:which_key_map['n'] = [ ':let @/ = ""'                                    , 'no highlight' ]
 let g:which_key_map['n'] = [ ':let @/ = ""'                                    , 'no highlight' ]
 let g:which_key_map['o'] = [ ':RnvimrToggle'                                   , 'open' ]
 let g:which_key_map['o'] = [ ':RnvimrToggle'                                   , 'open' ]
 let g:which_key_map['p'] = [ ':Files'                                          , 'search files' ]
 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['T'] = [ ':TSHighlightCapturesUnderCursor'                 , 'treesitter highlight' ]
 let g:which_key_map['u'] = [ ':UndotreeToggle'                                 , 'undo tree']
 let g:which_key_map['u'] = [ ':UndotreeToggle'                                 , 'undo tree']
 let g:which_key_map['v'] = [ '<C-W>v'                                          , 'split right']
 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
       " CoC throws an error
       " \ 'a' : [':CocCommand bookmark.annotate', 'annotate bookmark'],
       " \ '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
 " s is for search powered by telescope
 let g:which_key_map.s = {
 let g:which_key_map.s = {
       \ 'name' : '+search' ,
       \ 'name' : '+search' ,
@@ -225,17 +192,6 @@ let g:which_key_map.s = {
       \ 'u' : [':Telescope colorscheme'                 , 'colorschemes'],
       \ 'u' : [':Telescope colorscheme'                 , 'colorschemes'],
       \ 'z' : [':Telescope current_buffer_fuzzy_find'   , 'buf_fuz_find'],
       \ '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 = {
 let g:which_key_map.S = {
       \ 'name' : '+Session' ,
       \ 'name' : '+Session' ,
@@ -297,46 +253,34 @@ let g:which_key_map.G = {
 " l is for language server protocol
 " l is for language server protocol
 let g:which_key_map.l = {
 let g:which_key_map.l = {
       \ 'name' : '+lsp' ,
       \ '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' : [':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
 " t is for terminal
 let g:which_key_map.t = {
 let g:which_key_map.t = {
       \ 'name' : '+terminal' ,
       \ 'name' : '+terminal' ,
-      \ ';' : [':FloatermNew --wintype=normal --height=6'        , 'terminal'],
+      \ ';' : [':FloatermNew --wintype=normal --height=6'       , 'terminal'],
       \ 'f' : [':FloatermNew fzf'                               , 'fzf'],
       \ 'f' : [':FloatermNew fzf'                               , 'fzf'],
       \ 'g' : [':FloatermNew lazygit'                           , 'git'],
       \ 'g' : [':FloatermNew lazygit'                           , 'git'],
       \ 'd' : [':FloatermNew lazydocker'                        , 'docker'],
       \ 'd' : [':FloatermNew lazydocker'                        , 'docker'],
@@ -347,7 +291,7 @@ let g:which_key_map.t = {
       \ 'r' : [':FloatermNew ranger'                            , 'ranger'],
       \ 'r' : [':FloatermNew ranger'                            , 'ranger'],
       \ 't' : [':FloatermToggle'                                , 'toggle'],
       \ 't' : [':FloatermToggle'                                , 'toggle'],
       \ 'y' : [':FloatermNew ytop'                              , 'ytop'],
       \ 'y' : [':FloatermNew ytop'                              , 'ytop'],
-      \ 's' : [':FloatermNew ncdu'                              , 'ncdu'],
+      \ 'u' : [':FloatermNew ncdu'                              , 'ncdu'],
       \ }
       \ }
 
 
 " w is for wiki
 " 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_added              = '▎'
 let g:gitgutter_sign_modified           = '▎'
 let g:gitgutter_sign_modified           = '▎'
 let g:gitgutter_sign_removed            = '契'
 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'
     Plug 'tpope/vim-commentary'
     " Change dates fast
     " Change dates fast
     Plug 'tpope/vim-speeddating'
     Plug 'tpope/vim-speeddating'
-    " Convert binary, hex, etc..
-    Plug 'glts/vim-radical'
-    " Repeat stuff
-    Plug 'tpope/vim-repeat'
     " Text Navigation
     " Text Navigation
     Plug 'unblevable/quick-scope'
     Plug 'unblevable/quick-scope'
     " Useful for React Commenting 
     " Useful for React Commenting 
     Plug 'suy/vim-context-commentstring'
     Plug 'suy/vim-context-commentstring'
-    " highlight all matches under cursor
-    " Plug 'RRethy/vim-illuminate'
 
 
   if exists('g:vscode')
   if exists('g:vscode')
     " Easy motion for VSCode
     " Easy motion for VSCode
@@ -32,41 +26,19 @@ call plug#begin('~/.config/nvim/autoload/plugged')
 
 
     " Easymotion
     " Easymotion
     Plug 'easymotion/vim-easymotion'
     Plug 'easymotion/vim-easymotion'
-    " Surround
-    Plug 'tpope/vim-surround'
     " Have the file system follow you around
     " Have the file system follow you around
     Plug 'airblade/vim-rooter'
     Plug 'airblade/vim-rooter'
-    " auto set indent settings
-    Plug 'tpope/vim-sleuth'
-    " Better Syntax Support
-    Plug 'sheerun/vim-polyglot'
     " Treesitter
     " Treesitter
     Plug 'nvim-treesitter/nvim-treesitter'
     Plug 'nvim-treesitter/nvim-treesitter'
-    Plug 'nvim-treesitter/playground'
     " Cool Icons
     " Cool Icons
     Plug 'kyazdani42/nvim-web-devicons'
     Plug 'kyazdani42/nvim-web-devicons'
     Plug 'ryanoasis/vim-devicons'
     Plug 'ryanoasis/vim-devicons'
     " Auto pairs for '(' '[' '{'
     " Auto pairs for '(' '[' '{'
     Plug 'jiangmiao/auto-pairs'
     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
     " Status Line
     Plug 'glepnir/galaxyline.nvim'
     Plug 'glepnir/galaxyline.nvim'
+    " Ranger
     Plug 'kevinhwang91/rnvimr'
     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
     " Terminal
     Plug 'voldikss/vim-floaterm'
     Plug 'voldikss/vim-floaterm'
     " Start Screen
     " Start Screen
@@ -84,95 +56,51 @@ call plug#begin('~/.config/nvim/autoload/plugged')
     Plug 'metakirby5/codi.vim'
     Plug 'metakirby5/codi.vim'
     " Better tabline
     " Better tabline
     Plug 'romgrk/barbar.nvim'
     Plug 'romgrk/barbar.nvim'
-    " undo time travel
-    Plug 'mbbill/undotree'
     " Find and replace
     " Find and replace
-    " Plug 'ChristianChiarulli/far.vim'
     Plug 'brooth/far.vim'
     Plug 'brooth/far.vim'
-    " Auto change html tags
-    Plug 'AndrewRadev/tagalong.vim'
-    " live server
-    Plug 'turbio/bracey.vim'
     " Smooth scroll
     " Smooth scroll
     Plug 'psliwka/vim-smoothie'
     Plug 'psliwka/vim-smoothie'
-    " " async tasks
-    Plug 'skywind3000/asynctasks.vim'
-    Plug 'skywind3000/asyncrun.vim'
-    " Swap windows
-    Plug 'wesQ3/vim-windowswap'
     " Markdown Preview
     " Markdown Preview
     Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & npm install'  }
     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
     " Intuitive buffer closing
     Plug 'moll/vim-bbye'
     Plug 'moll/vim-bbye'
-    " Debugging
-    Plug 'puremourning/vimspector'
-    Plug 'szw/vim-maximizer'
-    " Neovim in Browser
-    Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(1) } }
     " Telescope
     " Telescope
     Plug 'nvim-lua/popup.nvim'
     Plug 'nvim-lua/popup.nvim'
     Plug 'nvim-lua/plenary.nvim'
     Plug 'nvim-lua/plenary.nvim'
     Plug 'nvim-telescope/telescope.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
   endif
 
 
 call plug#end()
 call plug#end()