summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/config
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/config')
-rw-r--r--.config/nvim/lua/config/defaults.lua1168
-rw-r--r--.config/nvim/lua/config/init.lua36
-rw-r--r--.config/nvim/lua/config/settings.lua76
3 files changed, 1280 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/defaults.lua b/.config/nvim/lua/config/defaults.lua
new file mode 100644
index 0000000..82c08a4
--- /dev/null
+++ b/.config/nvim/lua/config/defaults.lua
@@ -0,0 +1,1168 @@
+CONFIG_PATH = vim.fn.stdpath "config"
+DATA_PATH = vim.fn.stdpath "data"
+CACHE_PATH = vim.fn.stdpath "cache"
+TERMINAL = vim.fn.expand "$TERMINAL"
+USER = vim.fn.expand "$USER"
+vim.cmd [[ set spellfile=~/.config/nvim/spell/en.utf-8.add ]]
+
+options = {
+ leader_key = "space",
+ colorscheme = "dark",
+ line_wrap_cursor_movement = true,
+ transparent_window = false,
+ format_on_save = true,
+ vsnip_dir = os.getenv "HOME" .. "/.config/snippets",
+ database = { save_location = "~/.config/nvim_db", auto_execute = 1 },
+ keys = {},
+
+ -- TODO: might remove later
+ builtin = {},
+
+ log = {
+ ---@usage can be { "trace", "debug", "info", "warn", "error", "fatal" },
+ level = "warn",
+ viewer = {
+ ---@usage this will fallback on "less +F" if not found
+ cmd = "lnav",
+ layout_config = {
+ ---@usage direction = 'vertical' | 'horizontal' | 'window' | 'float',
+ direction = "horizontal",
+ open_mapping = "",
+ size = 40,
+ float_opts = {},
+ },
+ },
+ },
+
+ lsp = {
+ completion = {
+ item_kind = {
+ "  (text) ",
+ "  (method)",
+ "  (function)",
+ "  (constructor)",
+ " ﴲ (field)",
+ "[] (variable)",
+ "  (class)",
+ " ﰮ (interface)",
+ "  (module)",
+ " 襁 (property)",
+ "  (unit)",
+ "  (value)",
+ " 練 (enum)",
+ "  (keyword)",
+ "  (snippet)",
+ "  (color)",
+ "  (file)",
+ "  (reference)",
+ "  (folder)",
+ "  (enummember)",
+ " ﲀ (constant)",
+ " ﳤ (struct)",
+ "  (event)",
+ "  (operator)",
+ "  (typeparameter)",
+ },
+ },
+ diagnostics = {
+ signs = {
+ active = true,
+ values = {
+ { name = "LspDiagnosticsSignError", text = "" },
+ { name = "LspDiagnosticsSignWarning", text = "" },
+ { name = "LspDiagnosticsSignHint", text = "" },
+ { name = "LspDiagnosticsSignInformation", text = "" },
+ },
+ },
+ virtual_text = {
+ prefix = "",
+ spacing = 0,
+ },
+ underline = true,
+ severity_sort = true,
+ },
+ override = {},
+ document_highlight = true,
+ popup_border = "single",
+ on_attach_callback = nil,
+ on_init_callback = nil,
+ null_ls = {
+ setup = {},
+ },
+ },
+
+ plugins = {
+ -- use config.lua for this not put here
+ },
+
+ autocommands = {},
+}
+
+local schemas = nil
+local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
+if status_ok then
+ schemas = jsonls_settings.get_default_schemas()
+end
+
+-- TODO move all of this into lang specific files, only require when using
+options.lang = {
+ asm = {
+ formatters = {
+ -- {
+ -- exe = "asmfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "",
+ setup = {},
+ },
+ },
+ beancount = {
+ formatters = {
+ -- {
+ -- exe = "bean_format",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "beancount",
+ setup = {
+ cmd = { "beancount-langserver" },
+ },
+ },
+ },
+ c = {
+ formatters = {
+ -- {
+ -- exe = "clang_format",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "uncrustify",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ 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-*",
+ },
+ },
+ },
+ },
+ cpp = {
+ formatters = {
+ -- {
+ -- exe = "clang_format",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "uncrustify",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ 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-*",
+ },
+ },
+ },
+ },
+ crystal = {
+ formatters = {
+ -- {
+ -- exe = "crystal_format",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "crystalline",
+ setup = {
+ cmd = { "crystalline" },
+ },
+ },
+ },
+ cs = {
+ formatters = {
+ -- {
+ -- exe = "clang_format ",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "uncrustify",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "omnisharp",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/csharp/omnisharp/run",
+ "--languageserver",
+ "--hostPID",
+ tostring(vim.fn.getpid()),
+ },
+ },
+ },
+ },
+ cmake = {
+ formatters = {
+ -- {
+ -- exe = "cmake_format",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "cmake",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/cmake/venv/bin/cmake-language-server",
+ },
+ },
+ },
+ },
+ clojure = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "clojure_lsp",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/clojure/clojure-lsp",
+ },
+ },
+ },
+ },
+ css = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "cssls",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH
+ .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
+ "--stdio",
+ },
+ },
+ },
+ },
+ less = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "cssls",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH
+ .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
+ "--stdio",
+ },
+ },
+ },
+ },
+ d = {
+ formatters = {
+ -- {
+ -- exe = "dfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "serve_d",
+ setup = {
+ cmd = { "serve-d" },
+ },
+ },
+ },
+ dart = {
+ formatters = {
+ -- {
+ -- exe = "dart_format",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "dartls",
+ setup = {
+ cmd = {
+ "dart",
+ "/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
+ "--lsp",
+ },
+ },
+ },
+ },
+ docker = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "dockerls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/dockerfile/node_modules/.bin/docker-langserver",
+ "--stdio",
+ },
+ },
+ },
+ },
+ elixir = {
+ formatters = {
+ -- {
+ -- exe = "mix",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "elixirls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",
+ },
+ },
+ },
+ },
+ elm = {
+ formatters = {
+ -- {
+ -- exe = "elm_format",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "elmls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-language-server",
+ },
+ -- 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 = {
+ formatters = {
+ -- {
+ -- exe = "erlfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "erlangls",
+ setup = {
+ cmd = {
+ "erlang_ls",
+ },
+ },
+ },
+ },
+ emmet = { active = false },
+ fish = {
+ formatters = {
+ -- {
+ -- exe = "fish_indent",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "",
+ setup = {},
+ },
+ },
+ fortran = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "fortls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/fortran/venv/bin/fortls",
+ },
+ },
+ },
+ },
+ go = {
+ formatters = {
+ -- {
+ -- exe = "gofmt",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "goimports",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "gofumpt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "gopls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/go/gopls",
+ },
+ },
+ },
+ },
+ graphql = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "graphql",
+ setup = {
+ cmd = {
+ "graphql-lsp",
+ "server",
+ "-m",
+ "stream",
+ },
+ },
+ },
+ },
+ haskell = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "hls",
+ setup = {
+ cmd = { DATA_PATH .. "/lspinstall/haskell/hls" },
+ },
+ },
+ },
+ html = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "html",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH
+ .. "/lspinstall/html/vscode-html/html-language-features/server/dist/node/htmlServerMain.js",
+ "--stdio",
+ },
+ },
+ },
+ },
+ java = {
+ formatters = {
+ -- {
+ -- exe = "clang_format",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "uncrustify",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "jdtls",
+ setup = {
+ cmd = { DATA_PATH .. "/lspinstall/java/jdtls.sh" },
+ },
+ },
+ },
+ json = {
+ formatters = {
+ -- {
+ -- exe = "json_tool",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "jsonls",
+ setup = {
+ cmd = {
+ "node",
+ DATA_PATH
+ .. "/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js",
+ "--stdio",
+ },
+ 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 = {
+ formatters = {},
+ 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",
+ },
+ },
+ },
+ },
+ kotlin = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "kotlin_language_server",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server",
+ },
+ root_dir = function(fname)
+ local util = require "lspconfig/util"
+
+ 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
+ }
+ return util.root_pattern(unpack(root_files))(fname)
+ or util.root_pattern(unpack(fallback_root_files))(fname)
+ end,
+ },
+ },
+ },
+ lua = {
+ formatters = {
+ -- {
+ -- exe = "stylua",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "lua_format",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "sumneko_lua",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/lua/sumneko-lua-language-server",
+ "-E",
+ DATA_PATH .. "/lspinstall/lua/main.lua",
+ },
+ settings = {
+ Lua = {
+ runtime = {
+ -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
+ version = "LuaJIT",
+ -- Setup your lua path
+ path = vim.split(package.path, ";"),
+ },
+ diagnostics = {
+ -- Get the language server to recognize the `vim` global
+ globals = { "vim", "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,
+ },
+ },
+ },
+ },
+ },
+ },
+ nginx = {
+ formatters = {
+ -- {
+ -- exe = "nginx_beautifier",
+ -- args = {
+ -- provider = "",
+ -- setup = {},
+ -- },
+ -- },
+ },
+ linters = {},
+ lsp = {},
+ },
+ perl = {
+ formatters = {
+ -- {
+ -- exe = "perltidy",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "",
+ setup = {},
+ },
+ },
+ sql = {
+ formatters = {
+ -- {
+ -- exe = "sqlformat",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "sqls",
+ setup = {
+ cmd = { "sqls" },
+ },
+ },
+ },
+ php = {
+ formatters = {
+ -- {
+ -- exe = "phpcbf",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "intelephense",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense",
+ "--stdio",
+ },
+ filetypes = { "php", "phtml" },
+ settings = {
+ intelephense = {
+ environment = {
+ phpVersion = "7.4",
+ },
+ },
+ },
+ },
+ },
+ },
+ puppet = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "puppet",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/puppet/puppet-editor-services/puppet-languageserver",
+ "--stdio",
+ },
+ },
+ },
+ },
+ javascript = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettier_d_slim",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ -- @usage can be {"eslint"} or {"eslint_d"}
+ linters = {},
+ lsp = {
+ provider = "tsserver",
+ setup = {
+ cmd = {
+ -- TODO:
+ DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
+ "--stdio",
+ },
+ },
+ },
+ },
+ javascriptreact = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettier_d_slim",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "tsserver",
+ setup = {
+ cmd = {
+ -- TODO:
+ DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
+ "--stdio",
+ },
+ },
+ },
+ },
+ python = {
+ formatters = {
+ -- {
+ -- exe = "yapf",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "isort",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "pyright",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
+ "--stdio",
+ },
+ },
+ },
+ },
+ -- 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 = {
+ formatters = {
+ -- {
+ -- exe = "format_r",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "r_language_server",
+ setup = {
+ cmd = {
+ "R",
+ "--slave",
+ "-e",
+ "languageserver::run()",
+ },
+ },
+ },
+ },
+ ruby = {
+ formatters = {
+ -- {
+ -- exe = "rufo",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "solargraph",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
+ "stdio",
+ },
+ filetypes = { "ruby" },
+ init_options = {
+ formatting = true,
+ },
+ root_dir = function(fname)
+ local util = require("lspconfig").util
+ return util.root_pattern("Gemfile", ".git")(fname)
+ end,
+ settings = {
+ solargraph = {
+ diagnostics = true,
+ },
+ },
+ },
+ },
+ },
+ rust = {
+ formatters = {
+ -- {
+ -- exe = "rustfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "rust_analyzer",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/rust/rust-analyzer",
+ },
+ },
+ },
+ },
+ scala = {
+ formatters = {
+ -- {
+ -- exe = "scalafmt",
+ -- args = {},
+ -- },
+ },
+ linters = { "" },
+ lsp = {
+ provider = "metals",
+ setup = {},
+ },
+ },
+ sh = {
+ formatters = {
+ -- {
+ -- exe = "shfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "bashls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
+ "start",
+ },
+ },
+ },
+ },
+ svelte = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "svelte",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver",
+ "--stdio",
+ },
+ },
+ },
+ },
+ swift = {
+ formatters = {
+ -- {
+ -- exe = "swiftformat",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "sourcekit",
+ setup = {
+ cmd = {
+ "xcrun",
+ "sourcekit-lsp",
+ },
+ },
+ },
+ },
+ tailwindcss = {
+ active = false,
+ filetypes = {
+ "html",
+ "css",
+ "scss",
+ "javascript",
+ "javascriptreact",
+ "typescript",
+ "typescriptreact",
+ },
+ },
+ terraform = {
+ formatters = {
+ -- {
+ -- exe = "terraform_fmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "terraformls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/terraform/terraform-ls",
+ "serve",
+ },
+ },
+ },
+ },
+ tex = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "texlab",
+ setup = {
+ cmd = { DATA_PATH .. "/lspinstall/latex/texlab" },
+ },
+ },
+ },
+ typescript = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettier_d_slim",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "tsserver",
+ setup = {
+ cmd = {
+ -- TODO:
+ DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
+ "--stdio",
+ },
+ },
+ },
+ },
+ typescriptreact = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettier_d_slim",
+ -- args = {},
+ -- },
+ },
+ -- @usage can be {"eslint"} or {"eslint_d"}
+ linters = {},
+ lsp = {
+ provider = "tsserver",
+ setup = {
+ cmd = {
+ -- TODO:
+ DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
+ "--stdio",
+ },
+ },
+ },
+ },
+ vim = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "vimls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server",
+ "--stdio",
+ },
+ },
+ },
+ },
+ vue = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettier_d_slim",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "vuels",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",
+ },
+ },
+ },
+ },
+ yaml = {
+ formatters = {
+ -- {
+ -- exe = "prettier",
+ -- args = {},
+ -- },
+ -- {
+ -- exe = "prettierd",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "yamlls",
+ setup = {
+ cmd = {
+ DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server",
+ "--stdio",
+ },
+ },
+ },
+ },
+ zig = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "zls",
+ setup = {
+ cmd = {
+ "zls",
+ },
+ },
+ },
+ },
+ gdscript = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "gdscript",
+ setup = {
+ cmd = {
+ "nc",
+ "localhost",
+ "6008",
+ },
+ },
+ },
+ },
+ ps1 = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "powershell_es",
+ setup = {
+ bundle_path = "",
+ },
+ },
+ },
+ nix = {
+ formatters = {
+ -- {
+ -- exe = "nixfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "rnix",
+ setup = {
+ cmd = { "rnix-lsp" },
+ filetypes = { "nix" },
+ init_options = {},
+ settings = {},
+ root_dir = function(fname)
+ local util = require "lspconfig/util"
+ return util.root_pattern ".git"(fname) or vim.fn.getcwd()
+ end,
+ },
+ },
+ },
+}
diff --git a/.config/nvim/lua/config/init.lua b/.config/nvim/lua/config/init.lua
new file mode 100644
index 0000000..e6d6389
--- /dev/null
+++ b/.config/nvim/lua/config/init.lua
@@ -0,0 +1,36 @@
+local M = {
+ path = string.format("%s/.config/nvim/config.lua", os.getenv "HOME"),
+}
+
+--- Initialize nvim default configuration
+-- Define nvim global variable
+function M:init()
+ local utils = require "utils"
+
+ require "config.defaults"
+
+ local builtins = require "core.builtins"
+ builtins.config(self)
+
+ local settings = require "config.settings"
+ settings.load_options()
+end
+
+--- Override the configuration with a user provided one
+-- @param config_path The path to the configuration overrides
+function M:load(config_path)
+ config_path = config_path or self.path
+ local ok, err = pcall(vim.cmd, "luafile " .. config_path)
+ if not ok then
+ print("Invalid configuration", config_path)
+ print(err)
+ return
+ end
+
+ self.path = config_path
+
+ local settings = require "config.settings"
+ settings.load_commands()
+end
+
+return M
diff --git a/.config/nvim/lua/config/settings.lua b/.config/nvim/lua/config/settings.lua
new file mode 100644
index 0000000..82d7f48
--- /dev/null
+++ b/.config/nvim/lua/config/settings.lua
@@ -0,0 +1,76 @@
+local M = {}
+
+M.load_options = function()
+ 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 folding
+ 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 persistent 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 = true, -- 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+=-"
+
+ --- SETTINGS ---
+
+ vim.opt.shortmess:append "c"
+
+ for k, v in pairs(default_options) do
+ vim.opt[k] = v
+ end
+end
+
+M.load_commands = function()
+ local cmd = vim.cmd
+ if options.line_wrap_cursor_movement then
+ cmd "set whichwrap+=<,>,[,],h,l"
+ end
+
+ if options.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"
+ cmd "au ColorScheme * hi MsgArea ctermbg=none guibg=none"
+ cmd "au ColorScheme * hi TelescopeBorder ctermbg=none guibg=none"
+ cmd "au ColorScheme * hi NvimTreeNormal ctermbg=none guibg=none"
+ cmd "let &fcs='eob: '"
+ end
+end
+
+return M