summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md20
-rw-r--r--ftplugin/c.lua8
-rw-r--r--ftplugin/clojure.lua5
-rw-r--r--ftplugin/cmake.lua5
-rw-r--r--[l---------]ftplugin/cpp.lua2
-rw-r--r--ftplugin/cs.lua5
-rw-r--r--ftplugin/css.lua5
-rw-r--r--ftplugin/dart.lua5
-rw-r--r--ftplugin/dockerfile.lua5
-rw-r--r--ftplugin/elixir.lua13
-rw-r--r--ftplugin/elm.lua5
-rw-r--r--ftplugin/erlang.lua5
-rw-r--r--ftplugin/euphoria3.lua13
-rw-r--r--ftplugin/fish.lua5
-rw-r--r--ftplugin/go.lua5
-rw-r--r--ftplugin/graphql.lua5
-rw-r--r--ftplugin/html.lua5
-rw-r--r--ftplugin/java.lua5
-rw-r--r--ftplugin/javascript.lua2
-rw-r--r--ftplugin/javascriptreact.lua4
-rw-r--r--ftplugin/json.lua5
-rw-r--r--ftplugin/julia.lua5
-rw-r--r--ftplugin/kotlin.lua5
-rw-r--r--ftplugin/lua.lua5
-rw-r--r--ftplugin/php.lua5
-rw-r--r--ftplugin/python.lua7
-rw-r--r--ftplugin/r.lua6
-rw-r--r--ftplugin/ruby.lua6
-rw-r--r--ftplugin/rust.lua8
-rw-r--r--ftplugin/scala.lua5
-rw-r--r--ftplugin/sh.lua5
-rw-r--r--ftplugin/svelte.lua5
-rw-r--r--ftplugin/swift.lua5
-rw-r--r--ftplugin/tex.lua5
-rw-r--r--ftplugin/tf.lua5
-rw-r--r--ftplugin/typescript.lua4
-rw-r--r--ftplugin/typescriptreact.lua4
-rw-r--r--ftplugin/vim.lua5
-rw-r--r--ftplugin/vue.lua5
-rw-r--r--ftplugin/yaml.lua5
-rw-r--r--ftplugin/zig.lua5
-rw-r--r--ftplugin/zsh.lua5
-rw-r--r--init.lua33
-rw-r--r--lua/core/bufferline.lua2
-rw-r--r--lua/core/compe.lua6
-rw-r--r--lua/core/dap.lua23
-rw-r--r--lua/core/dashboard.lua14
-rw-r--r--lua/core/formatter.lua60
-rw-r--r--lua/core/galaxyline.lua4
-rw-r--r--lua/core/gitsigns.lua4
-rw-r--r--lua/core/linter.lua33
-rw-r--r--lua/core/nvimtree.lua4
-rw-r--r--lua/core/status_colors.lua2
-rw-r--r--lua/core/telescope.lua4
-rw-r--r--lua/core/terminal.lua6
-rw-r--r--lua/core/treesitter.lua118
-rw-r--r--lua/core/which-key.lua30
-rw-r--r--lua/core/zen.lua34
-rw-r--r--lua/default-config.lua859
-rw-r--r--lua/keymappings.lua8
-rw-r--r--lua/lang/clang.lua159
-rw-r--r--lua/lang/clojure.lua37
-rw-r--r--lua/lang/cmake.lua42
-rw-r--r--lua/lang/cs.lua38
-rw-r--r--lua/lang/css.lua77
-rw-r--r--lua/lang/dart.lua59
-rw-r--r--lua/lang/dockerfile.lua39
-rw-r--r--lua/lang/elixir.lua61
-rw-r--r--lua/lang/elm.lua48
-rw-r--r--lua/lang/erlang.lua32
-rw-r--r--lua/lang/euphoria3.lua42
-rw-r--r--lua/lang/fish.lua28
-rw-r--r--lua/lang/go.lua60
-rw-r--r--lua/lang/graphql.lua38
-rw-r--r--lua/lang/html.lua50
-rw-r--r--lua/lang/java.lua127
-rw-r--r--lua/lang/javascript.lua25
-rw-r--r--lua/lang/javascriptreact.lua25
-rw-r--r--lua/lang/json.lua72
-rw-r--r--lua/lang/julia.lua53
-rw-r--r--lua/lang/kotlin.lua67
-rw-r--r--lua/lang/less.lua25
-rw-r--r--lua/lang/lua.lua87
-rw-r--r--lua/lang/php.lua88
-rw-r--r--lua/lang/python.lua95
-rw-r--r--lua/lang/r.lua56
-rw-r--r--lua/lang/ruby.lua77
-rw-r--r--lua/lang/rust.lua155
-rw-r--r--lua/lang/scala.lua80
-rw-r--r--lua/lang/sh.lua65
-rw-r--r--lua/lang/svelte.lua39
-rw-r--r--lua/lang/swift.lua55
-rw-r--r--lua/lang/terraform.lua57
-rw-r--r--lua/lang/tex.lua159
-rw-r--r--lua/lang/typescript.lua25
-rw-r--r--lua/lang/typescriptreact.lua25
-rw-r--r--lua/lang/vim.lua40
-rw-r--r--lua/lang/vue.lua71
-rw-r--r--lua/lang/yaml.lua54
-rw-r--r--lua/lang/zig.lua58
-rw-r--r--lua/lang/zsh.lua53
-rw-r--r--lua/lsp/angular-ls.lua6
-rw-r--r--lua/lsp/emmet-ls.lua23
-rw-r--r--lua/lsp/init.lua76
-rw-r--r--lua/lsp/null-ls.lua70
-rw-r--r--lua/lsp/svelte-ls.lua5
-rw-r--r--lua/lsp/tailwindcss-ls.lua13
-rw-r--r--lua/lsp/ts-fmt-lint.lua72
-rw-r--r--lua/lsp/tsserver-ls.lua83
-rw-r--r--lua/lv-user/README.md5
-rw-r--r--lua/lv-utils/init.lua36
-rw-r--r--lua/plugins.lua170
-rw-r--r--lua/settings.lua61
-rwxr-xr-xutils/installer/install.sh9
-rw-r--r--utils/installer/lv-config.example-no-ts.lua64
-rw-r--r--utils/installer/lv-config.example.lua88
-rwxr-xr-xutils/installer/uninstall.sh4
-rw-r--r--utils/julia/Manifest.toml (renamed from lua/lsp/julia/Manifest.toml)0
-rw-r--r--utils/julia/Project.toml (renamed from lua/lsp/julia/Project.toml)0
-rw-r--r--utils/julia/run.jl (renamed from lua/lsp/julia/run.jl)0
120 files changed, 1129 insertions, 3685 deletions
diff --git a/README.md b/README.md
index 6077256c..080d19d2 100644
--- a/README.md
+++ b/README.md
@@ -77,12 +77,10 @@ Example:
-- O.format_on_save = false -- to disbale formatting on save
-- O.lint_on_save = false -- to disable formatting on save
O.completion.autocomplete = true
-O.default_options.relativenumber = true
O.colorscheme = 'spacegray'
-O.default_options.timeoutlen = 100
-- keymappings
-O.keys.leader_key = "space"
+O.leader = "space"
-- overwrite the key-mappings provided by LunarVim for any mode, or leave it empty to keep them
O.keys.normal_mode = {
-- Page down/up
@@ -101,7 +99,6 @@ vim.api.nvim_set_keymap("i", "<C-Space>", "compe#complete()", { noremap = true,
-- After changing plugin config it is recommended to run :PackerCompile
O.plugin.dashboard.active = true
O.plugin.terminal.active = true
-O.plugin.zen.active = true
-- if you don't want all the parsers change this to a table of the ones you want
O.treesitter.ensure_installed = "all"
@@ -142,7 +139,7 @@ O.lang.python.analysis.use_library_code_types = true
-- O.lang.formatter.go.exe = "goimports"
-- Additional Plugins
--- O.user_plugins = {
+-- O.plugins = {
-- {"folke/tokyonight.nvim"},
-- {
-- "ray-x/lsp_signature.nvim",
@@ -156,16 +153,9 @@ O.lang.python.analysis.use_library_code_types = true
-- }
-- Autocommands (https://neovim.io/doc/user/autocmd.html)
--- O.user_autocommands = {{ "BufWinEnter", "*", "echo \"hi again\""}}
-
--- Additional Leader bindings for WhichKey
--- O.user_which_key = {
--- A = {
--- name = "+Custom Leader Keys",
--- a = { "<cmd>echo 'first custom command'<cr>", "Description for a" },
--- b = { "<cmd>echo 'second custom command'<cr>", "Description for b" },
--- },
--- }
+-- O.autocommands = {{ "BufWinEnter", "*", "echo \"hi again\""}}
+
+-- TODO Additional Leader bindings for WhichKey
-- To link your init.vim (until you find Lua replacements)
-- vim.cmd('source ' .. CONFIG_PATH .. '/lua/lv-user/init.vim')
diff --git a/ftplugin/c.lua b/ftplugin/c.lua
index c4fbdd16..3f931e4a 100644
--- a/ftplugin/c.lua
+++ b/ftplugin/c.lua
@@ -1,4 +1,4 @@
-require("lang.clang").format()
-require("lang.clang").lint()
-require("lang.clang").lsp()
-require("lang.clang").dap()
+require("lsp").setup "c"
+
+-- TODO get from dap
+-- require("lang.c").dap()
diff --git a/ftplugin/clojure.lua b/ftplugin/clojure.lua
index 17d79724..683720a5 100644
--- a/ftplugin/clojure.lua
+++ b/ftplugin/clojure.lua
@@ -1,4 +1 @@
-require("lang.clojure").format()
-require("lang.clojure").lint()
-require("lang.clojure").lsp()
-require("lang.clojure").dap()
+require("lsp").setup "clojure"
diff --git a/ftplugin/cmake.lua b/ftplugin/cmake.lua
index 8d50c595..56d30106 100644
--- a/ftplugin/cmake.lua
+++ b/ftplugin/cmake.lua
@@ -1,4 +1 @@
-require("lang.cmake").format()
-require("lang.cmake").lint()
-require("lang.cmake").lsp()
-require("lang.cmake").dap()
+require("lsp").setup "cmake"
diff --git a/ftplugin/cpp.lua b/ftplugin/cpp.lua
index d2be5311..6028ea49 120000..100644
--- a/ftplugin/cpp.lua
+++ b/ftplugin/cpp.lua
@@ -1 +1 @@
-c.lua \ No newline at end of file
+require("lsp").setup "cpp"
diff --git a/ftplugin/cs.lua b/ftplugin/cs.lua
index cf2e31c6..dd76f973 100644
--- a/ftplugin/cs.lua
+++ b/ftplugin/cs.lua
@@ -1,4 +1 @@
-require("lang.cs").format()
-require("lang.cs").lint()
-require("lang.cs").lsp()
-require("lang.cs").dap()
+require("lsp").setup "csharp"
diff --git a/ftplugin/css.lua b/ftplugin/css.lua
index 846c6a83..094ed2a3 100644
--- a/ftplugin/css.lua
+++ b/ftplugin/css.lua
@@ -1,4 +1 @@
-require("lang.css").format()
-require("lang.css").lint()
-require("lang.css").lsp()
-require("lang.css").dap()
+require("lsp").setup "css"
diff --git a/ftplugin/dart.lua b/ftplugin/dart.lua
index 1db4fe05..9f0ccfa0 100644
--- a/ftplugin/dart.lua
+++ b/ftplugin/dart.lua
@@ -1,4 +1 @@
-require("lang.dart").format()
-require("lang.dart").lint()
-require("lang.dart").lsp()
-require("lang.dart").dap()
+require("lsp").setup "dart"
diff --git a/ftplugin/dockerfile.lua b/ftplugin/dockerfile.lua
index 8a43c764..72ec7f90 100644
--- a/ftplugin/dockerfile.lua
+++ b/ftplugin/dockerfile.lua
@@ -1,4 +1 @@
-require("lang.dockerfile").format()
-require("lang.dockerfile").lint()
-require("lang.dockerfile").lsp()
-require("lang.dockerfile").dap()
+require("lsp").setup "docker"
diff --git a/ftplugin/elixir.lua b/ftplugin/elixir.lua
index 07b9625b..f16f71fa 100644
--- a/ftplugin/elixir.lua
+++ b/ftplugin/elixir.lua
@@ -1,4 +1,9 @@
-require("lang.elixir").format()
-require("lang.elixir").lint()
-require("lang.elixir").lsp()
-require("lang.elixir").dap()
+require("lsp").setup "elixir"
+
+-- TODO: do we need this?
+-- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir)
+-- vim.cmd [[
+-- au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
+-- au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir
+-- au BufRead,BufNewFile mix.lock set filetype=elixir
+-- ]]
diff --git a/ftplugin/elm.lua b/ftplugin/elm.lua
index 0868b9db..38fda314 100644
--- a/ftplugin/elm.lua
+++ b/ftplugin/elm.lua
@@ -1,4 +1 @@
-require("lang.elm").format()
-require("lang.elm").lint()
-require("lang.elm").lsp()
-require("lang.elm").dap()
+require("lsp").setup "elm"
diff --git a/ftplugin/erlang.lua b/ftplugin/erlang.lua
index b7231c41..c6426dba 100644
--- a/ftplugin/erlang.lua
+++ b/ftplugin/erlang.lua
@@ -1,4 +1 @@
-require("lang.erlang").format()
-require("lang.erlang").lint()
-require("lang.erlang").lsp()
-require("lang.erlang").dap()
+require("lsp").setup "erlang"
diff --git a/ftplugin/euphoria3.lua b/ftplugin/euphoria3.lua
index 67da6c48..391c51ad 100644
--- a/ftplugin/euphoria3.lua
+++ b/ftplugin/euphoria3.lua
@@ -1,4 +1,9 @@
-require("lang.euphoria3").format()
-require("lang.euphoria3").lint()
-require("lang.euphoria3").lsp()
-require("lang.euphoria3").dap()
+require("lsp").setup "erlang"
+
+-- TODO: do we need this?
+-- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir)
+-- vim.cmd [[
+-- au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
+-- au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir
+-- au BufRead,BufNewFile mix.lock set filetype=elixir
+-- ]]
diff --git a/ftplugin/fish.lua b/ftplugin/fish.lua
index 00416a08..575ec434 100644
--- a/ftplugin/fish.lua
+++ b/ftplugin/fish.lua
@@ -1,4 +1 @@
-require("lang.fish").format()
-require("lang.fish").lint()
-require("lang.fish").lsp()
-require("lang.fish").dap()
+require("lsp").setup "fish"
diff --git a/ftplugin/go.lua b/ftplugin/go.lua
index e5b8475f..218b634c 100644
--- a/ftplugin/go.lua
+++ b/ftplugin/go.lua
@@ -1,4 +1 @@
-require("lang.go").format()
-require("lang.go").lint()
-require("lang.go").lsp()
-require("lang.go").dap()
+require("lsp").setup "go"
diff --git a/ftplugin/graphql.lua b/ftplugin/graphql.lua
index 30bddcc4..83e8878d 100644
--- a/ftplugin/graphql.lua
+++ b/ftplugin/graphql.lua
@@ -1,4 +1 @@
-require("lang.graphql").format()
-require("lang.graphql").lint()
-require("lang.graphql").lsp()
-require("lang.graphql").dap()
+require("lsp").setup "graphql"
diff --git a/ftplugin/html.lua b/ftplugin/html.lua
index 70c3295a..c60394c0 100644
--- a/ftplugin/html.lua
+++ b/ftplugin/html.lua
@@ -1,4 +1 @@
-require("lang.html").format()
-require("lang.html").lint()
-require("lang.html").lsp()
-require("lang.html").dap()
+require("lsp").setup "html"
diff --git a/ftplugin/java.lua b/ftplugin/java.lua
index 898cf8af..dcb46ca2 100644
--- a/ftplugin/java.lua
+++ b/ftplugin/java.lua
@@ -1,4 +1 @@
-require("lang.java").format()
-require("lang.java").lint()
-require("lang.java").lsp()
-require("lang.java").dap()
+require("lsp").setup "java"
diff --git a/ftplugin/javascript.lua b/ftplugin/javascript.lua
index fc59ab68..37b95c71 100644
--- a/ftplugin/javascript.lua
+++ b/ftplugin/javascript.lua
@@ -1 +1 @@
-require "lsp.tsserver-ls"
+require("lsp").setup "javascript"
diff --git a/ftplugin/javascriptreact.lua b/ftplugin/javascriptreact.lua
index f74b54e9..90920166 100644
--- a/ftplugin/javascriptreact.lua
+++ b/ftplugin/javascriptreact.lua
@@ -1,3 +1 @@
-require "lsp.tsserver-ls"
-
-vim.cmd "setl ts=2 sw=2"
+require("lsp").setup "javascriptreact"
diff --git a/ftplugin/json.lua b/ftplugin/json.lua
index 0408f9b5..18368cf9 100644
--- a/ftplugin/json.lua
+++ b/ftplugin/json.lua
@@ -1,4 +1 @@
-require("lang.json").format()
-require("lang.json").lint()
-require("lang.json").lsp()
-require("lang.json").dap()
+require("lsp").setup "json"
diff --git a/ftplugin/julia.lua b/ftplugin/julia.lua
index 7e16d7bd..9840be1f 100644
--- a/ftplugin/julia.lua
+++ b/ftplugin/julia.lua
@@ -1,4 +1 @@
-require("lang.julia").format()
-require("lang.julia").lint()
-require("lang.julia").lsp()
-require("lang.julia").dap()
+require("lsp").setup "julia"
diff --git a/ftplugin/kotlin.lua b/ftplugin/kotlin.lua
index 2677c287..a0e6d5d6 100644
--- a/ftplugin/kotlin.lua
+++ b/ftplugin/kotlin.lua
@@ -1,4 +1 @@
-require("lang.kotlin").format()
-require("lang.kotlin").lint()
-require("lang.kotlin").lsp()
-require("lang.kotlin").dap()
+require("lsp").setup "kotlin"
diff --git a/ftplugin/lua.lua b/ftplugin/lua.lua
index 37ebab42..2ed88315 100644
--- a/ftplugin/lua.lua
+++ b/ftplugin/lua.lua
@@ -1,4 +1 @@
-require("lang.lua").format()
-require("lang.lua").lint()
-require("lang.lua").lsp()
-require("lang.lua").dap()
+require("lsp").setup "lua"
diff --git a/ftplugin/php.lua b/ftplugin/php.lua
index c319ea67..4eabcf71 100644
--- a/ftplugin/php.lua
+++ b/ftplugin/php.lua
@@ -1,4 +1 @@
-require("lang.php").format()
-require("lang.php").lint()
-require("lang.php").lsp()
-require("lang.php").dap()
+require("lsp").setup "php"
diff --git a/ftplugin/python.lua b/ftplugin/python.lua
index 85f08beb..3e79e6bc 100644
--- a/ftplugin/python.lua
+++ b/ftplugin/python.lua
@@ -1,4 +1,3 @@
-require("lang.python").format()
-require("lang.python").lint()
-require("lang.python").lsp()
-require("lang.python").dap()
+require("lsp").setup "python"
+-- TODO get from dap
+-- require("lang.python").dap()
diff --git a/ftplugin/r.lua b/ftplugin/r.lua
index 6de40bda..296d3c86 100644
--- a/ftplugin/r.lua
+++ b/ftplugin/r.lua
@@ -1,4 +1,2 @@
-require("lang.r").format()
-require("lang.r").lint()
-require("lang.r").lsp()
-require("lang.r").dap()
+-- R -e 'install.packages("languageserver",repos = "http://cran.us.r-project.org")'
+require("lsp").setup "r"
diff --git a/ftplugin/ruby.lua b/ftplugin/ruby.lua
index 6022504c..7e968917 100644
--- a/ftplugin/ruby.lua
+++ b/ftplugin/ruby.lua
@@ -1,4 +1,2 @@
-require("lang.ruby").format()
-require("lang.ruby").lint()
-require("lang.ruby").lsp()
-require("lang.ruby").dap()
+-- also support sorbet
+require("lsp").setup "ruby"
diff --git a/ftplugin/rust.lua b/ftplugin/rust.lua
index 74728407..f1623f25 100644
--- a/ftplugin/rust.lua
+++ b/ftplugin/rust.lua
@@ -1,4 +1,4 @@
-require("lang.rust").format()
-require("lang.rust").lint()
-require("lang.rust").lsp()
-require("lang.rust").dap()
+require("lsp").setup "rust"
+
+-- TODO get from dap
+-- require("lang.rust").dap()
diff --git a/ftplugin/scala.lua b/ftplugin/scala.lua
index 3b726fb6..169e36ad 100644
--- a/ftplugin/scala.lua
+++ b/ftplugin/scala.lua
@@ -1,4 +1 @@
-require("lang.scala").format()
-require("lang.scala").lint()
-require("lang.scala").lsp()
-require("lang.scala").dap()
+require("lsp").setup "scala"
diff --git a/ftplugin/sh.lua b/ftplugin/sh.lua
index ee3a27d7..4f18fbca 100644
--- a/ftplugin/sh.lua
+++ b/ftplugin/sh.lua
@@ -1,4 +1 @@
-require("lang.sh").format()
-require("lang.sh").lint()
-require("lang.sh").lsp()
-require("lang.sh").dap()
+require("lsp").setup "sh"
diff --git a/ftplugin/svelte.lua b/ftplugin/svelte.lua
index 108a0fc3..175a5cbd 100644
--- a/ftplugin/svelte.lua
+++ b/ftplugin/svelte.lua
@@ -1,4 +1 @@
-require("lang.svelte").format()
-require("lang.svelte").lint()
-require("lang.svelte").lsp()
-require("lang.svelte").dap()
+require("lsp").setup "svelte"
diff --git a/ftplugin/swift.lua b/ftplugin/swift.lua
index 64d87e1c..1ae7554a 100644
--- a/ftplugin/swift.lua
+++ b/ftplugin/swift.lua
@@ -1,4 +1 @@
-require("lang.swift").format()
-require("lang.swift").lint()
-require("lang.swift").lsp()
-require("lang.swift").dap()
+require("lsp").setup "swift"
diff --git a/ftplugin/tex.lua b/ftplugin/tex.lua
index 3de774f4..e9a98ec5 100644
--- a/ftplugin/tex.lua
+++ b/ftplugin/tex.lua
@@ -1,4 +1 @@
-require("lang.tex").format()
-require("lang.tex").lint()
-require("lang.tex").lsp()
-require("lang.tex").dap()
+require("lsp").setup "tex"
diff --git a/ftplugin/tf.lua b/ftplugin/tf.lua
index cfe54936..3486663d 100644
--- a/ftplugin/tf.lua
+++ b/ftplugin/tf.lua
@@ -1,4 +1 @@
-require("lang.terraform").format()
-require("lang.terraform").lint()
-require("lang.terraform").lsp()
-require("lang.terraform").dap()
+require("lsp").setup "terraform"
diff --git a/ftplugin/typescript.lua b/ftplugin/typescript.lua
index f74b54e9..2f6219df 100644
--- a/ftplugin/typescript.lua
+++ b/ftplugin/typescript.lua
@@ -1,3 +1 @@
-require "lsp.tsserver-ls"
-
-vim.cmd "setl ts=2 sw=2"
+require("lsp").setup "typescript"
diff --git a/ftplugin/typescriptreact.lua b/ftplugin/typescriptreact.lua
index f74b54e9..2f6219df 100644
--- a/ftplugin/typescriptreact.lua
+++ b/ftplugin/typescriptreact.lua
@@ -1,3 +1 @@
-require "lsp.tsserver-ls"
-
-vim.cmd "setl ts=2 sw=2"
+require("lsp").setup "typescript"
diff --git a/ftplugin/vim.lua b/ftplugin/vim.lua
index 0b5f5ea8..88c00c1c 100644
--- a/ftplugin/vim.lua
+++ b/ftplugin/vim.lua
@@ -1,4 +1 @@
-require("lang.vim").format()
-require("lang.vim").lint()
-require("lang.vim").lsp()
-require("lang.vim").dap()
+require("lsp").setup "vim"
diff --git a/ftplugin/vue.lua b/ftplugin/vue.lua
index 11d7b2a1..a174c9bf 100644
--- a/ftplugin/vue.lua
+++ b/ftplugin/vue.lua
@@ -1,4 +1 @@
-require("lang.vue").format()
-require("lang.vue").lint()
-require("lang.vue").lsp()
-require("lang.vue").dap()
+require("lsp").setup "vue"
diff --git a/ftplugin/yaml.lua b/ftplugin/yaml.lua
index f38f2586..d21f9785 100644
--- a/ftplugin/yaml.lua
+++ b/ftplugin/yaml.lua
@@ -1,4 +1 @@
-require("lang.yaml").format()
-require("lang.yaml").lint()
-require("lang.yaml").lsp()
-require("lang.yaml").dap()
+require("lsp").setup "yaml"
diff --git a/ftplugin/zig.lua b/ftplugin/zig.lua
index 9b391764..ef3d64d4 100644
--- a/ftplugin/zig.lua
+++ b/ftplugin/zig.lua
@@ -1,4 +1 @@
-require("lang.zig").format()
-require("lang.zig").lint()
-require("lang.zig").lsp()
-require("lang.zig").dap()
+require("lsp").setup "zig"
diff --git a/ftplugin/zsh.lua b/ftplugin/zsh.lua
index 4dfbb7b8..4f18fbca 100644
--- a/ftplugin/zsh.lua
+++ b/ftplugin/zsh.lua
@@ -1,4 +1 @@
-require("lang.zsh").format()
-require("lang.zsh").lint()
-require("lang.zsh").lsp()
-require("lang.zsh").dap()
+require("lsp").setup "sh"
diff --git a/init.lua b/init.lua
index 2e3a5d32..73f0a325 100644
--- a/init.lua
+++ b/init.lua
@@ -7,10 +7,12 @@ vim.cmd [[
set runtimepath-=~/.config/nvim
set runtimepath-=~/.config/nvim/after
- set runtimepath^=~/.config/lvim
+ set runtimepath+=~/.config/lvim
+ set runtimepath^=~/.local/share/lunarvim/lvim/after
]]
-- vim.opt.rtp:append() instead of vim.cmd ?
require "default-config"
+require "settings"
local status_ok, error = pcall(vim.cmd, "luafile ~/.config/lvim/lv-config.lua")
if not status_ok then
print "something is wrong with your lv-config"
@@ -21,17 +23,30 @@ require "keymappings"
local plugins = require "plugins"
local plugin_loader = require("plugin-loader").init()
-plugin_loader:load { plugins, O.user_plugins }
-vim.g.colors_name = O.colorscheme -- Colorscheme must get called after plugins are loaded or it will break new installs.
-vim.cmd("colorscheme " .. O.colorscheme)
+plugin_loader:load { plugins, lvim.plugins }
+vim.g.colors_name = lvim.colorscheme -- Colorscheme must get called after plugins are loaded or it will break new installs.
+vim.cmd("colorscheme " .. lvim.colorscheme)
-require "settings"
-require "lv-utils"
+local utils = require "lv-utils"
+utils.toggle_autoformat()
+require("lsp").setup_handlers()
+
+local null_status_ok, null_ls = pcall(require, "null-ls")
+if null_status_ok then
+ null_ls.config {}
+ require("lspconfig")["null-ls"].setup {}
+end
+
+local lsp_settings_status_ok, lsp_settings = pcall(require, "nlspsettings")
+if lsp_settings_status_ok then
+ lsp_settings.setup {
+ config_home = os.getenv "HOME" .. "/.config/lvim/lsp-settings",
+ }
+end
-- TODO: these guys need to be in language files
--- require "lsp"
--- if O.lang.emmet.active then
+-- if lvim.lang.emmet.active then
-- require "lsp.emmet-ls"
-- end
--- if O.lang.tailwindcss.active then
+-- if lvim.lang.tailwindcss.active then
-- require "lsp.tailwind
diff --git a/lua/core/bufferline.lua b/lua/core/bufferline.lua
index d4e4b4fe..ef1d4780 100644
--- a/lua/core/bufferline.lua
+++ b/lua/core/bufferline.lua
@@ -3,7 +3,7 @@ vim.api.nvim_set_keymap("n", "<S-l>", ":BufferNext<CR>", { noremap = true, silen
vim.api.nvim_set_keymap("n", "<S-h>", ":BufferPrevious<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<leader>c", ":BufferClose<CR>", { noremap = true, silent = true })
-O.plugin.which_key.mappings["b"] = {
+lvim.builtin.which_key.mappings["b"] = {
name = "Buffers",
j = { "<cmd>BufferPick<cr>", "jump to buffer" },
f = { "<cmd>Telescope buffers<cr>", "Find buffer" },
diff --git a/lua/core/compe.lua b/lua/core/compe.lua
index c8152ad1..a3521cfe 100644
--- a/lua/core/compe.lua
+++ b/lua/core/compe.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.completion = {
+ lvim.completion = {
enabled = true,
autocomplete = true,
debug = false,
@@ -34,14 +34,14 @@ M.config = function()
end
M.setup = function()
- vim.g.vsnip_snippet_dir = O.vsnip_dir
+ vim.g.vsnip_snippet_dir = lvim.vsnip_dir
local status_ok, compe = pcall(require, "compe")
if not status_ok then
return
end
- compe.setup(O.completion)
+ compe.setup(lvim.completion)
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
diff --git a/lua/core/dap.lua b/lua/core/dap.lua
index bc76e221..30e3aef9 100644
--- a/lua/core/dap.lua
+++ b/lua/core/dap.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.plugin.dap = {
+ lvim.builtin.dap = {
active = false,
breakpoint = {
text = "ï—£",
@@ -17,10 +17,10 @@ M.setup = function()
return
end
- vim.fn.sign_define("DapBreakpoint", O.plugin.dap.breakpoint)
+ vim.fn.sign_define("DapBreakpoint", lvim.builtin.dap.breakpoint)
dap.defaults.fallback.terminal_win_cmd = "50vsplit new"
- O.user_which_key["d"] = {
+ lvim.builtin.which_key.mappings["d"] = {
name = "Debug",
t = { "<cmd>lua require'dap'.toggle_breakpoint()<cr>", "Toggle Breakpoint" },
b = { "<cmd>lua require'dap'.step_back()<cr>", "Step Back" },
@@ -38,4 +38,21 @@ M.setup = function()
}
end
+-- TODO put this up there ^^^ call in ftplugin
+
+-- M.dap = function()
+-- if lvim.plugin.dap.active then
+-- local dap_install = require "dap-install"
+-- dap_install.config("python_dbg", {})
+-- end
+-- end
+--
+-- M.dap = function()
+-- -- gem install readapt ruby-debug-ide
+-- if lvim.plugin.dap.active then
+-- local dap_install = require "dap-install"
+-- dap_install.config("ruby_vsc_dbg", {})
+-- end
+-- end
+
return M
diff --git a/lua/core/dashboard.lua b/lua/core/dashboard.lua
index a1af5319..7433f2d6 100644
--- a/lua/core/dashboard.lua
+++ b/lua/core/dashboard.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.plugin.dashboard = {
+ lvim.builtin.dashboard = {
active = false,
search_handler = "telescope",
custom_header = {
@@ -55,13 +55,13 @@ end
M.setup = function()
vim.g.dashboard_disable_at_vimenter = 0
- vim.g.dashboard_custom_header = O.plugin.dashboard.custom_header
+ vim.g.dashboard_custom_header = lvim.builtin.dashboard.custom_header
- vim.g.dashboard_default_executive = O.plugin.dashboard.search_handler
+ vim.g.dashboard_default_executive = lvim.builtin.dashboard.search_handler
- vim.g.dashboard_custom_section = O.plugin.dashboard.custom_section
+ vim.g.dashboard_custom_section = lvim.builtin.dashboard.custom_section
- O.plugin.which_key.mappings[";"] = { "<cmd>Dashboard<CR>", "Dashboard" }
+ lvim.builtin.which_key.mappings[";"] = { "<cmd>Dashboard<CR>", "Dashboard" }
-- f = {
-- description = { " Neovim Config Files" },
@@ -81,7 +81,7 @@ M.setup = function()
-- file_browser = {description = {' File Browser'}, command = 'Telescope find_files'},
-- vim.g.dashboard_session_directory = CACHE_PATH..'/session'
- -- vim.g.dashboard_custom_footer = O.dashboard.footer
+ -- vim.g.dashboard_custom_footer = lvim.dashboard.footer
require("lv-utils").define_augroups {
_dashboard = {
-- seems to be nobuflisted that makes my stuff disapear will do more testing
@@ -93,7 +93,7 @@ M.setup = function()
{
"FileType",
"dashboard",
- "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=" .. O.default_options.showtabline,
+ "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=" .. vim.opt.showtabline._value,
},
{ "FileType", "dashboard", "nnoremap <silent> <buffer> q :q<CR>" },
},
diff --git a/lua/core/formatter.lua b/lua/core/formatter.lua
deleted file mode 100644
index c8f1baeb..00000000
--- a/lua/core/formatter.lua
+++ /dev/null
@@ -1,60 +0,0 @@
--- autoformat
-if O.format_on_save then
- require("lv-utils").define_augroups {
- autoformat = {
- {
- "BufWritePost",
- "*",
- ":silent FormatWrite",
- },
- },
- }
-end
-
--- -- check if formatter has been defined for the language or not
--- local function formatter_exists(lang_formatter)
--- if lang_formatter == nil then
--- return false
--- end
--- if lang_formatter.exe == nil or lang_formatter.args == nil then
--- return false
--- end
--- return true
--- end
-
--- returns default formatter for given language
--- local function formatter_return(lang_formatter)
--- return {
--- exe = lang_formatter.exe,
--- args = lang_formatter.args,
--- stdin = not (lang_formatter.stdin ~= nil),
--- }
--- end
-
--- fill a table like this -> {rust: {exe:"sth",args:{"a","b"},stdin=true},go: {}...}
--- local formatter_filetypes = {}
--- for k, v in pairs(O.lang) do
--- if formatter_exists(v.formatter) then
--- local keys = v.filetypes
--- if keys == nil then
--- keys = { k }
--- end
--- for _, l in pairs(keys) do
--- formatter_filetypes[l] = {
--- function()
--- return formatter_return(v.formatter)
--- end,
--- }
--- end
--- end
--- end
-local status_ok, _ = pcall(require, "formatter")
-if not status_ok then
- return
-end
-
-if not O.format_on_save then
- vim.cmd [[if exists('#autoformat#BufWritePost')
- :autocmd! autoformat
- endif]]
-end
diff --git a/lua/core/galaxyline.lua b/lua/core/galaxyline.lua
index f880e430..8ca6f5c7 100644
--- a/lua/core/galaxyline.lua
+++ b/lua/core/galaxyline.lua
@@ -7,9 +7,9 @@ if not status_ok then
end
-- NOTE: if someone defines colors but doesn't have them then this will break
-local palette_status_ok, colors = pcall(require, O.colorscheme .. ".palette")
+local palette_status_ok, colors = pcall(require, lvim.colorscheme .. ".palette")
if not palette_status_ok then
- colors = O.plugin.galaxyline.colors
+ colors = lvim.builtin.galaxyline.colors
end
local condition = require "galaxyline.condition"
diff --git a/lua/core/gitsigns.lua b/lua/core/gitsigns.lua
index bc310ad6..2a5060be 100644
--- a/lua/core/gitsigns.lua
+++ b/lua/core/gitsigns.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.plugin.gitsigns = {
+ lvim.builtin.gitsigns = {
signs = {
add = {
hl = "GitSignsAdd",
@@ -53,7 +53,7 @@ M.setup = function()
if not status_ok then
return
end
- gitsigns.setup(O.plugin.gitsigns)
+ gitsigns.setup(lvim.builtin.gitsigns)
end
return M
diff --git a/lua/core/linter.lua b/lua/core/linter.lua
deleted file mode 100644
index 676b0cf7..00000000
--- a/lua/core/linter.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local M = {}
-
-M.setup = function()
- if O.lint_on_save then
- require("lv-utils").define_augroups {
- autolint = {
- {
- "BufWritePost",
- "<buffer>",
- ":silent lua require('lint').try_lint()",
- },
- {
- "BufEnter",
- "<buffer>",
- ":silent lua require('lint').try_lint()",
- },
- },
- }
- end
-end
-
-local status_ok, _ = pcall(require, "lint")
-if not status_ok then
- return
-end
-
-if not O.lint_on_save then
- vim.cmd [[if exists('#autolint#BufWritePost')
- :autocmd! autolint
- endif]]
-end
-
-return M
diff --git a/lua/core/nvimtree.lua b/lua/core/nvimtree.lua
index a763c71d..62f71d32 100644
--- a/lua/core/nvimtree.lua
+++ b/lua/core/nvimtree.lua
@@ -1,7 +1,7 @@
local M = {}
--
M.config = function()
- O.plugin.nvimtree = {
+ lvim.builtin.nvimtree = {
side = "left",
show_icons = {
git = 1,
@@ -52,7 +52,7 @@ M.setup = function()
end
local g = vim.g
- for opt, val in pairs(O.plugin.nvimtree) do
+ for opt, val in pairs(lvim.builtin.nvimtree) do
g["nvim_tree_" .. opt] = val
end
diff --git a/lua/core/status_colors.lua b/lua/core/status_colors.lua
index ddb4aa98..37e9d7c9 100644
--- a/lua/core/status_colors.lua
+++ b/lua/core/status_colors.lua
@@ -1,4 +1,4 @@
-O.plugin.galaxyline = {
+lvim.builtin.galaxyline = {
active = true,
colors = {
alt_bg = "#2E2E2E",
diff --git a/lua/core/telescope.lua b/lua/core/telescope.lua
index 4456d65e..1e605c7c 100644
--- a/lua/core/telescope.lua
+++ b/lua/core/telescope.lua
@@ -5,7 +5,7 @@ M.config = function()
return
end
- O.plugin.telescope = {
+ lvim.builtin.telescope = {
active = false,
defaults = {
find_command = {
@@ -89,7 +89,7 @@ M.setup = function()
if not status_ok then
return
end
- telescope.setup(O.plugin.telescope)
+ telescope.setup(lvim.builtin.telescope)
vim.api.nvim_set_keymap("n", "<Leader>f", ":Telescope find_files<CR>", { noremap = true, silent = true })
end
diff --git a/lua/core/terminal.lua b/lua/core/terminal.lua
index 0f930453..b7c58c0d 100644
--- a/lua/core/terminal.lua
+++ b/lua/core/terminal.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.plugin["terminal"] = {
+ lvim.builtin["terminal"] = {
-- size can be a number or function which is passed the current terminal
size = 5,
-- open_mapping = [[<c-\>]],
@@ -47,8 +47,8 @@ M.setup = function()
"<cmd>lua require('core.terminal')._lazygit_toggle()<CR>",
{ noremap = true, silent = true }
)
- O.plugin.which_key.mappings["gg"] = "LazyGit"
- terminal.setup(O.plugin.terminal)
+ lvim.builtin.which_key.mappings["gg"] = "LazyGit"
+ terminal.setup(lvim.builtin.terminal)
end
local function is_installed(exe)
diff --git a/lua/core/treesitter.lua b/lua/core/treesitter.lua
index 2b7a2d54..c81f0696 100644
--- a/lua/core/treesitter.lua
+++ b/lua/core/treesitter.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.treesitter = {
+ lvim.builtin.treesitter = {
ensure_installed = {}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages
ignore_install = {},
matchup = {
@@ -59,129 +59,15 @@ M.config = function()
max_file_lines = 1000, -- Do not enable for files with more than 1000 lines, int
},
}
-
- -- -- TODO refactor treesitter
- -- -- @usage pass a table with your desired languages
- -- treesitter = {
- -- ensure_installed = "all",
- -- ignore_install = { "haskell" },
- -- highlight = { enabled = true },
- -- -- The below are for treesitter-textobjects plugin
- -- textobj_prefixes = {
- -- goto_next = "]", -- Go to next
- -- goto_previous = "[", -- Go to previous
- -- inner = "i", -- Select inside
- -- outer = "a", -- Selct around
- -- swap = "<leader>a", -- Swap with next
- -- },
- -- textobj_suffixes = {
- -- -- Start and End respectively for the goto keys
- -- -- for other keys it only uses the first
- -- ["function"] = { "f", "F" },
- -- ["class"] = { "m", "M" },
- -- ["parameter"] = { "a", "A" },
- -- ["block"] = { "k", "K" },
- -- ["conditional"] = { "i", "I" },
- -- ["call"] = { "c", "C" },
- -- ["loop"] = { "l", "L" },
- -- ["statement"] = { "s", "S" },
- -- ["comment"] = { "/", "?" },
- -- },
- -- -- The below is for treesitter hint textobjects plugin
- -- hint_labels = { "h", "j", "f", "d", "n", "v", "s", "l", "a" },
- -- },
end
M.setup = function()
- -- TODO: refacor this whole file and treesitter in general
- -- if not package.loaded['nvim-treesitter'] then return end
- --
- -- Custom parsers
- -- local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
- -- parser_config.make = {
- -- install_info = {
- -- url = "https://github.com/alemuller/tree-sitter-make", -- local path or git repo
- -- files = {"src/parser.c"},
- -- requires_generate_from_grammar = true
- -- }
- -- }
- -- parser_config.just = {
- -- install_info = {
- -- url = "~/dev/tree-sitter-just", -- local path or git repo
- -- files = {"src/parser.c"}
- -- }
- -- -- filetype = "just", -- if filetype does not agrees with parser name
- -- -- used_by = {"bar", "baz"} -- additional filetypes that use this parser
- -- }
- -- Custom text objects
- -- local textobj_prefixes = O.treesitter.textobj_prefixes
- -- local textobj_suffixes = O.treesitter.textobj_suffixes
- -- local textobj_sel_keymaps = {}
- -- local textobj_swap_keymaps = {}
- -- local textobj_move_keymaps = {
- -- enable = O.plugin.ts_textobjects,
- -- set_jumps = true, -- whether to set jumps in the jumplist
- -- goto_next_start = {},
- -- goto_next_end = {},
- -- goto_previous_start = {},
- -- goto_previous_end = {},
- -- }
- -- for obj, suffix in pairs(textobj_suffixes) do
- -- if textobj_prefixes["goto_next"] ~= nil then
- -- textobj_move_keymaps["goto_next_start"][textobj_prefixes["goto_next"] .. suffix[1]] = "@" .. obj .. ".outer"
- -- textobj_move_keymaps["goto_next_end"][textobj_prefixes["goto_next"] .. suffix[2]] = "@" .. obj .. ".outer"
- -- end
- -- if textobj_prefixes["goto_previous"] ~= nil then
- -- textobj_move_keymaps["goto_previous_start"][textobj_prefixes["goto_previous"] .. suffix[2]] = "@" .. obj .. ".outer"
- -- textobj_move_keymaps["goto_previous_end"][textobj_prefixes["goto_previous"] .. suffix[1]] = "@" .. obj .. ".outer"
- -- end
- --
- -- if textobj_prefixes["inner"] ~= nil then
- -- textobj_sel_keymaps[textobj_prefixes["inner"] .. suffix[1]] = "@" .. obj .. ".inner"
- -- end
- -- if textobj_prefixes["outer"] ~= nil then
- -- textobj_sel_keymaps[textobj_prefixes["outer"] .. suffix[1]] = "@" .. obj .. ".outer"
- -- end
- --
- -- if textobj_prefixes["swap"] ~= nil then
- -- textobj_swap_keymaps[textobj_prefixes["swap"] .. suffix[1]] = "@" .. obj .. ".outer"
- -- end
- -- end
- -- vim.g.ts_hint_textobject_keys = O.treesitter.hint_labels -- Requires https://github.com/mfussenegger/nvim-ts-hint-textobject/pull/2
- --
- -- -- Add which key menu entries
- -- local status, wk = pcall(require, "which-key")
- -- if status then
- -- local normal = {
- -- mode = "n", -- Normal mode
- -- }
- -- local operators = {
- -- mode = "o", -- Operator mode
- -- }
- -- wk.register(textobj_sel_keymaps, operators)
- -- wk.register({
- -- ["m"] = "Hint Objects",
- -- ["."] = "Textsubject",
- -- [";"] = "Textsubject-big",
- -- }, operators)
- -- wk.register(textobj_swap_keymaps, normal)
- -- wk.register({
- -- [textobj_prefixes["swap"]] = "Swap",
- -- -- [textobj_prefixes["goto_next"]] = "Jump [",
- -- -- [textobj_prefixes["goto_previous"]] = "Jump ]"
- -- }, normal)
- -- wk.register(textobj_move_keymaps["goto_next_start"], normal)
- -- wk.register(textobj_move_keymaps["goto_next_end"], normal)
- -- wk.register(textobj_move_keymaps["goto_previous_start"], normal)
- -- wk.register(textobj_move_keymaps["goto_previous_end"], normal)
- -- end
-
local status_ok, treesitter_configs = pcall(require, "nvim-treesitter.configs")
if not status_ok then
return
end
- treesitter_configs.setup(O.treesitter)
+ treesitter_configs.setup(lvim.builtin.treesitter)
end
return M
diff --git a/lua/core/which-key.lua b/lua/core/which-key.lua
index 47661df6..1126bea5 100644
--- a/lua/core/which-key.lua
+++ b/lua/core/which-key.lua
@@ -1,6 +1,6 @@
local M = {}
M.config = function()
- O.plugin.which_key = {
+ lvim.builtin.which_key = {
active = false,
setup = {
plugins = {
@@ -117,14 +117,15 @@ M.config = function()
"<cmd>Telescope lsp_workspace_diagnostics<cr>",
"Workspace Diagnostics",
},
- f = { "<cmd>silent FormatWrite<cr>", "Format" },
+ -- f = { "<cmd>silent FormatWrite<cr>", "Format" },
+ f = { "<cmd>lua vim.lsp.buf.formatting()<cr>", "Format" },
i = { "<cmd>LspInfo<cr>", "Info" },
j = {
- "<cmd>lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})<cr>",
+ "<cmd>lua vim.lsp.diagnostic.goto_next({popup_opts = {border = lvim.lsp.popup_border}})<cr>",
"Next Diagnostic",
},
k = {
- "<cmd>lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})<cr>",
+ "<cmd>lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = lvim.lsp.popup_border}})<cr>",
"Prev Diagnostic",
},
l = { "<cmd>silent lua require('lint').try_lint()<cr>", "Lint" },
@@ -171,29 +172,18 @@ M.setup = function()
return
end
- which_key.setup(O.plugin.which_key.setup)
+ which_key.setup(lvim.builtin.which_key.setup)
- local opts = O.plugin.which_key.opts
- local vopts = O.plugin.which_key.vopts
+ local opts = lvim.builtin.which_key.opts
+ local vopts = lvim.builtin.which_key.vopts
- local mappings = O.plugin.which_key.mappings
- local vmappings = O.plugin.which_key.vmappings
-
- -- if O.plugin.ts_playground.active then
- -- vim.api.nvim_set_keymap("n", "<leader>Th", ":TSHighlightCapturesUnderCursor<CR>", { noremap = true, silent = true })
- -- mappings[""] = "Highlight Capture"
- -- end
-
- if O.plugin.zen.active then
- vim.api.nvim_set_keymap("n", "<leader>z", ":ZenMode<CR>", { noremap = true, silent = true })
- mappings["z"] = "Zen"
- end
+ local mappings = lvim.builtin.which_key.mappings
+ local vmappings = lvim.builtin.which_key.vmappings
local wk = require "which-key"
wk.register(mappings, opts)
wk.register(vmappings, vopts)
- wk.register(O.user_which_key, opts)
end
return M
diff --git a/lua/core/zen.lua b/lua/core/zen.lua
deleted file mode 100644
index 99a5d769..00000000
--- a/lua/core/zen.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-local M = {}
-M.config = function()
- O.plugin["zen"] = {
- window = {
- backdrop = 1,
- height = 0.85, -- height of the Zen window
- options = {
- signcolumn = "no", -- disable signcolumn
- number = false, -- disable number column
- relativenumber = false, -- disable relative numbers
- -- cursorline = false, -- disable cursorline
- -- cursorcolumn = false, -- disable cursor column
- -- foldcolumn = "0", -- disable fold column
- -- list = false, -- disable whitespace characters
- },
- },
- plugins = {
- gitsigns = { enabled = false }, -- disables git signs
- -- your configuration comes here
- -- or leave it empty to use the default settings
- -- refer to the configuration section below
- },
- }
-end
-
-M.setup = function()
- local status_ok, zen_mode = pcall(require, "zen-mode")
- if not status_ok then
- return
- end
- zen_mode.setup(O.plugin.zen)
-end
-
-return M
diff --git a/lua/default-config.lua b/lua/default-config.lua
index aaba1829..0c36054c 100644
--- a/lua/default-config.lua
+++ b/lua/default-config.lua
@@ -4,61 +4,33 @@ CACHE_PATH = vim.fn.stdpath "cache"
TERMINAL = vim.fn.expand "$TERMINAL"
USER = vim.fn.expand "$USER"
-O = {
- keys = {
- leader_key = "space",
- },
+lvim = {
+ leader = "space",
colorscheme = "spacegray",
line_wrap_cursor_movement = true,
transparent_window = false,
format_on_save = true,
- lint_on_save = true,
vsnip_dir = os.getenv "HOME" .. "/.config/snippets",
+ database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },
+ keys = {},
- default_options = {
- backup = false, -- creates a backup file
- clipboard = "unnamedplus", -- allows neovim to access the system clipboard
- cmdheight = 2, -- more space in the neovim command line for displaying messages
- colorcolumn = "99999", -- fixes indentline for now
- completeopt = { "menuone", "noselect" },
- conceallevel = 0, -- so that `` is visible in markdown files
- fileencoding = "utf-8", -- the encoding written to a file
- foldmethod = "manual", -- folding, set to "expr" for treesitter based foloding
- foldexpr = "", -- set to "nvim_treesitter#foldexpr()" for treesitter based folding
- guifont = "monospace:h17", -- the font used in graphical neovim applications
- hidden = true, -- required to keep multiple buffers and open multiple buffers
- hlsearch = true, -- highlight all matches on previous search pattern
- ignorecase = true, -- ignore case in search patterns
- mouse = "a", -- allow the mouse to be used in neovim
- pumheight = 10, -- pop up menu height
- showmode = false, -- we don't need to see things like -- INSERT -- anymore
- showtabline = 2, -- always show tabs
- smartcase = true, -- smart case
- smartindent = true, -- make indenting smarter again
- splitbelow = true, -- force all horizontal splits to go below current window
- splitright = true, -- force all vertical splits to go to the right of current window
- swapfile = false, -- creates a swapfile
- termguicolors = true, -- set term gui colors (most terminals support this)
- timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds)
- title = true, -- set the title of window to the value of the titlestring
- -- opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
- undodir = CACHE_PATH .. "/undo", -- set an undo directory
- undofile = true, -- enable persisten undo
- updatetime = 300, -- faster completion
- writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
- expandtab = true, -- convert tabs to spaces
- shiftwidth = 2, -- the number of spaces inserted for each indentation
- tabstop = 2, -- insert 2 spaces for a tab
- cursorline = true, -- highlight the current line
- number = true, -- set numbered lines
- relativenumber = false, -- set relative numbered lines
- numberwidth = 4, -- set number column width to 2 {default 4}
- signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time
- wrap = false, -- display lines as one long line
- spell = false,
- spelllang = "en",
- scrolloff = 8, -- is one of my fav
- sidescrolloff = 8,
+ -- TODO why do we need this?
+ builtin = {
+ lspinstall = {},
+ telescope = {},
+ compe = {},
+ autopairs = {},
+ treesitter = {},
+ nvimtree = {},
+ gitsigns = {},
+ which_key = {},
+ comment = {},
+ rooter = {},
+ galaxyline = {},
+ bufferline = {},
+ dap = {},
+ dashboard = {},
+ terminal = {},
},
lsp = {
@@ -76,144 +48,699 @@ O = {
on_attach_callback = nil,
},
- disabled_built_ins = {
- "netrw",
- "netrwPlugin",
- "netrwSettings",
- "netrwFileHandlers",
- "gzip",
- "zip",
- "zipPlugin",
- "tar",
- "tarPlugin", -- 'man',
- "getscript",
- "getscriptPlugin",
- "vimball",
- "vimballPlugin",
- "2html_plugin",
- "logipat",
- "rrhelper",
- "spellfile_plugin",
- -- 'matchit', 'matchparen', 'shada_plugin',
+ plugins = {
+ -- use lv-config.lua for this not put here
},
- plugin = {
- lspinstall = {},
- telescope = {},
- compe = {},
- autopairs = {},
- treesitter = {},
- formatter = {},
- lint = {},
- nvimtree = {},
- gitsigns = {},
- which_key = {},
- comment = {},
- rooter = {},
- galaxyline = {},
- bufferline = {},
- dap = {},
- dashboard = {},
- terminal = {},
- zen = {},
+ autocommands = {
+ { "FileType", "qf", "set nobuflisted" },
},
+}
- -- TODO: refactor for tree
- auto_close_tree = 0,
- nvim_tree_disable_netrw = 0,
+local schemas = nil
+local common_on_attach = require("lsp").common_on_attach
+local common_capabilities = require("lsp").common_capabilities()
+local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
+if status_ok then
+ schemas = jsonls_settings.get_default_schemas()
+end
- database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },
+-- TODO move all of this into lang specific files, only require when using
+lvim.lang = {
+ c = {
+ formatter = {
+ exe = "clang_format",
+ args = {},
+ stdin = true,
+ },
+ linters = {
+ "clangtidy",
+ },
+ lsp = {
+ provider = "clangd",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd",
+ "--background-index",
+ "--header-insertion=never",
+ "--cross-file-rename",
+ "--clang-tidy",
+ "--clang-tidy-checks=-*,llvm-*,clang-analyzer-*",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ cpp = {
+ formatter = {
+ exe = "clang_format",
+ args = {},
+ stdin = true,
+ },
+ linters = {
+ "cppcheck",
+ "clangtidy",
+ },
+ lsp = {
+ provider = "clangd",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd",
+ "--background-index",
+ "--header-insertion=never",
+ "--cross-file-rename",
+ "--clang-tidy",
+ "--clang-tidy-checks=-*,llvm-*,clang-analyzer-*",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ csharp = {
+ lsp = {
+ provider = "omnisharp",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/csharp/omnisharp/run",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ cmake = {
+ formatter = {
+ exe = "clang-format",
+ args = {},
+ },
+ lsp = {
+ provider = "cmake",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/cmake/venv/bin/cmake-language-server",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ clojure = {
+ lsp = {
+ provider = "clojure_lsp",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/clojure/clojure-lsp",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ css = {
+ formatter = {
+ exe = "prettier",
+ args = {},
+ },
+ lsp = {
+ provider = "cssls",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ dart = {
+ lsp = {
+ provider = "dartls",
+ setup = {
+ cmd = {
+ "dart",
+ "/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
+ "--lsp",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ formatter = {
+ exe = "dart",
+ args = { "format" },
+ stdin = true,
+ },
+ },
+ docker = {
+ lsp = {
+ provider = "dockerls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/dockerfile/node_modules/.bin/docker-langserver",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ elixir = {
+ formatter = {
+ exe = "mix",
+ args = { "format" },
+ stdin = true,
+ },
+ lsp = {
+ provider = "elixirls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ elm = {
+ lsp = {
+ provider = "elmls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-language-server",
+ },
+ on_attach = common_on_attach,
+ init_options = {
+ elmAnalyseTrigger = "change",
+ elmFormatPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-format",
+ elmPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/",
+ elmTestPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-test",
+ },
+ },
+ },
+ },
+ erlang = {
+ lsp = {
+ provider = "erlangls",
+ setup = {
+ cmd = {
+ "erlang_ls",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ emmet = { active = false },
+ go = {
+ formatter = {
+ exe = "gofmt",
+ args = {},
+ stdin = true,
+ },
+ linters = {
+ "golangcilint",
+ "revive",
+ },
+ lsp = {
+ provider = "gopls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/go/gopls",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ graphql = {
+ lsp = {
+ provider = "graphql",
+ setup = {
+ cmd = {
+ "graphql-lsp",
+ "server",
+ "-m",
+ "stream",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ html = {
+ linters = {
+ "tidy",
+ -- https://docs.errata.ai/vale/scoping#html
+ "vale",
+ },
+ lsp = {
+ provider = "html",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH .. "/lspinstall/html/vscode-html/html-language-features/server/dist/node/htmlServerMain.js",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ java = {
+ formatter = {
+ exe = "prettier",
+ args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
+ },
+ lsp = {
+ provider = "jdtls",
+ setup = {
+ cmd = { DATA_PATH .. "/lspinstall/java/jdtls.sh" },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ json = {
+ formatter = {
+ exe = "python",
+ args = { "-m", "json.tool" },
+ stdin = true,
+ },
+ lsp = {
+ provider = "jsonls",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH .. "/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ settings = {
+ json = {
+ schemas = schemas,
+ -- = {
+ -- {
+ -- fileMatch = { "package.json" },
+ -- url = "https://json.schemastore.org/package.json",
+ -- },
+ -- },
+ },
+ },
+ commands = {
+ Format = {
+ function()
+ vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
+ end,
+ },
+ },
+ },
+ },
+ },
+ julia = {
+ lsp = {
+ provider = "julials",
+ setup = {
+ {
+ "julia",
+ "--startup-file=no",
+ "--history-file=no",
+ -- vim.fn.expand "~/.config/nvim/lua/lsp/julia/run.jl",
+ CONFIG_PATH .. "/utils/julia/run.jl",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ kotlin = {
+ lsp = {
+ provider = "kotlin_language_server",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server",
+ },
+ on_attach = common_on_attach,
+ root_dir = function(fname)
+ local util = require "lspconfig/util"
- -- TODO: just using mappings (leader mappings)
- user_which_key = {},
+ local root_files = {
+ "settings.gradle", -- Gradle (multi-project)
+ "settings.gradle.kts", -- Gradle (multi-project)
+ "build.xml", -- Ant
+ "pom.xml", -- Maven
+ }
- user_plugins = {
- -- use lv-config.lua for this not put here
+ local fallback_root_files = {
+ "build.gradle", -- Gradle
+ "build.gradle.kts", -- Gradle
+ }
+ return util.root_pattern(unpack(root_files))(fname) or util.root_pattern(unpack(fallback_root_files))(fname)
+ end,
+ },
+ },
},
-
- user_autocommands = {
- { "FileType", "qf", "set nobuflisted" },
+ lua = {
+ formatter = {
+ exe = "stylua",
+ args = {},
+ },
+ linters = { "luacheck" },
+ lsp = {
+ provider = "sumneko_lua",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/lua/sumneko-lua-language-server",
+ "-E",
+ DATA_PATH .. "/lspinstall/lua/main.lua",
+ },
+ on_attach = common_on_attach,
+ 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", "O" },
+ },
+ workspace = {
+ -- Make the server aware of Neovim runtime files
+ library = {
+ [vim.fn.expand "~/.local/share/lunarvim/lvim/lua"] = true,
+ [vim.fn.expand "$VIMRUNTIME/lua"] = true,
+ [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
+ },
+ maxPreload = 100000,
+ preloadFileSize = 1000,
+ },
+ },
+ },
+ },
+ },
},
-
- formatters = {
- filetype = {},
+ php = {
+ formatter = {
+ exe = "phpcbf",
+ args = { "--standard=PSR12", vim.api.nvim_buf_get_name(0) },
+ },
+ linters = {},
+ lsp = {
+ provider = "intelephense",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ filetypes = { "php", "phtml" },
+ settings = {
+ intelephense = {
+ environment = {
+ phpVersion = "7.4",
+ },
+ },
+ },
+ },
+ },
},
-
- -- TODO move all of this into lang specific files, only require when using
- lang = {
- efm = {},
- emmet = { active = false },
- svelte = {},
- tailwindcss = {
- active = false,
- filetypes = {
- "html",
- "css",
- "scss",
- "javascript",
- "javascriptreact",
- "typescript",
- "typescriptreact",
- },
- },
- tsserver = {
- -- @usage can be 'eslint' or 'eslint_d'
- linter = "",
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- formatter = {
- exe = "prettier",
- args = {},
+ javascript = {
+ -- @usage can be prettier or eslint
+ formatter = {
+ exe = "prettier",
+ args = {},
+ },
+ linters = {
+ "eslint",
+ },
+ lsp = {
+ provider = "tsserver",
+ setup = {
+ cmd = {
+ -- TODO:
+ DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
+ "--stdio",
+ },
+ on_attach = require("lsp").common_on_attach,
+ capabilities = require("lsp").common_capabilities(),
+ },
+ },
+ },
+ python = {
+ -- @usage can be flake8 or yapf
+ formatter = {
+ exe = "black",
+ args = {},
+ },
+ linters = {
+ "flake8",
+ "pylint",
+ "mypy",
+ },
+ lsp = {
+ provider = "pyright",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ -- R -e 'install.packages("formatR",repos = "http://cran.us.r-project.org")'
+ -- R -e 'install.packages("readr",repos = "http://cran.us.r-project.org")'
+ r = {
+ formatter = {
+ exe = "R",
+ args = {
+ "--slave",
+ "--no-restore",
+ "--no-save",
+ '-e "formatR::tidy_source(text=readr::read_file(file(\\"stdin\\")), arrow=FALSE)"',
+ },
+ stdin = true,
+ },
+ lsp = {
+ provider = "r_language_server",
+ setup = {
+ cmd = {
+ "R",
+ "--slave",
+ "-e",
+ "languageserver::run()",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ ruby = {
+ formatter = {
+ exe = "rufo",
+ args = { "-x" },
+ stdin = true,
+ },
+ linters = { "ruby" },
+ lsp = {
+ provider = "solargraph",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
+ "stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ rust = {
+ formatter = {
+ exe = "rustfmt",
+ args = { "--emit=stdout", "--edition=2018" },
+ stdin = true,
+ },
+ lsp = {
+ provider = "rust_analyzer",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/rust/rust-analyzer",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ sh = {
+ -- @usage can be 'shfmt'
+ formatter = {
+ exe = "shfmt",
+ args = {},
+ },
+ -- @usage can be 'shellcheck'
+ linters = { "shellcheck" },
+ lsp = {
+ provider = "bashls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
+ "start",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ svelte = {
+ lsp = {
+ provider = "svelte",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ swift = {
+ formatter = {
+ exe = "swiftformat",
+ args = {},
+ stdin = true,
+ },
+ lsp = {
+ provider = "sourcekit",
+ setup = {
+ cmd = {
+ "xcrun",
+ "sourcekit-lsp",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ tailwindcss = {
+ active = false,
+ filetypes = {
+ "html",
+ "css",
+ "scss",
+ "javascript",
+ "javascriptreact",
+ "typescript",
+ "typescriptreact",
+ },
+ },
+ terraform = {
+ formatter = {
+ exe = "terraform",
+ args = { "fmt" },
+ stdin = false,
+ },
+ lsp = {
+ provider = "terraformls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/terraform/terraform-ls",
+ "serve",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ vim = {
+ linters = { "vint" },
+ lsp = {
+ provider = "vimls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ vue = {
+ formatter = {
+ exe = "prettier",
+ args = {
+ "--stdin-filepath",
+ "${FILEPATH}",
+ },
+ stdin = true,
+ },
+ lsp = {
+ provider = "vetur",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ yaml = {
+ formatter = {
+ exe = "prettier",
+ args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
+ stdin = true,
+ },
+ lsp = {
+ provider = "yamlls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server",
+ "--stdio",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
+ },
+ },
+ },
+ zig = {
+ formatter = {
+ exe = "zig",
+ args = { "fmt" },
+ stdin = false,
+ },
+ lsp = {
+ provider = "zls",
+ setup = {
+ cmd = {
+ "zls",
+ },
+ on_attach = common_on_attach,
+ capabilities = common_capabilities,
},
},
},
}
+require("core.which-key").config()
require "core.status_colors"
require("core.gitsigns").config()
require("core.compe").config()
require("core.dashboard").config()
require("core.dap").config()
require("core.terminal").config()
-require("core.zen").config()
require("core.telescope").config()
require("core.treesitter").config()
-require("core.which-key").config()
require("core.nvimtree").config()
-
-require("lang.clang").config()
-require("lang.clojure").config()
-require("lang.cmake").config()
-require("lang.cs").config()
-require("lang.css").config()
-require("lang.dart").config()
-require("lang.dockerfile").config()
-require("lang.elixir").config()
-require("lang.elm").config()
-require("lang.go").config()
-require("lang.graphql").config()
-require("lang.html").config()
-require("lang.java").config()
-require("lang.json").config()
-require("lang.julia").config()
-require("lang.kotlin").config()
-require("lang.lua").config()
-require("lang.php").config()
-require("lang.python").config()
-require("lang.r").config()
-require("lang.ruby").config()
-require("lang.rust").config()
-require("lang.sh").config()
-require("lang.scala").config()
-require("lang.svelte").config()
-require("lang.swift").config()
-require("lang.terraform").config()
-require("lang.tex").config()
-require("lang.vim").config()
-require("lang.vue").config()
-require("lang.yaml").config()
-require("lang.zig").config()
-require("lang.zsh").config()
diff --git a/lua/keymappings.lua b/lua/keymappings.lua
index 5ee54890..5e09dc7d 100644
--- a/lua/keymappings.lua
+++ b/lua/keymappings.lua
@@ -89,17 +89,17 @@ if vim.fn.has "mac" == 1 then
default_keys.normal_mode[8][1] = "<A-Right>"
end
-if O.keys.leader_key == " " or O.keys.leader_key == "space" then
+if lvim.leader == " " or lvim.leader == "space" then
vim.g.mapleader = " "
else
- vim.g.mapleader = O.keys.leader_key
+ vim.g.mapleader = lvim.leader
end
local function get_user_keys(mode)
- if O.keys[mode] == nil then
+ if lvim.keys[mode] == nil then
return default_keys[mode]
else
- return O.keys[mode]
+ return lvim.keys[mode]
end
end
diff --git a/lua/lang/clang.lua b/lua/lang/clang.lua
deleted file mode 100644
index 0a568620..00000000
--- a/lua/lang/clang.lua
+++ /dev/null
@@ -1,159 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.clang = {
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- cross_file_rename = true,
- header_insertion = "never",
- filetypes = { "c", "cpp", "objc" },
- formatter = {
- exe = "clang-format",
- args = {},
- stdin = true,
- },
- linters = {
- "cppcheck",
- "clangtidy",
- },
- debug = {
- adapter = {
- command = "/usr/bin/lldb-vscode",
- },
- stop_on_entry = false,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd",
- },
- }
-end
-
-M.format = function()
- local shared_config = {
- function()
- return {
- exe = O.lang.clang.formatter.exe,
- args = O.lang.clang.formatter.args,
- stdin = O.lang.clang.formatter.stdin,
- cwd = vim.fn.expand "%:h:p",
- }
- end,
- }
- O.formatters.filetype["c"] = shared_config
- O.formatters.filetype["cpp"] = shared_config
- O.formatters.filetype["objc"] = shared_config
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- c = O.lang.clang.linters,
- cpp = O.lang.clang.linters,
- }
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "clangd" then
- return
- end
- local clangd_flags = { "--background-index" }
-
- if O.lang.clang.cross_file_rename then
- table.insert(clangd_flags, "--cross-file-rename")
- end
-
- table.insert(clangd_flags, "--header-insertion=" .. O.lang.clang.header_insertion)
-
- require("lspconfig").clangd.setup {
- cmd = { O.lang.clang.lsp.path, unpack(clangd_flags) },
- on_attach = require("lsp").common_on_attach,
- handlers = {
- ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = O.lang.clang.diagnostics.virtual_text,
- signs = O.lang.clang.diagnostics.signs,
- underline = O.lang.clang.diagnostics.underline,
- update_in_insert = true,
- }),
- },
- }
-end
-
-M.dap = function()
- if O.plugin.dap.active then
- local dap_install = require "dap-install"
- local dap = require "dap"
- dap_install.config("ccppr_vsc_dbg", {})
- dap.adapters.lldb = {
- type = "executable",
- command = O.lang.clang.debug.adapter.command,
- name = "lldb",
- }
- local shared_dap_config = {
- {
- name = "Launch",
- type = "lldb",
- request = "launch",
- program = function()
- return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
- end,
- cwd = "${workspaceFolder}",
- stopOnEntry = O.lang.clang.debug.stop_on_entry,
- args = {},
- env = function()
- local variables = {}
- for k, v in pairs(vim.fn.environ()) do
- table.insert(variables, string.format("%s=%s", k, v))
- end
- return variables
- end,
- runInTerminal = false,
- },
- {
- -- If you get an "Operation not permitted" error using this, try disabling YAMA:
- -- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
- name = "Attach to process",
- type = "lldb", -- Adjust this to match your adapter name (`dap.adapters.<name>`)
- request = "attach",
- pid = function()
- local output = vim.fn.system { "ps", "a" }
- local lines = vim.split(output, "\n")
- local procs = {}
- for _, line in pairs(lines) do
- -- output format
- -- " 107021 pts/4 Ss 0:00 /bin/zsh <args>"
- local parts = vim.fn.split(vim.fn.trim(line), " \\+")
- local pid = parts[1]
- local name = table.concat({ unpack(parts, 5) }, " ")
- if pid and pid ~= "PID" then
- pid = tonumber(pid)
- if pid ~= vim.fn.getpid() then
- table.insert(procs, { pid = tonumber(pid), name = name })
- end
- end
- end
- local choices = { "Select process" }
- for i, proc in ipairs(procs) do
- table.insert(choices, string.format("%d: pid=%d name=%s", i, proc.pid, proc.name))
- end
- local choice = vim.fn.inputlist(choices)
- if choice < 1 or choice > #procs then
- return nil
- end
- return procs[choice].pid
- end,
- args = {},
- },
- }
- dap.configurations.c = shared_dap_config
- dap.configurations.cpp = shared_dap_config
- end
-end
-
-return M
diff --git a/lua/lang/clojure.lua b/lua/lang/clojure.lua
deleted file mode 100644
index e973a0e3..00000000
--- a/lua/lang/clojure.lua
+++ /dev/null
@@ -1,37 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.erlang = {
- lsp = {
- path = DATA_PATH .. "/lspinstall/clojure/clojure-lsp",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "clojure_lsp" then
- return
- end
-
- require("lspconfig").clojure_lsp.setup {
- cmd = { O.lang.erlang.lsp.path },
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/cmake.lua b/lua/lang/cmake.lua
deleted file mode 100644
index a4d8d045..00000000
--- a/lua/lang/cmake.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.cmake = {
- formatter = {
- exe = "clang-format",
- args = {},
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/cmake/venv/bin/cmake-language-server",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatters (if applicable)
- return "No formatters configured!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "cmake" then
- return
- end
-
- require("lspconfig").cmake.setup {
- cmd = { O.lang.cmake.lsp.path },
- on_attach = require("lsp").common_on_attach,
- filetypes = { "cmake" },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/cs.lua b/lua/lang/cs.lua
deleted file mode 100644
index 851e226f..00000000
--- a/lua/lang/cs.lua
+++ /dev/null
@@ -1,38 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.csharp = {
- lsp = {
- path = DATA_PATH .. "/lspinstall/csharp/omnisharp/run",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "omnisharp" then
- return
- end
-
- -- C# language server (csharp/OmniSharp) setup
- require("lspconfig").omnisharp.setup {
- on_attach = require("lsp").common_on_attach,
- cmd = { O.lang.csharp.lsp.path, "--languageserver", "--hostPID", tostring(vim.fn.getpid()) },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/css.lua b/lua/lang/css.lua
deleted file mode 100644
index 257896f2..00000000
--- a/lua/lang/css.lua
+++ /dev/null
@@ -1,77 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.css = {
- virtual_text = true,
- formatter = {
- exe = "prettier",
- args = {},
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
- },
- }
-end
-
-M.format = function()
- vim.cmd "let proj = FindRootDirectory()"
- local root_dir = vim.api.nvim_get_var "proj"
-
- -- use the global prettier if you didn't find the local one
- local prettier_instance = root_dir .. "/node_modules/.bin/prettier"
- if vim.fn.executable(prettier_instance) ~= 1 then
- prettier_instance = O.lang.tsserver.formatter.exe
- end
-
- local ft = vim.bo.filetype
- O.formatters.filetype[ft] = {
- function()
- local args = { "--stdin-filepath", vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) }
- -- TODO: O.lang.[ft].formatter.args
- local extend_args = O.lang.css.formatter.args
-
- for i = 1, #extend_args do
- table.insert(args, extend_args[i])
- end
-
- return {
- exe = prettier_instance,
- args = args,
- stdin = true,
- }
- end,
- }
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "cssls" then
- local capabilities = vim.lsp.protocol.make_client_capabilities()
- capabilities.textDocument.completion.completionItem.snippetSupport = true
- -- npm install -g vscode-css-languageserver-bin
- require("lspconfig").cssls.setup {
- cmd = {
- "node",
- O.lang.css.lsp.path,
- "--stdio",
- },
- on_attach = require("lsp").common_on_attach,
- capabilities = capabilities,
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/dart.lua b/lua/lang/dart.lua
deleted file mode 100644
index b95d303d..00000000
--- a/lua/lang/dart.lua
+++ /dev/null
@@ -1,59 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.dart = {
- sdk_path = "/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
- formatter = {
- exe = "dart",
- args = { "format" },
- stdin = true,
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["dart"] = {
- function()
- return {
- exe = O.lang.dart.formatter.exe,
- args = O.lang.dart.formatter.args,
- stdin = O.lang.dart.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "dartls" then
- return
- end
-
- require("lspconfig").dartls.setup {
- cmd = { "dart", O.lang.dart.sdk_path, "--lsp" },
- on_attach = require("lsp").common_on_attach,
- init_options = {
- closingLabels = false,
- flutterOutline = false,
- onlyAnalyzeProjectsWithOpenFiles = false,
- outline = false,
- suggestFromUnimportedLibraries = true,
- },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/dockerfile.lua b/lua/lang/dockerfile.lua
deleted file mode 100644
index 35134f36..00000000
--- a/lua/lang/dockerfile.lua
+++ /dev/null
@@ -1,39 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.docker = {
- lsp = {
- path = DATA_PATH .. "/lspinstall/dockerfile/node_modules/.bin/docker-langserver",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "dockerls" then
- return
- end
-
- -- npm install -g dockerfile-language-server-nodejs
- require("lspconfig").dockerls.setup {
- cmd = { O.lang.docker.lsp.path, "--stdio" },
- on_attach = require("lsp").common_on_attach,
- root_dir = vim.loop.cwd,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/elixir.lua b/lua/lang/elixir.lua
deleted file mode 100644
index e702e89b..00000000
--- a/lua/lang/elixir.lua
+++ /dev/null
@@ -1,61 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.elixir = {
- formatter = {
- exe = "mix",
- args = { "format" },
- stdin = true,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["elixir"] = {
- function()
- return {
- exe = O.lang.elixir.formatter.exe,
- args = O.lang.elixir.formatter.args,
- stdin = O.lang.elixir.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "elixirls" then
- return
- end
-
- require("lspconfig").elixirls.setup {
- cmd = { O.lang.elixir.lsp.path },
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
--- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir)
--- vim.cmd [[
--- au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
--- au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir
--- au BufRead,BufNewFile mix.lock set filetype=elixir
--- ]]
-
-return M
diff --git a/lua/lang/elm.lua b/lua/lang/elm.lua
deleted file mode 100644
index 8fc8cebb..00000000
--- a/lua/lang/elm.lua
+++ /dev/null
@@ -1,48 +0,0 @@
-local M = {}
-
-M.config = function()
- local elm_bin = DATA_PATH .. "/lspinstall/elm/node_modules/.bin"
-
- O.lang.elm = {
- lsp = {
- path = elm_bin .. "/elm-language-server",
- format = elm_bin .. "/elm-format",
- root = elm_bin,
- test = elm_bin .. "/elm-test",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "elmls" then
- return
- end
-
- require("lspconfig").elmls.setup {
- cmd = { O.lang.elm.lsp.path },
- on_attach = require("lsp").common_on_attach,
- init_options = {
- elmAnalyseTrigger = "change",
- elmFormatPath = O.lang.elm.lsp.format,
- elmPath = O.lang.elm.lsp.root,
- elmTestPath = O.lang.elm.lsp.test,
- },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/erlang.lua b/lua/lang/erlang.lua
deleted file mode 100644
index c98b65cf..00000000
--- a/lua/lang/erlang.lua
+++ /dev/null
@@ -1,32 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.erlang = {}
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "erlangls" then
- return
- end
-
- require("lspconfig").erlangls.setup {
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/euphoria3.lua b/lua/lang/euphoria3.lua
deleted file mode 100644
index f8e32c61..00000000
--- a/lua/lang/euphoria3.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "elixirls" then
- return
- end
-
- -- TODO: Remove this at some point
- require("lspconfig").elixirls.setup {
- cmd = { DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh" },
- on_attach = require("lsp").common_on_attach,
- }
-end
-
--- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir)
--- vim.cmd([[
--- au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
--- au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir
--- au BufRead,BufNewFile mix.lock set filetype=elixir
--- ]])
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/fish.lua b/lua/lang/fish.lua
deleted file mode 100644
index a347cff7..00000000
--- a/lua/lang/fish.lua
+++ /dev/null
@@ -1,28 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatters (if applicable)
- return "No formatters configured!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- -- TODO: implement lsp
- return "No LSP configured!"
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/go.lua b/lua/lang/go.lua
deleted file mode 100644
index 16b55ffb..00000000
--- a/lua/lang/go.lua
+++ /dev/null
@@ -1,60 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.go = {
- formatter = {
- exe = "gofmt",
- args = {},
- stdin = true,
- },
- linters = {
- "golangcilint",
- "revive",
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/go/gopls",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["go"] = {
- function()
- return {
- exe = O.lang.go.formatter.exe,
- args = O.lang.go.formatter.args,
- stdin = O.lang.go.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- go = O.lang.go.linters,
- }
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "gopls" then
- require("lspconfig").gopls.setup {
- cmd = { O.lang.go.lsp.path },
- settings = { gopls = { analyses = { unusedparams = true }, staticcheck = true } },
- root_dir = require("lspconfig").util.root_pattern(".git", "go.mod"),
- init_options = { usePlaceholders = true, completeUnimported = true },
- on_attach = require("lsp").common_on_attach,
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/graphql.lua b/lua/lang/graphql.lua
deleted file mode 100644
index 601541a6..00000000
--- a/lua/lang/graphql.lua
+++ /dev/null
@@ -1,38 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.graphql = {
- lsp = {
- path = "graphql-lsp",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "graphql" then
- return
- end
-
- -- npm install -g graphql-language-service-cli
- require("lspconfig").graphql.setup {
- cmd = { O.lang.graphql.lsp.path, "server", "-m", "stream" },
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/html.lua b/lua/lang/html.lua
deleted file mode 100644
index b14f6e1a..00000000
--- a/lua/lang/html.lua
+++ /dev/null
@@ -1,50 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.html = {
- linters = {
- "tidy",
- -- https://docs.errata.ai/vale/scoping#html
- "vale",
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/html/vscode-html/html-language-features/server/dist/node/htmlServerMain.js",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatters (if applicable)
- return "No formatters configured!"
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- html = O.lang.html.linters,
- }
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "html" then
- -- npm install -g vscode-html-languageserver-bin
- local capabilities = vim.lsp.protocol.make_client_capabilities()
- capabilities.textDocument.completion.completionItem.snippetSupport = true
-
- require("lspconfig").html.setup {
- cmd = {
- "node",
- O.lang.html.lsp.path,
- "--stdio",
- },
- on_attach = require("lsp").common_on_attach,
- capabilities = capabilities,
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/java.lua b/lua/lang/java.lua
deleted file mode 100644
index d84c0000..00000000
--- a/lua/lang/java.lua
+++ /dev/null
@@ -1,127 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.java = {
- java_tools = {
- active = false,
- },
- formatter = {
- exe = "prettier",
- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
- },
- }
-end
-
-M.format = function()
- vim.cmd "let proj = FindRootDirectory()"
- local root_dir = vim.api.nvim_get_var "proj"
-
- -- use the global prettier if you didn't find the local one
- local prettier_instance = root_dir .. "/node_modules/.bin/prettier"
- if vim.fn.executable(prettier_instance) ~= 1 then
- prettier_instance = O.lang.tsserver.formatter.exe
- end
-
- O.formatters.filetype["java"] = {
- function()
- return {
- exe = prettier_instance,
- -- TODO: allow user to override this
- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0) },
- stdin = true,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "jdtls" then
- return
- end
-
- if O.lang.java.java_tools.active then
- -- find_root looks for parent directories relative to the current buffer containing one of the given arguments.
- if vim.fn.has "mac" == 1 then
- WORKSPACE_PATH = "/Users/" .. USER .. "/workspace/"
- elseif vim.fn.has "unix" == 1 then
- WORKSPACE_PATH = "/home/" .. USER .. "/workspace/"
- else
- print "Unsupported system"
- end
-
- JAVA_LS_EXECUTABLE = os.getenv "HOME" .. "/.local/share/lunarvim/lvim/utils/bin/jdtls"
-
- require("jdtls").start_or_attach {
- on_attach = require("lsp").common_on_attach,
- cmd = { JAVA_LS_EXECUTABLE, WORKSPACE_PATH .. vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t") },
- }
-
- vim.api.nvim_set_keymap(
- "n",
- "<leader>la",
- ":lua require('jdtls').code_action()<CR>",
- { noremap = true, silent = true }
- )
- vim.api.nvim_set_keymap(
- "n",
- "<leader>lR",
- ":lua require('jdtls').code_action(false, 'refactor')<CR>",
- { noremap = true, silent = true }
- )
-
- vim.cmd "command! -buffer JdtCompile lua require('jdtls').compile()"
- vim.cmd "command! -buffer JdtUpdateConfig lua require('jdtls').update_project_config()"
- -- vim.cmd "command! -buffer JdtJol lua require('jdtls').jol()"
- vim.cmd "command! -buffer JdtBytecode lua require('jdtls').javap()"
- -- vim.cmd "command! -buffer JdtJshell lua require('jdtls').jshell()"
- else
- local util = require "lspconfig/util"
-
- require("lspconfig").jdtls.setup {
- on_attach = require("lsp").common_on_attach,
- cmd = { DATA_PATH .. "/lspinstall/java/jdtls.sh" },
- filetypes = { "java" },
- root_dir = util.root_pattern { ".git", "build.gradle", "pom.xml" },
- -- init_options = {bundles = bundles}
- -- on_attach = require'lsp'.common_on_attach
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
--- local bundles = {
--- vim.fn.glob(
--- CONFIG_PATH.."/.debuggers/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar")
--- };
-
--- require('jdtls').start_or_attach({
--- on_attach = on_attach,
--- cmd = {DATA_PATH .. "/lspinstall/java/jdtls.sh"},
--- root_dir = require('jdtls.setup').find_root({'build.gradle', 'pom.xml', '.git'}),
--- init_options = {bundles = bundles}
--- })
-
--- TODO: setup autoformat stuff later
--- _java = {
--- -- {'FileType', 'java', 'luafile '..CONFIG_PATH..'/lua/lsp/java-ls.lua'},
--- {
--- 'FileType', 'java',
--- 'nnoremap ca <Cmd>lua require(\'jdtls\').code_action()<CR>'
--- }
--- }
-
-return M
diff --git a/lua/lang/javascript.lua b/lua/lang/javascript.lua
deleted file mode 100644
index 178c6f54..00000000
--- a/lua/lang/javascript.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function() end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/javascriptreact.lua b/lua/lang/javascriptreact.lua
deleted file mode 100644
index 178c6f54..00000000
--- a/lua/lang/javascriptreact.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function() end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/json.lua b/lua/lang/json.lua
deleted file mode 100644
index e46f38cb..00000000
--- a/lua/lang/json.lua
+++ /dev/null
@@ -1,72 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.json = {
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- formatter = {
- exe = "python",
- args = { "-m", "json.tool" },
- stdin = true,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["json"] = {
- function()
- return {
- exe = O.lang.json.formatter.exe,
- args = O.lang.json.formatter.args,
- stdin = O.lang.json.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "jsonls" then
- return
- end
-
- -- npm install -g vscode-json-languageserver
- require("lspconfig").jsonls.setup {
- cmd = {
- "node",
- O.lang.json.lsp.path,
- "--stdio",
- },
- on_attach = require("lsp").common_on_attach,
-
- commands = {
- Format = {
- function()
- vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
- end,
- },
- },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/julia.lua b/lua/lang/julia.lua
deleted file mode 100644
index a1c0241d..00000000
--- a/lua/lang/julia.lua
+++ /dev/null
@@ -1,53 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.julia = {
- lsp = {
- path = CONFIG_PATH .. "/lua/lsp/julia/run.jl",
- },
- }
-end
-
-M.format = function()
- -- todo: implement formatters (if applicable)
- return "no formatters configured!"
-end
-
-M.lint = function()
- -- todo: implement linters (if applicable)
- return "no linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "julials" then
- return
- end
- -- Add the following lines to a new julia file, e.g. install.jl
- -- using Pkg
- -- Pkg.instantiate()
- -- Run the file you created.
- -- julia install.jl
- -- Julia language server will now be installed on your system.
-
- local cmd = {
- "julia",
- "--startup-file=no",
- "--history-file=no",
- -- vim.fn.expand "~/.config/nvim/lua/lsp/julia/run.jl",
- O.lang.julia.lsp.path,
- }
- require("lspconfig").julials.setup {
- cmd = cmd,
- on_new_config = function(new_config, _)
- new_config.cmd = cmd
- end,
- filetypes = { "julia" },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/kotlin.lua b/lua/lang/kotlin.lua
deleted file mode 100644
index 3979424f..00000000
--- a/lua/lang/kotlin.lua
+++ /dev/null
@@ -1,67 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.kotlin = {
- lsp = {
- path = DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "kotlin_language_server" then
- return
- end
-
- --- default config for gradle-projects of the
- --- kotlin-language-server: https://github.com/fwcd/kotlin-language-server
- ---
- --- This server requires vim to be aware of the kotlin-filetype.
- --- You could refer for this capability to:
- --- https://github.com/udalov/kotlin-vim (recommended)
- --- Note that there is no LICENSE specified yet.
-
- local util = require "lspconfig/util"
-
- local bin_name = O.lang.kotlin.lsp.path
- if vim.fn.has "win32" == 1 then
- bin_name = bin_name .. ".bat"
- end
-
- local root_files = {
- "settings.gradle", -- Gradle (multi-project)
- "settings.gradle.kts", -- Gradle (multi-project)
- "build.xml", -- Ant
- "pom.xml", -- Maven
- }
-
- local fallback_root_files = {
- "build.gradle", -- Gradle
- "build.gradle.kts", -- Gradle
- }
-
- require("lspconfig").kotlin_language_server.setup {
- cmd = { bin_name },
- on_attach = require("lsp").common_on_attach,
- root_dir = function(fname)
- return util.root_pattern(unpack(root_files))(fname) or util.root_pattern(unpack(fallback_root_files))(fname)
- end,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/less.lua b/lua/lang/less.lua
deleted file mode 100644
index 178c6f54..00000000
--- a/lua/lang/less.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function() end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/lua.lua b/lua/lang/lua.lua
deleted file mode 100644
index 6b981479..00000000
--- a/lua/lang/lua.lua
+++ /dev/null
@@ -1,87 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.lua = {
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- formatter = {
- exe = "stylua",
- args = {},
- stdin = false,
- },
- linters = { "luacheck" },
- lsp = {
- path = DATA_PATH .. "/lspinstall/lua/sumneko-lua-language-server",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["lua"] = {
- function()
- return {
- exe = O.lang.lua.formatter.exe,
- args = O.lang.lua.formatter.args,
- stdin = O.lang.lua.formatter.stdin,
- tempfile_prefix = ".formatter",
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- lua = O.lang.lua.linters,
- }
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "sumneko_lua" then
- -- https://github.com/sumneko/lua-language-server/wiki/Build-and-Run-(Standalone)
- local sumneko_main = string.gsub(O.lang.lua.lsp.path, "sumneko-lua-language-server", "main.lua")
-
- require("lspconfig").sumneko_lua.setup {
- cmd = { O.lang.lua.lsp.path, "-E", sumneko_main },
- on_attach = require("lsp").common_on_attach,
- 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", "O" },
- },
- workspace = {
- -- Make the server aware of Neovim runtime files
- library = {
- [vim.fn.expand "~/.local/share/lunarvim/lvim/lua"] = true,
- [vim.fn.expand "$VIMRUNTIME/lua"] = true,
- [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
- },
- maxPreload = 100000,
- preloadFileSize = 1000,
- },
- },
- },
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/php.lua b/lua/lang/php.lua
deleted file mode 100644
index 632c4052..00000000
--- a/lua/lang/php.lua
+++ /dev/null
@@ -1,88 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.php = {
- format = {
- format = {
- default = "psr12",
- },
- },
- environment = {
- php_version = "7.4",
- },
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- filetypes = { "php", "phtml" },
- formatter = {
- exe = "phpcbf",
- args = { "--standard=PSR12", vim.api.nvim_buf_get_name(0) },
- stdin = false,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["php"] = {
- function()
- return {
- exe = O.lang.php.formatter.exe,
- args = O.lang.php.formatter.args,
- stdin = O.lang.php.formatter.stdin,
- tempfile_prefix = ".formatter",
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "intelephense" then
- return
- end
-
- require("lspconfig").intelephense.setup {
- cmd = { O.lang.php.lsp.path, "--stdio" },
- on_attach = require("lsp").common_on_attach,
- handlers = {
- ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = O.lang.php.diagnostics.virtual_text,
- signs = O.lang.php.diagnostics.signs,
- underline = O.lang.php.diagnostics.underline,
- update_in_insert = true,
- }),
- },
- filetypes = O.lang.php.filetypes,
- settings = {
- intelephense = {
- format = {
- braces = O.lang.php.format.braces,
- },
- environment = {
- phpVersion = O.lang.php.environment.php_version,
- },
- },
- },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/python.lua b/lua/lang/python.lua
deleted file mode 100644
index b51ea1c4..00000000
--- a/lua/lang/python.lua
+++ /dev/null
@@ -1,95 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.python = {
- -- @usage can be flake8 or yapf
- linter = "",
- isort = false,
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- analysis = {
- type_checking = "basic",
- auto_search_paths = true,
- use_library_code_types = true,
- },
- formatter = {
- exe = "yapf",
- args = {},
- stdin = true,
- },
- linters = {
- "flake8",
- "pylint",
- "mypy",
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["python"] = {
- function()
- return {
- exe = O.lang.python.formatter.exe,
- args = O.lang.python.formatter.args,
- stdin = O.lang.python.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- python = O.lang.python.linters,
- }
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "pyright" then
- return
- end
- -- npm i -g pyright
- require("lspconfig").pyright.setup {
- cmd = {
- O.lang.python.lsp.path,
- "--stdio",
- },
- on_attach = require("lsp").common_on_attach,
- handlers = {
- ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = O.lang.python.diagnostics.virtual_text,
- signs = O.lang.python.diagnostics.signs,
- underline = O.lang.python.diagnostics.underline,
- update_in_insert = true,
- }),
- },
- settings = {
- python = {
- analysis = {
- typeCheckingMode = O.lang.python.analysis.type_checking,
- autoSearchPaths = O.lang.python.analysis.auto_search_paths,
- useLibraryCodeForTypes = O.lang.python.analysis.use_library_code_types,
- },
- },
- },
- }
-end
-
-M.dap = function()
- if O.plugin.dap.active then
- local dap_install = require "dap-install"
- dap_install.config("python_dbg", {})
- end
-end
-
-return M
diff --git a/lua/lang/r.lua b/lua/lang/r.lua
deleted file mode 100644
index b05e6ee6..00000000
--- a/lua/lang/r.lua
+++ /dev/null
@@ -1,56 +0,0 @@
-local M = {}
-
-M.config = function()
- -- R -e 'install.packages("formatR",repos = "http://cran.us.r-project.org")'
- -- R -e 'install.packages("readr",repos = "http://cran.us.r-project.org")'
- O.lang.r = {
- formatter = {
- exe = "R",
- args = {
- "--slave",
- "--no-restore",
- "--no-save",
- '-e "formatR::tidy_source(text=readr::read_file(file(\\"stdin\\")), arrow=FALSE)"',
- },
- stdin = true,
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["r"] = {
- function()
- return {
- exe = O.lang.r.formatter.exe,
- args = O.lang.r.formatter.args,
- stdin = O.lang.r.formatter.stdin,
- }
- end,
- }
- O.formatters.filetype["rmd"] = O.formatters.filetype["r"]
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "r_language_server" then
- return
- end
- -- R -e 'install.packages("languageserver",repos = "http://cran.us.r-project.org")'
- require("lspconfig").r_language_server.setup {}
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/ruby.lua b/lua/lang/ruby.lua
deleted file mode 100644
index 1975acfd..00000000
--- a/lua/lang/ruby.lua
+++ /dev/null
@@ -1,77 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.ruby = {
- diagnostics = {
- virtualtext = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- filetypes = { "rb", "erb", "rakefile", "ruby" },
- formatter = {
- exe = "rufo",
- args = { "-x" },
- stdin = true,
- },
- linters = { "ruby" },
- lsp = {
- path = DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["ruby"] = {
- function()
- return {
- exe = O.lang.ruby.formatter.exe,
- args = O.lang.ruby.formatter.args,
- stdin = O.lang.ruby.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- ruby = O.lang.ruby.linters,
- }
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "sorbet" then
- require("lspconfig").sorbet.setup {}
- end
-
- if not require("lv-utils").check_lsp_client_active "solargraph" then
- -- If you are using rvm, make sure to change below configuration
- require("lspconfig").solargraph.setup {
- cmd = { O.lang.ruby.lsp.path, "stdio" },
- on_attach = require("lsp").common_on_attach,
- handlers = {
- ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = O.lang.ruby.diagnostics.virtual_text,
- signs = O.lang.ruby.diagnostics.signs,
- underline = O.lang.ruby.diagnostics.underline,
- update_in_insert = true,
- }),
- },
- filetypes = O.lang.ruby.filetypes,
- }
- end
-end
-
-M.dap = function()
- -- gem install readapt ruby-debug-ide
- if O.plugin.dap.active then
- local dap_install = require "dap-install"
- dap_install.config("ruby_vsc_dbg", {})
- end
-end
-
-return M
diff --git a/lua/lang/rust.lua b/lua/lang/rust.lua
deleted file mode 100644
index e3d4ce47..00000000
--- a/lua/lang/rust.lua
+++ /dev/null
@@ -1,155 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.rust = {
- rust_tools = {
- active = false,
- parameter_hints_prefix = "<-",
- other_hints_prefix = "=>", -- prefix for all the other hints (type, chaining)
- },
- -- @usage can be clippy
- formatter = {
- exe = "rustfmt",
- args = { "--emit=stdout", "--edition=2018" },
- stdin = true,
- },
- linter = "",
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/rust/rust-analyzer",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["rust"] = {
- function()
- return {
- exe = O.lang.rust.formatter.exe,
- args = O.lang.rust.formatter.args,
- stdin = O.lang.rust.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "rust_analyzer" then
- return
- end
-
- if O.lang.rust.rust_tools.active then
- local opts = {
- tools = { -- rust-tools options
- -- automatically set inlay hints (type hints)
- -- There is an issue due to which the hints are not applied on the first
- -- opened file. For now, write to the file to trigger a reapplication of
- -- the hints or just run :RustSetInlayHints.
- -- default: true
- autoSetHints = true,
-
- -- whether to show hover actions inside the hover window
- -- this overrides the default hover handler
- -- default: true
- hover_with_actions = true,
-
- runnables = {
- -- whether to use telescope for selection menu or not
- -- default: true
- use_telescope = true,
-
- -- rest of the opts are forwarded to telescope
- },
-
- inlay_hints = {
- -- wheter to show parameter hints with the inlay hints or not
- -- default: true
- show_parameter_hints = true,
-
- -- prefix for parameter hints
- -- default: "<-"
- parameter_hints_prefix = O.lang.rust.rust_tools.parameter_hints_prefix,
-
- -- prefix for all the other hints (type, chaining)
- -- default: "=>"
- other_hints_prefix = O.lang.rust.rust_tools.other_hints_prefix,
-
- -- whether to align to the lenght of the longest line in the file
- max_len_align = false,
-
- -- padding from the left if max_len_align is true
- max_len_align_padding = 1,
-
- -- whether to align to the extreme right or not
- right_align = false,
-
- -- padding from the right if right_align is true
- right_align_padding = 7,
- },
-
- hover_actions = {
- -- the border that is used for the hover window
- -- see vim.api.nvim_open_win()
- border = {
- { "â•­", "FloatBorder" },
- { "─", "FloatBorder" },
- { "â•®", "FloatBorder" },
- { "│", "FloatBorder" },
- { "╯", "FloatBorder" },
- { "─", "FloatBorder" },
- { "â•°", "FloatBorder" },
- { "│", "FloatBorder" },
- },
- },
- },
-
- -- all the opts to send to nvim-lspconfig
- -- these override the defaults set by rust-tools.nvim
- -- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer
- server = {
- cmd = { O.lang.rust.lsp.path },
- on_attach = require("lsp").common_on_attach,
- }, -- rust-analyser options
- }
- require("rust-tools").setup(opts)
- else
- require("lspconfig").rust_analyzer.setup {
- cmd = { O.lang.rust.lsp.path },
- on_attach = require("lsp").common_on_attach,
- filetypes = { "rust" },
- root_dir = require("lspconfig.util").root_pattern("Cargo.toml", "rust-project.json"),
- }
- end
-
- -- TODO: fix these mappings
- vim.api.nvim_exec(
- [[
- autocmd Filetype rust nnoremap <leader>lm <Cmd>RustExpandMacro<CR>
- autocmd Filetype rust nnoremap <leader>lH <Cmd>RustToggleInlayHints<CR>
- autocmd Filetype rust nnoremap <leader>le <Cmd>RustRunnables<CR>
- autocmd Filetype rust nnoremap <leader>lh <Cmd>RustHoverActions<CR>
- ]],
- true
- )
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/scala.lua b/lua/lang/scala.lua
deleted file mode 100644
index 081c74bf..00000000
--- a/lua/lang/scala.lua
+++ /dev/null
@@ -1,80 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.scala = {
- metals = {
- active = false,
- server_version = "0.10.5",
- excluded_packages = {},
- show_implicit_arguments = false,
- show_inferred_type = true,
- status_bar_provider = false,
- },
- formatter = {
- exe = "scalafmt",
- args = { "--stdin" },
- stdin = true,
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["scala"] = {
- function()
- return {
- exe = O.lang.scala.formatter.exe,
- args = O.lang.scala.formatter.args,
- stdin = O.lang.scala.formatter.stdin,
- }
- end,
- }
- O.formatters.filetype["sbt"] = O.formatters.filetype["scala"]
- -- To understand sbt files on stdin, scalafmt needs to assume any old filename
- -- that ends in .sbt. Using a dummy filename instead of the actual one is
- -- required to support buffers of sbt filetype without the extension.
- O.formatters.filetype["sbt"].args = { "--stdin", "--assume-filename", "foo.sbt" }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- -- enable metal server integration
- if O.lang.scala.metals.active then
- vim.g["metals_server_version"] = O.lang.scala.metals.server_version
- -- https://github.com/scalameta/nvim-metals#prerequisites
- vim.opt_global.shortmess:remove("F"):append "c"
- local metals_config = require("metals").bare_config
- metals_config.on_attach = function()
- require("completion").on_attach()
- end
- metals_config.handlers["textDocument/publishDiagnostics"] =
- vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = {
- prefix = "",
- },
- })
- metals_config.settings = {
- showImplicitArguments = O.lang.scala.metals.show_implicit_arguments,
- showInferredType = O.lang.scala.metals.show_inferred_type,
- excludedPackages = O.lang.scala.metals.excluded_packages,
- }
- metals_config.init_options.statusBarProvider = O.lang.scala.metals.status_bar_provider
- require "lsp"
- require("metals").initialize_or_attach(metals_config)
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/sh.lua b/lua/lang/sh.lua
deleted file mode 100644
index 71170e1f..00000000
--- a/lua/lang/sh.lua
+++ /dev/null
@@ -1,65 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.sh = {
- -- @usage can be 'shellcheck'
- linter = "",
- -- @usage can be 'shfmt'
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- formatter = {
- exe = "shfmt",
- args = { "-w" },
- stdin = false,
- },
- linters = { "shellcheck" },
- lsp = {
- path = DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["sh"] = {
- function()
- return {
- exe = O.lang.sh.formatter.exe,
- args = O.lang.sh.formatter.args,
- stdin = O.lang.sh.formatter.stdin,
- tempfile_prefix = ".formatter",
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- sh = O.lang.sh.linters,
- }
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "bashls" then
- -- npm i -g bash-language-server
- require("lspconfig").bashls.setup {
- cmd = { O.lang.sh.lsp.path, "start" },
- on_attach = require("lsp").common_on_attach,
- filetypes = { "sh", "zsh" },
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/svelte.lua b/lua/lang/svelte.lua
deleted file mode 100644
index ad6dd094..00000000
--- a/lua/lang/svelte.lua
+++ /dev/null
@@ -1,39 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.svelte = {
- lsp = {
- path = DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter (if applicable)
- return "No formatter configured!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "svelte" then
- return
- end
-
- require("lspconfig").svelte.setup {
- cmd = { O.lang.svelte.lsp.path, "--stdio" },
- filetypes = { "svelte" },
- root_dir = require("lspconfig.util").root_pattern("package.json", ".git"),
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/swift.lua b/lua/lang/swift.lua
deleted file mode 100644
index 845f9a49..00000000
--- a/lua/lang/swift.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.swift = {
- formatter = {
- exe = "swiftformat",
- args = {},
- stdin = true,
- },
- lsp = {
- path = "sourcekit-lsp",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter (if applicable)
- return "No formatter configured!"
-end
-
-M.lint = function()
- O.formatters.filetype["swift"] = {
- function()
- return {
- exe = O.lang.swift.formatter.exe,
- args = O.lang.swift.formatter.args,
- stdin = O.lang.swift.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "sourcekit" then
- return
- end
-
- require("lspconfig").sourcekit.setup {
- cmd = { "xcrun", O.lang.swift.lsp.path },
- on_attach = require("lsp").common_on_attach,
- filetypes = { "swift" },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/terraform.lua b/lua/lang/terraform.lua
deleted file mode 100644
index df8ac692..00000000
--- a/lua/lang/terraform.lua
+++ /dev/null
@@ -1,57 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.terraform = {
- formatter = {
- exe = "terraform",
- args = { "fmt" },
- stdin = false,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/terraform/terraform-ls",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["hcl"] = {
- function()
- return {
- exe = O.lang.terraform.formatter.exe,
- args = O.lang.terraform.formatter.args,
- stdin = O.lang.terraform.formatter.stdin,
- tempfile_prefix = ".formatter",
- }
- end,
- }
- O.formatters.filetype["tf"] = O.formatters.filetype["hcl"]
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "terraformls" then
- return
- end
-
- require("lspconfig").terraformls.setup {
- cmd = { O.lang.terraform.lsp.path, "serve" },
- on_attach = require("lsp").common_on_attach,
- filetypes = { "tf", "terraform", "hcl" },
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/tex.lua b/lua/lang/tex.lua
deleted file mode 100644
index a91105ff..00000000
--- a/lua/lang/tex.lua
+++ /dev/null
@@ -1,159 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.latex = {
- filetypes = { "tex", "bib" },
- aux_directory = nil,
- bibtex_formatter = "texlab",
- diagnostics_delay = 300,
- formatter_line_length = 80,
- latex_formatter = "latexindent",
- lsp = {
- path = DATA_PATH .. "/lspinstall/latex/texlab",
- },
- build = {
- executable = "latexmk",
- args = { "-pdf", "-interaction=nonstopmode", "-synctex=1", "%f" },
- on_save = false,
- forward_search_after = false,
- },
- chktex = {
- on_open_and_save = false,
- on_edit = false,
- },
- forward_search = {
- executable = nil,
- args = {},
- },
- latexindent = {
- ["local"] = nil,
- modify_line_breaks = false,
- },
- diagnostics = {
- virtual_text = { spacing = 0, prefix = "ï„‘" },
- signs = true,
- underline = true,
- },
- linters = { "chktex" },
- auto_save = false,
- ignore_errors = {},
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- tex = O.lang.latex.linters,
- }
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "texlab" then
- return
- end
-
- local preview_settings = {}
-
- local sumatrapdf_args = { "-reuse-instance", "%p", "-forward-search", "%f", "%l" }
- local evince_args = { "-f", "%l", "%p", '"code -g %f:%l"' }
- local okular_args = { "--unique", "file:%p#src:%l%f" }
- local zathura_args = { "--synctex-forward", "%l:1:%f", "%p" }
- local qpdfview_args = { "--unique", "%p#src:%f:%l:1" }
- local skim_args = { "%l", "%p", "%f" }
-
- if O.lang.latex.forward_search.executable == "C:/Users/{User}/AppData/Local/SumatraPDF/SumatraPDF.exe" then
- preview_settings = sumatrapdf_args
- elseif O.lang.latex.forward_search.executable == "evince-synctex" then
- preview_settings = evince_args
- elseif O.lang.latex.forward_search.executable == "okular" then
- preview_settings = okular_args
- elseif O.lang.latex.forward_search.executable == "zathura" then
- preview_settings = zathura_args
- elseif O.lang.latex.forward_search.executable == "qpdfview" then
- preview_settings = qpdfview_args
- elseif O.lang.latex.forward_search.executable == "/Applications/Skim.app/Contents/SharedSupport/displayline" then
- preview_settings = skim_args
- end
-
- require("lspconfig").texlab.setup {
- cmd = { O.lang.latex.lsp.path },
- on_attach = require("lsp").common_on_attach,
- handlers = {
- ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = O.lang.latex.diagnostics.virtual_text,
- signs = O.lang.latex.diagnostics.signs,
- underline = O.lang.latex.diagnostics.underline,
- update_in_insert = true,
- }),
- },
- filetypes = { "tex", "bib" },
- settings = {
- texlab = {
- auxDirectory = O.lang.latex.aux_directory,
- bibtexFormatter = O.lang.latex.bibtex_formatter,
- build = {
- args = O.lang.latex.build.args,
- executable = O.lang.latex.build.executable,
- forwardSearchAfter = O.lang.latex.build.forward_search_after,
- onSave = O.lang.latex.build.on_save,
- },
- chktex = {
- onEdit = O.lang.latex.chktex.on_edit,
- onOpenAndSave = O.lang.latex.chktex.on_open_and_save,
- },
- diagnosticsDelay = O.lang.latex.diagnostics_delay,
- formatterLineLength = O.lang.latex.formatter_line_length,
- forwardSearch = {
- args = preview_settings,
- executable = O.lang.latex.forward_search.executable,
- },
- latexFormatter = O.lang.latex.latex_formatter,
- latexindent = {
- modifyLineBreaks = O.lang.latex.latexindent.modify_line_breaks,
- },
- },
- },
- }
- vim.g.vimtex_compiler_method = "latexmk"
- vim.g.vimtex_view_method = "zathura"
- vim.g.vimtex_fold_enabled = 0
- vim.g.vimtex_quickfix_ignore_filters = O.lang.latex.ignore_errors
-
- O.plugin.which_key.mappings["t"] = {
- name = "+Latex",
- c = { "<cmd>VimtexCompile<cr>", "Toggle Compilation Mode" },
- f = { "<cmd>call vimtex#fzf#run()<cr>", "Fzf Find" },
- i = { "<cmd>VimtexInfo<cr>", "Project Information" },
- s = { "<cmd>VimtexStop<cr>", "Stop Project Compilation" },
- t = { "<cmd>VimtexTocToggle<cr>", "Toggle Table Of Content" },
- v = { "<cmd>VimtexView<cr>", "View PDF" },
- b = { "<cmd>TexlabBuild<cr>", "Build with Texlab" },
- p = { "<cmd>TexlabForward<cr>", "Preview with Texlab" },
- }
-
- -- Compile on initialization, cleanup on quit
- vim.api.nvim_exec(
- [[
- augroup vimtex_event_1
- au!
- au User VimtexEventQuit call vimtex#compiler#clean(0)
- au User VimtexEventInitPost call vimtex#compiler#compile()
- augroup END
- ]],
- false
- )
- if O.lang.latex.auto_save then
- vim.api.nvim_exec([[au FocusLost * :wa]], false)
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/typescript.lua b/lua/lang/typescript.lua
deleted file mode 100644
index 178c6f54..00000000
--- a/lua/lang/typescript.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function() end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/typescriptreact.lua b/lua/lang/typescriptreact.lua
deleted file mode 100644
index 178c6f54..00000000
--- a/lua/lang/typescriptreact.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-local M = {}
-
-M.config = function()
- -- TODO: implement config for language
- return "No config available!"
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function() end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/vim.lua b/lua/lang/vim.lua
deleted file mode 100644
index 027538ab..00000000
--- a/lua/lang/vim.lua
+++ /dev/null
@@ -1,40 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.vim = {
- linters = { "vint" },
- lsp = {
- path = DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
-end
-
-M.lint = function()
- require("lint").linters_by_ft = {
- vim = O.lang.vim.linters,
- }
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "vimls" then
- return
- end
-
- -- npm install -g vim-language-server
- require("lspconfig").vimls.setup {
- cmd = { O.lang.vim.lsp.path, "--stdio" },
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/vue.lua b/lua/lang/vue.lua
deleted file mode 100644
index 8725bba2..00000000
--- a/lua/lang/vue.lua
+++ /dev/null
@@ -1,71 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.vue = {
- formatter = {
- exe = "prettier",
- args = {
- "--stdin-filepath",
- "${FILEPATH}",
- },
- stdin = true,
- },
- auto_import = true,
- lsp = {
- path = DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",
- },
- }
-end
-
-M.format = function()
- vim.cmd "let proj = FindRootDirectory()"
- local root_dir = vim.api.nvim_get_var "proj"
-
- -- use the global formatter if you didn't find the local one
- local formatter_instance = root_dir .. "/node_modules/.bin/" .. O.lang.vue.formatter.exe
- if vim.fn.executable(formatter_instance) ~= 1 then
- formatter_instance = O.lang.vue.formatter.exe
- end
-
- local ft = vim.bo.filetype
- O.formatters.filetype[ft] = {
- function()
- local lv_utils = require "lv-utils"
- return {
- exe = formatter_instance,
- args = lv_utils.gsub_args(O.lang.vue.formatter.args),
- stdin = O.lang.vue.formatter.stdin,
- }
- end,
- }
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "vuels" then
- return
- end
-
- -- Vue language server configuration (vetur)
- require("lspconfig").vuels.setup {
- cmd = { O.lang.vue.lsp.path, "--stdio" },
- on_attach = require("lsp").common_on_attach,
- }
-
- require("lsp.ts-fmt-lint").setup()
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/yaml.lua b/lua/lang/yaml.lua
deleted file mode 100644
index 44366ad2..00000000
--- a/lua/lang/yaml.lua
+++ /dev/null
@@ -1,54 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.yaml = {
- formatter = {
- exe = "prettier",
- args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
- stdin = true,
- },
- lsp = {
- path = DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["yaml"] = {
- function()
- return {
- exe = O.lang.yaml.formatter.exe,
- args = O.lang.yaml.formatter.args,
- stdin = O.lang.yaml.formatter.stdin,
- }
- end,
- }
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "yamlls" then
- return
- end
-
- -- npm install -g yaml-language-server
- require("lspconfig").yamlls.setup {
- cmd = { O.lang.yaml.lsp.path, "--stdio" },
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/zig.lua b/lua/lang/zig.lua
deleted file mode 100644
index 06ae9197..00000000
--- a/lua/lang/zig.lua
+++ /dev/null
@@ -1,58 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.zig = {
- formatter = {
- exe = "zig",
- args = { "fmt" },
- stdin = false,
- },
- lsp = {
- path = "zls",
- },
- }
-end
-
-M.format = function()
- O.formatters.filetype["zig"] = {
- function()
- return {
- exe = O.lang.zig.formatter.exe,
- args = O.lang.zig.formatter.args,
- stdin = O.lang.zig.formatter.stdin,
- }
- end,
- }
-
- require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
- }
-end
-
-M.lint = function()
- -- TODO: implement linters (if applicable)
- return "No linters configured!"
-end
-
-M.lsp = function()
- if require("lv-utils").check_lsp_client_active "zls" then
- return
- end
- -- Because lspinstall don't support zig yet,
- -- So we need zls preset in global lib
- -- Further custom install zls in
- -- https://github.com/zigtools/zls/wiki/Downloading-and-Building-ZLS
- require("lspconfig").zls.setup {
- cmd = { O.lang.zig.lsp.path },
- root_dir = require("lspconfig").util.root_pattern(".git", "build.zig", "zls.json"),
- on_attach = require("lsp").common_on_attach,
- }
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lang/zsh.lua b/lua/lang/zsh.lua
deleted file mode 100644
index 44ce35a1..00000000
--- a/lua/lang/zsh.lua
+++ /dev/null
@@ -1,53 +0,0 @@
-local M = {}
-
-M.config = function()
- O.lang.zsh = {
- lsp = {
- path = DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
- },
- }
-end
-
-M.format = function()
- -- TODO: implement format for language
- return "No format available!"
-end
-
-M.lint = function()
- -- zsh
- local zsh_arguments = {}
-
- if not require("lv-utils").check_lsp_client_active "efm" then
- require("lspconfig").efm.setup {
- -- init_options = {initializationOptions},
- cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
- init_options = { documentFormatting = true, codeAction = false },
- root_dir = require("lspconfig").util.root_pattern ".git/",
- filetypes = { "zsh" },
- settings = {
- rootMarkers = { ".git/" },
- languages = {
- zsh = zsh_arguments,
- },
- },
- }
- end
-end
-
-M.lsp = function()
- if not require("lv-utils").check_lsp_client_active "bashls" then
- -- npm i -g bash-language-server
- require("lspconfig").bashls.setup {
- cmd = { O.lang.zsh.lsp.path, "start" },
- on_attach = require("lsp").common_on_attach,
- filetypes = { "sh", "zsh" },
- }
- end
-end
-
-M.dap = function()
- -- TODO: implement dap
- return "No DAP configured!"
-end
-
-return M
diff --git a/lua/lsp/angular-ls.lua b/lua/lsp/angular-ls.lua
deleted file mode 100644
index 818faf38..00000000
--- a/lua/lsp/angular-ls.lua
+++ /dev/null
@@ -1,6 +0,0 @@
--- TODO: find correct root filetype
--- :LspInstall angular
-require("lspconfig").angularls.setup {
- cmd = { DATA_PATH .. "/lspinstall/angular/node_modules/@angular/language-server/bin/ngserver", "--stdio" },
- on_attach = require("lsp").common_on_attach,
-}
diff --git a/lua/lsp/emmet-ls.lua b/lua/lsp/emmet-ls.lua
deleted file mode 100644
index e38747ac..00000000
--- a/lua/lsp/emmet-ls.lua
+++ /dev/null
@@ -1,23 +0,0 @@
--- if not package.loaded['lspconfig'] then
--- return
--- end
-
-local nvim_lsp = require "lspconfig"
-local configs = require "lspconfig/configs"
-local capabilities = vim.lsp.protocol.make_client_capabilities()
-capabilities.textDocument.completion.completionItem.snippetSupport = true
-
-configs.emmet_ls = {
- default_config = {
- cmd = { "emmet-ls", "--stdio" },
- filetypes = { "html", "css", "javascript", "typescript", "vue" },
- root_dir = function()
- return vim.loop.cwd()
- end,
- settings = {},
- },
-}
-
-nvim_lsp.emmet_ls.setup {
- -- on_attach = on_attach;
-}
diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua
index 7884f763..b0511f0e 100644
--- a/lua/lsp/init.lua
+++ b/lua/lsp/init.lua
@@ -1,4 +1,5 @@
--- TODO: figure out why this don't work
+local lsp_config = {}
+
vim.fn.sign_define(
"LspDiagnosticsSignError",
{ texthl = "LspDiagnosticsSignError", text = "ï™™", numhl = "LspDiagnosticsSignError" }
@@ -37,7 +38,7 @@ vim.fn.sign_define(
-- { noremap = true, silent = true }
-- )
-if O.lsp.default_keybinds then
+if lvim.lsp.default_keybinds then
vim.cmd "nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR>"
vim.cmd "nnoremap <silent> gD <cmd>lua vim.lsp.buf.declaration()<CR>"
vim.cmd "nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>"
@@ -51,8 +52,8 @@ if O.lsp.default_keybinds then
vim.cmd "nnoremap <silent> gp <cmd>lua require'lsp'.PeekDefinition()<CR>"
vim.cmd "nnoremap <silent> K :lua vim.lsp.buf.hover()<CR>"
- vim.cmd "nnoremap <silent> <C-p> :lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})<CR>"
- vim.cmd "nnoremap <silent> <C-n> :lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})<CR>"
+ vim.cmd "nnoremap <silent> <C-p> :lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = lvim.lsp.popup_border}})<CR>"
+ vim.cmd "nnoremap <silent> <C-n> :lua vim.lsp.diagnostic.goto_next({popup_opts = {border = lvim.lsp.popup_border}})<CR>"
vim.cmd "nnoremap <silent> <tab> <cmd>lua vim.lsp.buf.signature_help()<CR>"
-- scroll down hover doc or scroll in definition preview
-- scroll up hover doc
@@ -61,19 +62,21 @@ end
-- Set Default Prefix.
-- Note: You can set a prefix per lsp server in the lv-globals.lua file
-vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- virtual_text = O.lsp.diagnostics.virtual_text,
- signs = O.lsp.diagnostics.signs,
- underline = O.lsp.document_highlight,
-})
+function lsp_config.setup_handlers()
+ vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
+ virtual_text = lvim.lsp.diagnostics.virtual_text,
+ signs = lvim.lsp.diagnostics.signs,
+ underline = lvim.lsp.document_highlight,
+ })
-vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
- border = O.lsp.popup_border,
-})
+ vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
+ border = lvim.lsp.popup_border,
+ })
-vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
- border = O.lsp.popup_border,
-})
+ vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
+ border = lvim.lsp.popup_border,
+ })
+end
-- symbols for autocomplete
vim.lsp.protocol.CompletionItemKind = {
@@ -112,7 +115,7 @@ autocmd BufWritePre *.lua lua vim.lsp.buf.formatting_sync(nil, 100) ]]
-- autocmd FileType java nnoremap ca <Cmd>lua require('jdtls').code_action()<CR>
local function lsp_highlight_document(client)
- if O.lsp.document_highlight == false then
+ if lvim.lsp.document_highlight == false then
return -- we don't need further
end
-- Set autocommands conditional on server_capabilities
@@ -132,7 +135,6 @@ local function lsp_highlight_document(client)
)
end
end
-local lsp_config = {}
-- Taken from https://www.reddit.com/r/neovim/comments/gyb077/nvimlsp_peek_defination_javascript_ttserver/
function lsp_config.preview_location(location, context, before_context)
@@ -156,7 +158,7 @@ function lsp_config.preview_location(location, context, before_context)
false
)
local filetype = vim.api.nvim_buf_get_option(bufnr, "filetype")
- return vim.lsp.util.open_floating_preview(contents, filetype, { border = O.lsp.popup_border })
+ return vim.lsp.util.open_floating_preview(contents, filetype, { border = lvim.lsp.popup_border })
end
function lsp_config.preview_location_callback(_, method, result)
@@ -200,12 +202,25 @@ function lsp_config.PeekImplementation()
end
function lsp_config.common_on_attach(client, bufnr)
- if O.lsp.on_attach_callback then
- O.lsp.on_attach_callback(client, bufnr)
+ if lvim.lsp.on_attach_callback then
+ lvim.lsp.on_attach_callback(client, bufnr)
end
lsp_highlight_document(client)
end
+function lsp_config.common_capabilities()
+ local capabilities = vim.lsp.protocol.make_client_capabilities()
+ capabilities.textDocument.completion.completionItem.snippetSupport = true
+ capabilities.textDocument.completion.completionItem.resolveSupport = {
+ properties = {
+ "documentation",
+ "detail",
+ "additionalTextEdits",
+ },
+ }
+ return capabilities
+end
+
function lsp_config.tsserver_on_attach(client, _)
-- lsp_config.common_on_attach(client, bufnr)
client.resolved_capabilities.document_formatting = false
@@ -222,13 +237,13 @@ function lsp_config.tsserver_on_attach(client, _)
-- eslint
eslint_enable_code_actions = true,
eslint_enable_disable_comments = true,
- -- eslint_bin = O.lang.tsserver.linter,
+ -- eslint_bin = lvim.lang.tsserver.linter,
eslint_config_fallback = nil,
eslint_enable_diagnostics = true,
-- formatting
- enable_formatting = O.lang.tsserver.autoformat,
- formatter = O.lang.tsserver.formatter.exe,
+ enable_formatting = lvim.lang.tsserver.autoformat,
+ formatter = lvim.lang.tsserver.formatter.exe,
formatter_config_fallback = nil,
-- parentheses completion
@@ -257,8 +272,15 @@ require("lv-utils").define_augroups {
},
}
--- Use a loop to conveniently both setup defined servers
--- and map buffer local keybindings when the language server attaches
--- local servers = {"pyright", "tsserver"}
--- for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup {on_attach = on_attach} end
+function lsp_config.setup(lang)
+ lang_server = lvim.lang[lang].lsp
+ require("lsp.null-ls").setup "python"
+ local provider = lang_server.provider
+ if require("lv-utils").check_lsp_client_active(provider) then
+ return
+ end
+ require("lspconfig")[provider].setup(lang_server.setup)
+ require("lsp.null-ls").setup(lang)
+end
+
return lsp_config
diff --git a/lua/lsp/null-ls.lua b/lua/lsp/null-ls.lua
new file mode 100644
index 00000000..43d4400a
--- /dev/null
+++ b/lua/lsp/null-ls.lua
@@ -0,0 +1,70 @@
+local M = {}
+
+local null_ls = require "null-ls"
+local sources = {}
+
+local local_executables = { "prettier", "prettierd", "prettier_d_slim", "eslint_d", "eslint" }
+
+local function is_table(t)
+ return type(t) == "table"
+end
+
+local function is_string(t)
+ return type(t) == "string"
+end
+
+local function has_value(tab, val)
+ for index, value in ipairs(tab) do
+ if value == val then
+ return true
+ end
+ end
+
+ return false
+end
+
+local find_local_exe = function(exe)
+ vim.cmd "let root_dir = FindRootDirectory()"
+ local root_dir = vim.api.nvim_get_var "root_dir"
+ local local_exe = root_dir .. "/node_modules/.bin/" .. exe
+ return local_exe
+end
+
+local function setup_ls(exe, type)
+ if has_value(local_executables, exe) then
+ local smart_executable = null_ls.builtins[type][exe]
+ local local_executable = find_local_exe(exe)
+ if vim.fn.executable(local_executable) then
+ smart_executable._opts.command = local_executable
+ end
+ table.insert(sources, smart_executable)
+ else
+ table.insert(sources, null_ls.builtins[type][exe])
+ end
+ null_ls.register { sources = sources }
+end
+
+local function setup(filetype, type)
+ if type == "diagnostics" then
+ executables = lvim.lang[filetype].linters
+ end
+ if type == "formatting" then
+ executables = lvim.lang[filetype].formatter.exe
+ end
+
+ if is_table(executables) then
+ for _, exe in pairs(executables) do
+ setup_ls(exe, type)
+ end
+ end
+ if is_string(executables) then
+ setup_ls(executables, type)
+ end
+end
+
+function M.setup(filetype)
+ setup(filetype, "formatting")
+ setup(filetype, "diagnostics")
+end
+
+return M
diff --git a/lua/lsp/svelte-ls.lua b/lua/lsp/svelte-ls.lua
deleted file mode 100644
index e5ddb3b3..00000000
--- a/lua/lsp/svelte-ls.lua
+++ /dev/null
@@ -1,5 +0,0 @@
--- TODO: what is a svelte filetype
-require("lspconfig").svelte.setup {
- cmd = { DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver", "--stdio" },
- on_attach = require("lsp").common_on_attach,
-}
diff --git a/lua/lsp/tailwindcss-ls.lua b/lua/lsp/tailwindcss-ls.lua
deleted file mode 100644
index 38c1e7cc..00000000
--- a/lua/lsp/tailwindcss-ls.lua
+++ /dev/null
@@ -1,13 +0,0 @@
--- TODO: what is a tailwindcss filetype
-local lspconfig = require "lspconfig"
-
-lspconfig.tailwindcss.setup {
- cmd = {
- "node",
- DATA_PATH .. "/lspinstall/tailwindcss/tailwindcss-intellisense/extension/dist/server/tailwindServer.js",
- "--stdio",
- },
- filetypes = O.lang.tailwindcss.filetypes,
- root_dir = require("lspconfig/util").root_pattern("tailwind.config.js", "postcss.config.ts", ".postcssrc"),
- on_attach = require("lsp").common_on_attach,
-}
diff --git a/lua/lsp/ts-fmt-lint.lua b/lua/lsp/ts-fmt-lint.lua
deleted file mode 100644
index 7cebfd86..00000000
--- a/lua/lsp/ts-fmt-lint.lua
+++ /dev/null
@@ -1,72 +0,0 @@
--- Example configuations here: https://github.com/mattn/efm-langserver
-local M = {}
-
-M.setup = function()
- vim.cmd "let proj = FindRootDirectory()"
- local root_dir = vim.api.nvim_get_var "proj"
-
- local get_linter_instance = function()
- -- prioritize local instance over global
- local local_instance = root_dir .. "/node_modules/.bin/" .. O.lang.tsserver.linter
- if vim.fn.executable(local_instance) == 1 then
- return local_instance
- end
- return O.lang.tsserver.linter
- end
-
- local tsserver_args = {}
- local formattingSupported = false
-
- if O.lang.tsserver.linter == "eslint" or O.lang.tsserver.linter == "eslint_d" then
- local eslint = {
- lintCommand = get_linter_instance() .. " -f visualstudio --stdin --stdin-filename ${INPUT}",
- lintStdin = true,
- lintFormats = {
- "%f(%l,%c): %tarning %m",
- "%f(%l,%c): %trror %m",
- },
- lintSource = O.lang.tsserver.linter,
- lintIgnoreExitCode = true,
- }
- table.insert(tsserver_args, eslint)
- -- Only eslint_d supports --fix-to-stdout
- if string.find(get_linter_instance(), "eslint_d") then
- formattingSupported = true
- local eslint_fix = {
- formatCommand = get_linter_instance() .. " --fix-to-stdout --stdin --stdin-filename ${INPUT}",
- formatStdin = true,
- }
- table.insert(tsserver_args, eslint_fix)
- end
- end
-
- require("lspconfig").efm.setup {
- -- init_options = {initializationOptions},
- cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
- init_options = { documentFormatting = formattingSupported, codeAction = false },
- root_dir = require("lspconfig").util.root_pattern(".git/", "package.json"),
- filetypes = {
- "vue",
- "javascript",
- "javascriptreact",
- "typescript",
- "typescriptreact",
- "javascript.jsx",
- "typescript.tsx",
- },
- settings = {
- rootMarkers = { ".git/", "package.json" },
- languages = {
- vue = tsserver_args,
- javascript = tsserver_args,
- javascriptreact = tsserver_args,
- ["javascript.jsx"] = tsserver_args,
- typescript = tsserver_args,
- ["typescript.tsx"] = tsserver_args,
- typescriptreact = tsserver_args,
- },
- },
- }
-end
-
-return M
diff --git a/lua/lsp/tsserver-ls.lua b/lua/lsp/tsserver-ls.lua
deleted file mode 100644
index 18e56dae..00000000
--- a/lua/lsp/tsserver-ls.lua
+++ /dev/null
@@ -1,83 +0,0 @@
-vim.cmd "let proj = FindRootDirectory()"
-local root_dir = vim.api.nvim_get_var "proj"
-
--- use the global prettier if you didn't find the local one
-local prettier_instance = root_dir .. "/node_modules/.bin/prettier"
-if vim.fn.executable(prettier_instance) ~= 1 then
- prettier_instance = O.lang.tsserver.formatter.exe
-end
-
-O.formatters.filetype["javascriptreact"] = {
- function()
- local args = { "--stdin-filepath", vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) }
- local extend_args = O.lang.tsserver.formatter.args
-
- if extend_args then
- for i = 1, #extend_args do
- table.insert(args, extend_args[i])
- end
- end
-
- return {
- exe = prettier_instance,
- args = args,
- stdin = true,
- }
- end,
-}
-O.formatters.filetype["javascript"] = O.formatters.filetype["javascriptreact"]
-O.formatters.filetype["typescript"] = O.formatters.filetype["javascriptreact"]
-O.formatters.filetype["typescriptreact"] = O.formatters.filetype["javascriptreact"]
-
-require("formatter.config").set_defaults {
- logging = false,
- filetype = O.formatters.filetype,
-}
-
-if require("lv-utils").check_lsp_client_active "tsserver" then
- return
-end
-
--- npm install -g typescript typescript-language-server
--- require'snippets'.use_suggested_mappings()
--- local capabilities = vim.lsp.protocol.make_client_capabilities()
--- capabilities.textDocument.completion.completionItem.snippetSupport = true;
--- local on_attach_common = function(client)
--- print("LSP Initialized")
--- require'completion'.on_attach(client)
--- require'illuminate'.on_attach(client)
--- end
-
-local on_attach = function(client, bufnr)
- local lsp = require "lsp"
- lsp.common_on_attach(client, bufnr)
- lsp.tsserver_on_attach(client, bufnr)
-end
-
-require("lspconfig").tsserver.setup {
- cmd = {
- DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
- "--stdio",
- },
- filetypes = {
- "javascript",
- "javascriptreact",
- "javascript.jsx",
- "typescript",
- "typescriptreact",
- "typescript.tsx",
- },
- on_attach = on_attach,
- -- This makes sure tsserver is not used for formatting (I prefer prettier)
- settings = { documentFormatting = false },
- handlers = {
- -- ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
- -- virtual_text = O.lang.tsserver.diagnostics.virtual_text,
- -- signs = O.lang.tsserver.diagnostics.signs,
- -- underline = O.lang.tsserver.diagnostics.underline,
- -- update_in_insert = true,
- -- }),
- },
-}
-
-require("lsp.ts-fmt-lint").setup()
diff --git a/lua/lv-user/README.md b/lua/lv-user/README.md
deleted file mode 100644
index 789001a2..00000000
--- a/lua/lv-user/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# User Config
-
-If you have found this directory then you are probably advanced enough to add your own config. All `lua` files you create here will be available in lv-config.
-
-**NOTE** I may update this readme in the future so I recommend not changing anything in this file specifically
diff --git a/lua/lv-utils/init.lua b/lua/lv-utils/init.lua
index 3dff8f2e..d97c7c30 100644
--- a/lua/lv-utils/init.lua
+++ b/lua/lv-utils/init.lua
@@ -56,14 +56,39 @@ function lv_utils.generate_settings()
io.close(file)
end
+-- autoformat
+local toggle_autoformat = function()
+ if lvim.format_on_save then
+ require("lv-utils").define_augroups {
+ autoformat = {
+ {
+ "BufWritePost",
+ "*",
+ ":silent lua vim.lsp.buf.formatting()",
+ },
+ },
+ }
+ end
+
+ if not lvim.format_on_save then
+ vim.cmd [[if exists('#autoformat#BufWritePost')
+ :autocmd! autoformat
+ endif]]
+ end
+end
+
+function lv_utils.toggle_autoformat()
+ toggle_autoformat()
+end
+
function lv_utils.reload_lv_config()
vim.cmd "source ~/.config/lvim/lv-config.lua"
vim.cmd "source ~/.local/share/lunarvim/lvim/lua/plugins.lua"
local plugins = require "plugins"
local plugin_loader = require("plugin-loader").init()
- plugin_loader:load { plugins, O.user_plugins }
+ toggle_autoformat()
+ plugin_loader:load { plugins, lvim.plugins }
vim.cmd "source ~/.local/share/lunarvim/lvim/lua/settings.lua"
- vim.cmd "source ~/.local/share/lunarvim/lvim/lua/core/formatter.lua"
vim.cmd ":PackerCompile"
vim.cmd ":PackerInstall"
-- vim.cmd ":PackerClean"
@@ -163,10 +188,13 @@ lv_utils.define_augroups {
{ "BufWritePost", "lv-config.lua", "lua require('lv-utils').reload_lv_config()" },
-- { "VimLeavePre", "*", "set title set titleold=" },
},
- _solidity = {
+ _filetypechanges = {
{ "BufWinEnter", ".tf", "setlocal filetype=hcl" },
{ "BufRead", "*.tf", "setlocal filetype=hcl" },
{ "BufNewFile", "*.tf", "setlocal filetype=hcl" },
+ { "BufWinEnter", ".zsh", "setlocal filetype=sh" },
+ { "BufRead", "*.zsh", "setlocal filetype=sh" },
+ { "BufNewFile", "*.zsh", "setlocal filetype=sh" },
},
-- _solidity = {
-- {'BufWinEnter', '.sol', 'setlocal filetype=solidity'}, {'BufRead', '*.sol', 'setlocal filetype=solidity'},
@@ -203,7 +231,7 @@ lv_utils.define_augroups {
-- {'InsertEnter', '*', 'if &cursorline | let g:ms_cursorlineoff = 1 | setlocal nocursorline | endif'},
-- {'InsertLeave', '*', 'if exists("g:ms_cursorlineoff") | setlocal cursorline | endif'},
-- },
- _user_autocommands = O.user_autocommands,
+ _user_autocommands = lvim.autocommands,
}
function lv_utils.gsub_args(args)
diff --git a/lua/plugins.lua b/lua/plugins.lua
index 26b75431..7d2356d5 100644
--- a/lua/plugins.lua
+++ b/lua/plugins.lua
@@ -1,17 +1,17 @@
return {
-- Packer can manage itself as an optional plugin
{ "wbthomason/packer.nvim" },
-
- -- TODO: refactor all of this (for now it works, but yes I know it could be wrapped in a simpler function)
{ "neovim/nvim-lspconfig" },
+ { "tamago324/nlsp-settings.nvim" },
+ { "jose-elias-alvarez/null-ls.nvim" },
{
"kabouzeid/nvim-lspinstall",
event = "VimEnter",
config = function()
local lspinstall = require "lspinstall"
lspinstall.setup()
- if O.plugin.lspinstall.on_config_done then
- O.plugin.lspinstall.on_config_done(lspinstall)
+ if lvim.builtin.lspinstall.on_config_done then
+ lvim.builtin.lspinstall.on_config_done(lspinstall)
end
end,
},
@@ -25,8 +25,8 @@ return {
"nvim-telescope/telescope.nvim",
config = function()
require("core.telescope").setup()
- if O.plugin.telescope.on_config_done then
- O.plugin.telescope.on_config_done(require "telescope")
+ if lvim.builtin.telescope.on_config_done then
+ lvim.builtin.telescope.on_config_done(require "telescope")
end
end,
},
@@ -37,8 +37,8 @@ return {
-- event = "InsertEnter",
config = function()
require("core.compe").setup()
- if O.plugin.compe.on_config_done then
- O.plugin.compe.on_config_done(require "compe")
+ if lvim.builtin.compe.on_config_done then
+ lvim.builtin.compe.on_config_done(require "compe")
end
end,
},
@@ -49,8 +49,8 @@ return {
-- event = "InsertEnter",
config = function()
require "core.autopairs"
- if O.plugin.autopairs.on_config_done then
- O.plugin.autopairs.on_config_done(require "nvim-autopairs")
+ if lvim.builtin.autopairs.on_config_done then
+ lvim.builtin.autopairs.on_config_done(require "nvim-autopairs")
end
end,
},
@@ -65,30 +65,8 @@ return {
"nvim-treesitter/nvim-treesitter",
config = function()
require("core.treesitter").setup()
- if O.plugin.treesitter.on_config_done then
- O.plugin.treesitter.on_config_done(require "nvim-treesitter.configs")
- end
- end,
- },
-
- -- Formatter.nvim
- {
- "mhartington/formatter.nvim",
- config = function()
- require "core.formatter"
- if O.plugin.formatter.on_config_done then
- O.plugin.formatter.on_config_done(require "formatter")
- end
- end,
- },
-
- -- Linter
- {
- "mfussenegger/nvim-lint",
- config = function()
- require("core.linter").setup()
- if O.plugin.lint.on_config_done then
- O.plugin.lint.on_config_done(require "lint")
+ if lvim.builtin.treesitter.on_config_done then
+ lvim.builtin.treesitter.on_config_done(require "nvim-treesitter.configs")
end
end,
},
@@ -101,8 +79,8 @@ return {
-- commit = "fd7f60e242205ea9efc9649101c81a07d5f458bb",
config = function()
require("core.nvimtree").setup()
- if O.plugin.nvimtree.on_config_done then
- O.plugin.nvimtree.on_config_done(require "nvim-tree.config")
+ if lvim.builtin.nvimtree.on_config_done then
+ lvim.builtin.nvimtree.on_config_done(require "nvim-tree.config")
end
end,
},
@@ -112,20 +90,20 @@ return {
config = function()
require("core.gitsigns").setup()
- if O.plugin.gitsigns.on_config_done then
- O.plugin.gitsigns.on_config_done(require "gitsigns")
+ if lvim.builtin.gitsigns.on_config_done then
+ lvim.builtin.gitsigns.on_config_done(require "gitsigns")
end
end,
event = "BufRead",
},
- -- whichkey
+ -- Whichkey
{
"folke/which-key.nvim",
config = function()
require("core.which-key").setup()
- if O.plugin.which_key.on_config_done then
- O.plugin.which_key.on_config_done(require "which-key")
+ if lvim.builtin.which_key.on_config_done then
+ lvim.builtin.which_key.on_config_done(require "which-key")
end
end,
event = "BufWinEnter",
@@ -141,8 +119,8 @@ return {
return
end
nvim_comment.setup()
- if O.plugin.comment.on_config_done then
- O.plugin.comment.on_config_done(nvim_comment)
+ if lvim.builtin.comment.on_config_done then
+ lvim.builtin.comment.on_config_done(nvim_comment)
end
end,
},
@@ -152,8 +130,8 @@ return {
"airblade/vim-rooter",
config = function()
vim.g.rooter_silent_chdir = 1
- if O.plugin.rooter.on_config_done then
- O.plugin.rooter.on_config_done()
+ if lvim.builtin.rooter.on_config_done then
+ lvim.builtin.rooter.on_config_done()
end
end,
},
@@ -166,20 +144,20 @@ return {
"glepnir/galaxyline.nvim",
config = function()
require "core.galaxyline"
- if O.plugin.galaxyline.on_config_done then
- O.plugin.galaxyline.on_config_done(require "galaxyline")
+ if lvim.builtin.galaxyline.on_config_done then
+ lvim.builtin.galaxyline.on_config_done(require "galaxyline")
end
end,
event = "BufWinEnter",
- disable = not O.plugin.galaxyline.active,
+ disable = not lvim.builtin.galaxyline.active,
},
{
"romgrk/barbar.nvim",
config = function()
require "core.bufferline"
- if O.plugin.bufferline.on_config_done then
- O.plugin.bufferline.on_config_done()
+ if lvim.builtin.bufferline.on_config_done then
+ lvim.builtin.bufferline.on_config_done()
end
end,
event = "BufWinEnter",
@@ -191,11 +169,11 @@ return {
-- event = "BufWinEnter",
config = function()
require("core.dap").setup()
- if O.plugin.dap.on_config_done then
- O.plugin.dap.on_config_done(require "dap")
+ if lvim.builtin.dap.on_config_done then
+ lvim.builtin.dap.on_config_done(require "dap")
end
end,
- disable = not O.plugin.dap.active,
+ disable = not lvim.builtin.dap.active,
},
-- Debugger management
@@ -203,102 +181,32 @@ return {
"Pocco81/DAPInstall.nvim",
-- event = "BufWinEnter",
-- event = "BufRead",
- disable = not O.plugin.dap.active,
+ disable = not lvim.builtin.dap.active,
},
- -- Builtins, these do not load by default
-
-- Dashboard
{
"ChristianChiarulli/dashboard-nvim",
event = "BufWinEnter",
config = function()
require("core.dashboard").setup()
- if O.plugin.dashboard.on_config_done then
- O.plugin.dashboard.on_config_done(require "dashboard")
+ if lvim.builtin.dashboard.on_config_done then
+ lvim.builtin.dashboard.on_config_done(require "dashboard")
end
end,
- disable = not O.plugin.dashboard.active,
+ disable = not lvim.builtin.dashboard.active,
},
- -- TODO: remove in favor of akinsho/nvim-toggleterm.lua
- -- Floating terminal
- -- {
- -- "numToStr/FTerm.nvim",
- -- event = "BufWinEnter",
- -- config = function()
- -- require("core.floatterm").setup()
- -- end,
- -- disable = not O.plugin.floatterm.active,
- -- },
-
+ -- Terminal
{
"akinsho/nvim-toggleterm.lua",
event = "BufWinEnter",
config = function()
require("core.terminal").setup()
- if O.plugin.terminal.on_config_done then
- O.plugin.terminal.on_config_done(require "toggleterm")
+ if lvim.builtin.terminal.on_config_done then
+ lvim.builtin.terminal.on_config_done(require "toggleterm")
end
end,
- disable = not O.plugin.terminal.active,
- },
-
- -- Zen Mode
- {
- "folke/zen-mode.nvim",
- cmd = "ZenMode",
- event = "BufRead",
- config = function()
- require("core.zen").setup()
- if O.plugin.zen.on_config_done then
- O.plugin.zen.on_config_done(require "zen-mode")
- end
- end,
- disable = not O.plugin.zen.active,
- },
-
- ---------------------------------------------------------------------------------
-
- -- LANGUAGE SPECIFIC GOES HERE
- {
- "lervag/vimtex",
- ft = "tex",
- },
-
- -- Rust tools
- -- TODO: use lazy loading maybe?
- {
- "simrat39/rust-tools.nvim",
- disable = not O.lang.rust.rust_tools.active,
- },
-
- -- Elixir
- { "elixir-editors/vim-elixir", ft = { "elixir", "eelixir", "euphoria3" } },
-
- -- Javascript / Typescript
- {
- "jose-elias-alvarez/nvim-lsp-ts-utils",
- ft = {
- "javascript",
- "javascriptreact",
- "javascript.jsx",
- "typescript",
- "typescriptreact",
- "typescript.tsx",
- },
- },
-
- -- Java
- {
- "mfussenegger/nvim-jdtls",
- -- ft = { "java" },
- disable = not O.lang.java.java_tools.active,
- },
-
- -- Scala
- {
- "scalameta/nvim-metals",
- disable = not O.lang.scala.metals.active,
+ disable = not lvim.builtin.terminal.active,
},
}
diff --git a/lua/settings.lua b/lua/settings.lua
index aa2bdd8d..f1075e1d 100644
--- a/lua/settings.lua
+++ b/lua/settings.lua
@@ -3,18 +3,57 @@
local cmd = vim.cmd
local opt = vim.opt
---- VIM ONLY COMMANDS ---
+local default_options = {
+ backup = false, -- creates a backup file
+ clipboard = "unnamedplus", -- allows neovim to access the system clipboard
+ cmdheight = 2, -- more space in the neovim command line for displaying messages
+ colorcolumn = "99999", -- fixes indentline for now
+ completeopt = { "menuone", "noselect" },
+ conceallevel = 0, -- so that `` is visible in markdown files
+ fileencoding = "utf-8", -- the encoding written to a file
+ foldmethod = "manual", -- folding, set to "expr" for treesitter based foloding
+ foldexpr = "", -- set to "nvim_treesitter#foldexpr()" for treesitter based folding
+ guifont = "monospace:h17", -- the font used in graphical neovim applications
+ hidden = true, -- required to keep multiple buffers and open multiple buffers
+ hlsearch = true, -- highlight all matches on previous search pattern
+ ignorecase = true, -- ignore case in search patterns
+ mouse = "a", -- allow the mouse to be used in neovim
+ pumheight = 10, -- pop up menu height
+ showmode = false, -- we don't need to see things like -- INSERT -- anymore
+ showtabline = 2, -- always show tabs
+ smartcase = true, -- smart case
+ smartindent = true, -- make indenting smarter again
+ splitbelow = true, -- force all horizontal splits to go below current window
+ splitright = true, -- force all vertical splits to go to the right of current window
+ swapfile = false, -- creates a swapfile
+ termguicolors = true, -- set term gui colors (most terminals support this)
+ timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds)
+ title = true, -- set the title of window to the value of the titlestring
+ -- opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
+ undodir = CACHE_PATH .. "/undo", -- set an undo directory
+ undofile = true, -- enable persisten undo
+ updatetime = 300, -- faster completion
+ writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
+ expandtab = true, -- convert tabs to spaces
+ shiftwidth = 2, -- the number of spaces inserted for each indentation
+ tabstop = 2, -- insert 2 spaces for a tab
+ cursorline = true, -- highlight the current line
+ number = true, -- set numbered lines
+ relativenumber = false, -- set relative numbered lines
+ numberwidth = 4, -- set number column width to 2 {default 4}
+ signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time
+ wrap = false, -- display lines as one long line
+ spell = false,
+ spelllang = "en",
+ scrolloff = 8, -- is one of my fav
+ sidescrolloff = 8,
+} --- VIM ONLY COMMANDS ---cmd "filetype plugin on"cmd('let &titleold="' .. TERMINAL .. '"')cmd "set inccommand=split"cmd "set iskeyword+=-"
-cmd "filetype plugin on"
-cmd('let &titleold="' .. TERMINAL .. '"')
-cmd "set inccommand=split"
-cmd "set iskeyword+=-"
-
-if O.line_wrap_cursor_movement then
+if lvim.line_wrap_cursor_movement then
cmd "set whichwrap+=<,>,[,],h,l"
end
-if O.transparent_window then
+if lvim.transparent_window then
cmd "au ColorScheme * hi Normal ctermbg=none guibg=none"
cmd "au ColorScheme * hi SignColumn ctermbg=none guibg=none"
cmd "au ColorScheme * hi NormalNC ctermbg=none guibg=none"
@@ -28,10 +67,6 @@ end
opt.shortmess:append "c"
-for _, plugin in pairs(O.disabled_built_ins) do
- vim.g["loaded_" .. plugin] = 1
-end
-
-for k, v in pairs(O.default_options) do
+for k, v in pairs(default_options) do
vim.opt[k] = v
end
diff --git a/utils/installer/install.sh b/utils/installer/install.sh
index 9ec19bd5..3d7fcc33 100755
--- a/utils/installer/install.sh
+++ b/utils/installer/install.sh
@@ -124,8 +124,13 @@ cloneconfig() {
+PackerSync
printf "\nCompile Complete\n"
- rm "$HOME/.config/lvim/lv-config.lua"
- cp "$HOME/.local/share/lunarvim/lvim/utils/installer/lv-config.example.lua" "$HOME/.config/lvim/lv-config.lua"
+
+ if [ -e "$HOME/.local/share/lunarvim/lvim/init.lua" ]; then
+ echo 'lv-config already present'
+ else
+ cp "$HOME/.local/share/lunarvim/lvim/utils/installer/lv-config.example.lua" "$HOME/.config/lvim/lv-config.lua"
+ fi
+
}
asktoinstallnode() {
diff --git a/utils/installer/lv-config.example-no-ts.lua b/utils/installer/lv-config.example-no-ts.lua
index 4016582c..b1e3bc8a 100644
--- a/utils/installer/lv-config.example-no-ts.lua
+++ b/utils/installer/lv-config.example-no-ts.lua
@@ -10,16 +10,14 @@ an executable
-- general
-O.format_on_save = true
-O.lint_on_save = true
-O.completion.autocomplete = true
-O.colorscheme = "spacegray"
-O.default_options.wrap = true
-O.default_options.timeoutlen = 100
+lvim.format_on_save = true
+lvim.lint_on_save = true
+lvim.completion.autocomplete = true
+lvim.colorscheme = "spacegray"
-- keymappings
-O.keys.leader_key = "space"
+lvim.leader = "space"
-- overwrite the key-mappings provided by LunarVim for any mode, or leave it empty to keep them
--- O.keys.normal_mode = {
+-- lvim.keys.normal_mode = {
-- Page down/up
-- {'[d', '<PageUp>'},
-- {']d', '<PageDown>'},
@@ -38,22 +36,20 @@ O.keys.leader_key = "space"
-- TODO: User Config for predefined plugins
-- After changing plugin config exit and reopen LunarVim, Run :PackerInstall :PackerCompile
-O.plugin.dashboard.active = true
-O.plugin.terminal.active = true
-O.plugin.zen.active = false
-O.plugin.zen.window.height = 0.90
-O.plugin.nvimtree.side = "left"
-O.plugin.nvimtree.show_icons.git = 0
+lvim.builtin.dashboard.active = true
+lvim.builtin.terminal.active = true
+lvim.builtin.nvimtree.side = "left"
+lvim.builtin.nvimtree.show_icons.git = 0
-- if you don't want all the parsers change this to a table of the ones you want
-O.treesitter.ensure_installed = {}
-O.treesitter.ignore_install = { "haskell" }
-O.treesitter.highlight.enabled = true
+lvim.treesitter.ensure_installed = {}
+lvim.treesitter.ignore_install = { "haskell" }
+lvim.treesitter.highlight.enabled = true
-- generic LSP settings
-- you can set a custom on_attach function that will be used for all the language servers
-- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
--- O.lsp.on_attach_callback = function(client, bufnr)
+-- lvim.lsp.on_attach_callback = function(client, bufnr)
-- local function buf_set_option(...)
-- vim.api.nvim_buf_set_option(bufnr, ...)
-- end
@@ -61,29 +57,8 @@ O.treesitter.highlight.enabled = true
-- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
-- end
--- python
-O.lang.python.diagnostics.virtual_text = true
-O.lang.python.analysis.use_library_code_types = true
--- To change default formatter from yapf to black
--- O.lang.python.formatter.exe = "black"
--- O.lang.python.formatter.args = {"-"}
--- To change enabled linters
--- https://github.com/mfussenegger/nvim-lint#available-linters
--- O.lang.python.linters = { "flake8", "pylint", "mypy", ... }
-
--- go
--- To change default formatter from gofmt to goimports
--- O.lang.formatter.go.exe = "goimports"
-
--- javascript
-O.lang.tsserver.linter = nil
-
--- latex
--- O.lang.latex.auto_save = false
--- O.lang.latex.ignore_errors = { }
-
-- Additional Plugins
--- O.user_plugins = {
+-- lvim.plugins = {
-- {"folke/tokyonight.nvim"}, {
-- "ray-x/lsp_signature.nvim",
-- config = function() require"lsp_signature".on_attach() end,
@@ -92,13 +67,6 @@ O.lang.tsserver.linter = nil
-- }
-- Autocommands (https://neovim.io/doc/user/autocmd.html)
--- O.user_autocommands = {{ "BufWinEnter", "*", "echo \"hi again\""}}
+-- lvim.autocommands = {{ "BufWinEnter", "*", "echo \"hi again\""}}
-- Additional Leader bindings for WhichKey
--- O.user_which_key = {
--- A = {
--- name = "+Custom Leader Keys",
--- a = { "<cmd>echo 'first custom command'<cr>", "Description for a" },
--- b = { "<cmd>echo 'second custom command'<cr>", "Description for b" },
--- },
--- }
diff --git a/utils/installer/lv-config.example.lua b/utils/installer/lv-config.example.lua
index 5754b160..027b1b86 100644
--- a/utils/installer/lv-config.example.lua
+++ b/utils/installer/lv-config.example.lua
@@ -10,16 +10,14 @@ an executable
-- general
-O.format_on_save = true
-O.lint_on_save = true
-O.completion.autocomplete = true
-O.colorscheme = "spacegray"
-O.default_options.wrap = true
-O.default_options.timeoutlen = 100
+lvim.format_on_save = true
+lvim.lint_on_save = true
+lvim.completion.autocomplete = true
+lvim.colorscheme = "spacegray"
-- keymappings
-O.keys.leader_key = "space"
+lvim.leader = "space"
-- overwrite the key-mappings provided by LunarVim for any mode, or leave it empty to keep them
--- O.keys.normal_mode = {
+-- lvim.keys.normal_mode = {
-- Page down/up
-- {'[d', '<PageUp>'},
-- {']d', '<PageDown>'},
@@ -38,22 +36,20 @@ O.keys.leader_key = "space"
-- TODO: User Config for predefined plugins
-- After changing plugin config exit and reopen LunarVim, Run :PackerInstall :PackerCompile
-O.plugin.dashboard.active = true
-O.plugin.terminal.active = true
-O.plugin.zen.active = false
-O.plugin.zen.window.height = 0.90
-O.plugin.nvimtree.side = "left"
-O.plugin.nvimtree.show_icons.git = 0
+lvim.builtin.dashboard.active = true
+lvim.builtin.terminal.active = true
+lvim.builtin.nvimtree.side = "left"
+lvim.builtin.nvimtree.show_icons.git = 0
-- if you don't want all the parsers change this to a table of the ones you want
-O.treesitter.ensure_installed = "maintained"
-O.treesitter.ignore_install = { "haskell" }
-O.treesitter.highlight.enabled = true
+lvim.treesitter.ensure_installed = "maintained"
+lvim.treesitter.ignore_install = { "haskell" }
+lvim.treesitter.highlight.enabled = true
-- generic LSP settings
-- you can set a custom on_attach function that will be used for all the language servers
-- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
--- O.lsp.on_attach_callback = function(client, bufnr)
+-- lvim.lsp.on_attach_callback = function(client, bufnr)
-- local function buf_set_option(...)
-- vim.api.nvim_buf_set_option(bufnr, ...)
-- end
@@ -62,54 +58,9 @@ O.treesitter.highlight.enabled = true
-- end
-- python
-O.lang.python.diagnostics.virtual_text = true
-O.lang.python.analysis.use_library_code_types = true
--- To change default formatter from yapf to black
--- O.lang.python.formatter.exe = "black"
--- O.lang.python.formatter.args = {"-"}
--- To change enabled linters
--- https://github.com/mfussenegger/nvim-lint#available-linters
--- O.lang.python.linters = { "flake8", "pylint", "mypy", ... }
-
--- go
--- To change default formatter from gofmt to goimports
--- O.lang.formatter.go.exe = "goimports"
-
--- javascript
-O.lang.tsserver.linter = nil
-
--- rust
--- O.lang.rust.rust_tools = true
--- O.lang.rust.formatter = {
--- exe = "rustfmt",
--- args = {"--emit=stdout", "--edition=2018"},
--- }
-
--- scala
--- O.lang.scala.metals.active = true
--- O.lang.scala.metals.server_version = "0.10.5",
-
---LaTeX
--- Options: https://github.com/latex-lsp/texlab/blob/master/docs/options.md
-O.lang.latex.active = true
-O.lang.latex.aux_directory = "."
-O.lang.latex.bibtex_formatter = "texlab"
-O.lang.latex.build.args = { "-pdf", "-interaction=nonstopmode", "-synctex=1", "%f" }
-O.lang.latex.build.executable = "latexmk"
-O.lang.latex.build.forward_search_after = false
-O.lang.latex.build.on_save = false
-O.lang.latex.chktex.on_edit = false
-O.lang.latex.chktex.on_open_and_save = false
-O.lang.latex.diagnostics_delay = 300
-O.lang.latex.formatter_line_length = 80
-O.lang.latex.forward_search.executable = "zathura"
-O.lang.latex.latex_formatter = "latexindent"
-O.lang.latex.latexindent.modify_line_breaks = false
--- O.lang.latex.auto_save = false
--- O.lang.latex.ignore_errors = { }
-- Additional Plugins
--- O.user_plugins = {
+-- lvim.plugins = {
-- {"folke/tokyonight.nvim"}, {
-- "ray-x/lsp_signature.nvim",
-- config = function() require"lsp_signature".on_attach() end,
@@ -118,13 +69,6 @@ O.lang.latex.latexindent.modify_line_breaks = false
-- }
-- Autocommands (https://neovim.io/doc/user/autocmd.html)
--- O.user_autocommands = {{ "BufWinEnter", "*", "echo \"hi again\""}}
+-- lvim.autocommands = {{ "BufWinEnter", "*", "echo \"hi again\""}}
-- Additional Leader bindings for WhichKey
--- O.user_which_key = {
--- A = {
--- name = "+Custom Leader Keys",
--- a = { "<cmd>echo 'first custom command'<cr>", "Description for a" },
--- b = { "<cmd>echo 'second custom command'<cr>", "Description for b" },
--- },
--- }
diff --git a/utils/installer/uninstall.sh b/utils/installer/uninstall.sh
new file mode 100755
index 00000000..faa76c37
--- /dev/null
+++ b/utils/installer/uninstall.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+rm -rf .local/share/lunarvim
+sudo rm /usr/local/bin/lvim
diff --git a/lua/lsp/julia/Manifest.toml b/utils/julia/Manifest.toml
index c6c12950..c6c12950 100644
--- a/lua/lsp/julia/Manifest.toml
+++ b/utils/julia/Manifest.toml
diff --git a/lua/lsp/julia/Project.toml b/utils/julia/Project.toml
index 50cd7702..50cd7702 100644
--- a/lua/lsp/julia/Project.toml
+++ b/utils/julia/Project.toml
diff --git a/lua/lsp/julia/run.jl b/utils/julia/run.jl
index 4662e1b2..4662e1b2 100644
--- a/lua/lsp/julia/run.jl
+++ b/utils/julia/run.jl