LunarVim/lua/default-config.lua

923 lines
20 KiB
Lua
Raw Normal View History

2021-07-20 04:50:07 +02:00
CONFIG_PATH = os.getenv "HOME" .. "/.local/share/lunarvim/lvim"
2021-07-05 03:14:01 +02:00
DATA_PATH = vim.fn.stdpath "data"
CACHE_PATH = vim.fn.stdpath "cache"
TERMINAL = vim.fn.expand "$TERMINAL"
2021-07-09 07:37:03 +02:00
USER = vim.fn.expand "$USER"
2021-06-28 06:36:29 +02:00
lvim = {
leader = "space",
2021-07-09 08:09:26 +02:00
colorscheme = "spacegray",
line_wrap_cursor_movement = true,
2021-07-05 03:14:01 +02:00
transparent_window = false,
2021-07-10 08:38:25 +02:00
format_on_save = true,
2021-07-20 04:50:07 +02:00
vsnip_dir = os.getenv "HOME" .. "/.config/snippets",
database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },
keys = {},
2021-06-28 06:36:29 +02:00
-- TODO why do we need this?
builtin = {
lspinstall = {},
telescope = {},
compe = {},
autopairs = {},
treesitter = {},
nvimtree = {},
gitsigns = {},
which_key = {},
comment = {},
rooter = {},
galaxyline = {},
bufferline = {},
dap = {},
dashboard = {},
terminal = {},
2021-07-10 09:19:32 +02:00
},
2021-07-16 02:54:25 +02:00
lsp = {
diagnostics = {
virtual_text = {
prefix = "",
spacing = 0,
},
signs = true,
underline = true,
},
override = {},
2021-07-17 05:22:02 +02:00
document_highlight = true,
popup_border = "single",
default_keybinds = true,
on_attach_callback = nil,
2021-07-16 02:54:25 +02:00
},
plugins = {
-- use lv-config.lua for this not put here
},
2021-07-25 13:57:48 +02:00
autocommands = {},
}
2021-07-13 03:11:43 +02:00
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
2021-07-10 08:38:25 +02:00
-- 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,
},
},
},
2021-07-25 19:58:34 +02:00
cs = {
2021-07-25 19:48:36 +02:00
formatter = {
exe = "",
args = {},
},
2021-07-25 19:58:34 +02:00
linters = {},
lsp = {
provider = "omnisharp",
setup = {
cmd = {
DATA_PATH .. "/lspinstall/csharp/omnisharp/run",
"--stdio",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
cmake = {
formatter = {
2021-07-26 00:06:11 +02:00
exe = "clang_format",
args = {},
},
2021-07-26 00:06:11 +02:00
linters = {},
lsp = {
provider = "cmake",
setup = {
cmd = {
DATA_PATH .. "/lspinstall/cmake/venv/bin/cmake-language-server",
"--stdio",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
clojure = {
2021-07-26 00:06:11 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
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 = {},
},
2021-07-26 00:06:11 +02:00
linters = {},
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 = {
2021-07-26 00:06:11 +02:00
formatter = {
exe = "dart",
args = { "format" },
stdin = true,
},
linters = {},
lsp = {
provider = "dartls",
setup = {
cmd = {
"dart",
"/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
"--lsp",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
docker = {
2021-07-26 00:06:11 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
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,
},
2021-07-26 00:06:11 +02:00
linters = {},
lsp = {
provider = "elixirls",
setup = {
cmd = {
DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
elm = {
2021-07-25 23:58:50 +02:00
formatter = {
exe = "",
args = {},
stdin = true,
},
linters = {},
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 = {
2021-07-26 00:06:11 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
lsp = {
provider = "erlangls",
setup = {
cmd = {
"erlang_ls",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
emmet = { active = false },
2021-07-26 20:32:29 +02:00
fish = {
formatter = {
exe = "",
args = {},
},
linters = {},
lsp = {
provider = "",
setup = {
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
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 = {
2021-07-26 00:06:11 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
lsp = {
provider = "graphql",
setup = {
cmd = {
"graphql-lsp",
"server",
"-m",
"stream",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
html = {
2021-07-26 00:06:11 +02:00
formatter = {
2021-07-26 05:28:47 +02:00
exe = "prettier",
2021-07-26 00:06:11 +02:00
args = {},
},
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) },
},
2021-07-26 00:06:11 +02:00
linters = {},
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,
},
2021-07-26 00:06:11 +02:00
linters = {},
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 = {
2021-07-26 00:06:11 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
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 = {
2021-07-26 16:09:35 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
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"
2021-06-28 06:36:29 +02:00
local root_files = {
"settings.gradle", -- Gradle (multi-project)
"settings.gradle.kts", -- Gradle (multi-project)
"build.xml", -- Ant
"pom.xml", -- Maven
}
2021-07-07 03:42:26 +02:00
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,
},
},
2021-07-05 03:14:01 +02:00
},
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
2021-07-26 19:25:13 +02:00
globals = { "vim", "lvim" },
},
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,
},
},
},
},
},
2021-07-05 20:49:07 +02:00
},
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",
},
},
},
},
},
2021-07-13 06:48:37 +02:00
},
2021-07-27 18:27:56 +02:00
puppet = {
formatter = {
exe = "",
args = {},
},
linters = {},
lsp = {
provider = "puppet",
setup = {
on_attach = require("lsp").common_on_attach,
capabilities = require("lsp").common_capabilities(),
},
},
},
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(),
},
},
},
javascriptreact = {
-- @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 = {
2021-07-26 16:09:35 +02:00
exe = "",
args = {},
},
2021-07-26 16:09:35 +02:00
linters = {},
lsp = {
provider = "r_language_server",
setup = {
cmd = {
"R",
"--slave",
"-e",
"languageserver::run()",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
ruby = {
formatter = {
exe = "rufo",
2021-07-26 16:09:35 +02:00
args = {},
},
linters = { "ruby" },
lsp = {
provider = "solargraph",
setup = {
cmd = {
DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
"stdio",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
rust = {
formatter = {
2021-07-26 16:09:35 +02:00
exe = "",
args = {},
},
2021-07-26 16:09:35 +02:00
linters = {},
lsp = {
provider = "rust_analyzer",
setup = {
cmd = {
DATA_PATH .. "/lspinstall/rust/rust-analyzer",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
2021-07-26 05:51:47 +02:00
scala = {
formatter = {
exe = "",
args = {},
},
linters = { "" },
lsp = {
provider = "metals",
setup = {
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 = {
2021-07-26 06:01:04 +02:00
formatter = {
exe = "",
args = {},
},
linters = {},
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 = {},
},
2021-07-26 16:03:35 +02:00
linters = {},
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 = {
2021-07-26 16:05:39 +02:00
exe = "",
args = {},
stdin = false,
},
2021-07-26 16:03:35 +02:00
linters = {},
lsp = {
provider = "terraformls",
setup = {
cmd = {
DATA_PATH .. "/lspinstall/terraform/terraform-ls",
"serve",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
2021-07-26 19:14:06 +02:00
tex = {
formatter = {
exe = "latexindent",
args = {},
stdin = false,
},
2021-07-27 00:11:34 +02:00
linters = { "chktex" },
2021-07-26 19:14:06 +02:00
lsp = {
provider = "texlab",
setup = {
cmd = { DATA_PATH .. "/lspinstall/latex/texlab" },
on_attach = common_on_attach,
capabilities = common_capabilities,
},
},
},
typescript = {
-- @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(),
},
},
},
typescriptreact = {
-- @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(),
},
},
},
vim = {
2021-07-25 08:09:12 +02:00
formatter = {
exe = "",
args = {},
},
linters = { "" },
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",
2021-07-26 16:05:39 +02:00
args = {},
},
2021-07-26 16:05:39 +02:00
linters = {},
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",
2021-07-26 16:05:39 +02:00
args = {},
},
2021-07-26 16:05:39 +02:00
linters = {},
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 = {
2021-07-26 16:05:39 +02:00
exe = "",
args = {},
stdin = false,
},
2021-07-26 16:05:39 +02:00
linters = {},
lsp = {
provider = "zls",
setup = {
cmd = {
"zls",
},
on_attach = common_on_attach,
capabilities = common_capabilities,
},
2021-07-05 03:14:01 +02:00
},
},
2021-07-06 04:57:00 +02:00
}
require("core.which-key").config()
2021-07-13 03:59:16 +02:00
require "core.status_colors"
2021-07-13 01:30:07 +02:00
require("core.gitsigns").config()
2021-07-13 03:11:43 +02:00
require("core.compe").config()
require("core.dashboard").config()
require("core.dap").config()
2021-07-15 05:15:12 +02:00
require("core.terminal").config()
2021-07-13 03:11:43 +02:00
require("core.telescope").config()
require("core.treesitter").config()
require("core.nvimtree").config()