summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua4
-rw-r--r--lua/lsp/java-ls.lua15
-rw-r--r--lua/lsp/json-ls.lua10
-rw-r--r--lua/lsp/python-ls.lua2
-rw-r--r--lua/lsp/yaml-ls.lua2
-rw-r--r--lua/nv-vscode/init.vim4
-rw-r--r--lua/utils.lua1
-rwxr-xr-xutils/bin/java-linux-ls28
8 files changed, 66 insertions, 0 deletions
diff --git a/init.lua b/init.lua
index b8040799..c869cca7 100644
--- a/init.lua
+++ b/init.lua
@@ -38,4 +38,8 @@ else
require('lsp.lua-ls')
require('lsp.bash-ls')
require('lsp.js-ts-ls')
+ -- require('lsp.java-ls')
+ require('lsp.python-ls')
+ require('lsp.json-ls')
+ require('lsp.yaml-ls')
end
diff --git a/lua/lsp/java-ls.lua b/lua/lsp/java-ls.lua
new file mode 100644
index 00000000..72ce5104
--- /dev/null
+++ b/lua/lsp/java-ls.lua
@@ -0,0 +1,15 @@
+-- In Vimscript
+-- augroup lsp
+-- au!
+-- au FileType java lua require('jdtls').start_or_attach({cmd = {'java-linux-ls'}})
+-- augroup end
+-- find_root looks for parent directories relative to the current buffer containing one of the given arguments.
+-- require'lspconfig'.jdtls.setup {cmd = {'java-linux-ls'}}
+if vim.fn.has("mac") == 1 then
+ JAVA_LS_EXECUTABLE = 'java-mac-ls'
+elseif vim.fn.has("unix") == 1 then
+ JAVA_LS_EXECUTABLE = 'java-linux-ls'
+else
+ print("Unsupported system")
+end
+require('jdtls').start_or_attach({cmd = {JAVA_LS_EXECUTABLE}, root_dir = require('jdtls.setup').find_root({'gradle.build', 'pom.xml'})})
diff --git a/lua/lsp/json-ls.lua b/lua/lsp/json-ls.lua
new file mode 100644
index 00000000..d13fed3f
--- /dev/null
+++ b/lua/lsp/json-ls.lua
@@ -0,0 +1,10 @@
+-- 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
+ }
+ }
+}
diff --git a/lua/lsp/python-ls.lua b/lua/lsp/python-ls.lua
new file mode 100644
index 00000000..11eeef91
--- /dev/null
+++ b/lua/lsp/python-ls.lua
@@ -0,0 +1,2 @@
+-- npm i -g pyright
+require'lspconfig'.pyright.setup{}
diff --git a/lua/lsp/yaml-ls.lua b/lua/lsp/yaml-ls.lua
new file mode 100644
index 00000000..904f20ea
--- /dev/null
+++ b/lua/lsp/yaml-ls.lua
@@ -0,0 +1,2 @@
+-- npm install -g yaml-language-server
+require'lspconfig'.yamlls.setup{}
diff --git a/lua/nv-vscode/init.vim b/lua/nv-vscode/init.vim
index 9ca19a3b..746d189d 100644
--- a/lua/nv-vscode/init.vim
+++ b/lua/nv-vscode/init.vim
@@ -103,3 +103,7 @@ xmap gc <Plug>VSCodeCommentary
nmap gc <Plug>VSCodeCommentary
omap gc <Plug>VSCodeCommentary
nmap gcc <Plug>VSCodeCommentaryLine
+
+" Simulate same TAB behavior in VSCode
+ nmap <Tab> :Tabnext<CR>
+ nmap <S-Tab> :Tabprev<CR>
diff --git a/lua/utils.lua b/lua/utils.lua
index 277ca728..22fe415a 100644
--- a/lua/utils.lua
+++ b/lua/utils.lua
@@ -26,6 +26,7 @@ define_augroups(
{'BufWinEnter', '*', 'setlocal formatoptions-=c formatoptions-=r formatoptions-=o'},
{'BufRead', '*', 'setlocal formatoptions-=c formatoptions-=r formatoptions-=o'},
{'BufNewFile', '*', 'setlocal formatoptions-=c formatoptions-=r formatoptions-=o'},
+ {'FileType', 'java', 'luafile ~/.config/nvim/lua/lsp/java-ls.lua'},
},
}
)
diff --git a/utils/bin/java-linux-ls b/utils/bin/java-linux-ls
new file mode 100755
index 00000000..3c76662e
--- /dev/null
+++ b/utils/bin/java-linux-ls
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+# NOTE:
+# This doesn't work as is on Windows. You'll need to create an equivalent `.bat` file instead
+#
+# NOTE:
+# If you're not using Linux you'll need to adjust the `-configuration` option
+# to point to the `config_mac' or `config_win` folders depending on your system.
+
+JAR="$HOME/.config/nvim/ls/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/plugins/org.eclipse.equinox.launcher_*.jar"
+GRADLE_HOME=$HOME/gradle $HOME/.sdkman/candidates/java/current/bin/java \
+ -Declipse.application=org.eclipse.jdt.ls.core.id1 \
+ -Dosgi.bundles.defaultStartLevel=4 \
+ -Declipse.product=org.eclipse.jdt.ls.core.product \
+ -Dlog.protocol=true \
+ -Dlog.level=ALL \
+ -javaagent:/usr/local/share/lombok/lombok.jar \
+ -Xms1g \
+ -Xmx2G \
+ -jar $(echo "$JAR") \
+ -configuration "$HOME/.config/nvim/ls/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/config_linux" \
+ -data "${1:-$HOME/workspace}" \
+ --add-modules=ALL-SYSTEM \
+ --add-opens java.base/java.util=ALL-UNNAMED \
+ --add-opens java.base/java.lang=ALL-UNNAMED
+
+ # for older java versions if you wanna use lombok
+ # -Xbootclasspath/a:/usr/local/share/lombok/lombok.jar \