| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015 | CONFIG_PATH = os.getenv "HOME" .. "/.local/share/lunarvim/lvim"DATA_PATH = vim.fn.stdpath "data"CACHE_PATH = vim.fn.stdpath "cache"TERMINAL = vim.fn.expand "$TERMINAL"USER = vim.fn.expand "$USER"lvim = {  leader = "space",  colorscheme = "spacegray",  line_wrap_cursor_movement = true,  transparent_window = false,  format_on_save = true,  vsnip_dir = os.getenv "HOME" .. "/.config/snippets",  database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },  keys = {},  -- TODO why do we need this?  builtin = {    lspinstall = {},    telescope = {},    compe = {},    autopairs = {},    treesitter = {},    nvimtree = {},    gitsigns = {},    which_key = {},    comment = {},    rooter = {},    galaxyline = {},    bufferline = {},    dap = {},    dashboard = {},    terminal = {},  },  lsp = {    diagnostics = {      virtual_text = {        prefix = "",        spacing = 0,      },      signs = true,      underline = true,    },    override = {},    document_highlight = true,    popup_border = "single",    default_keybinds = true,    on_attach_callback = nil,  },  plugins = {    -- use lv-config.lua for this not put here  },  autocommands = {},}local schemas = nillocal common_on_attach = require("lsp").common_on_attachlocal 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-- TODO move all of this into lang specific files, only require when usinglvim.lang = {  asm = {    formatter = {      exe = "asmfmt",      args = {},    },    linters = {},    lsp = {      provider = "",      setup = {},    },  },  beancount = {    formatter = {      exe = "bean_format",      args = {},    },    linters = {},    lsp = {      provider = "beancount",      setup = {        cmd = { "beancount-langserver" },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  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,      },    },  },  crystal = {    formatter = {      exe = "crystal_format",      args = {},    },    linters = {},    lsp = {      provider = "crystalline",      setup = {        cmd = { "crystalline" },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  cs = {    formatter = {      exe = "clang_format",      args = {},    },    linters = {},    lsp = {      provider = "omnisharp",      setup = {        cmd = {          DATA_PATH .. "/lspinstall/csharp/omnisharp/run",          "--languageserver",          "--hostPID",          tostring(vim.fn.getpid()),        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  cmake = {    formatter = {      exe = "cmake_format",      args = {},    },    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 = {    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 = {},    },    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,      },    },  },  d = {    formatter = {      exe = "dfmt",      args = {},    },    linters = {},    lsp = {      provider = "serve_d",      setup = {        cmd = { "serve-d" },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  dart = {    formatter = {      exe = "dart_format",      args = {},      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 = {    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 = {},      stdin = true,    },    linters = {},    lsp = {      provider = "elixirls",      setup = {        cmd = {          DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  elm = {    formatter = {      exe = "elm_format",      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 = {    formatter = {      exe = "erlfmt",      args = {},    },    linters = {},    lsp = {      provider = "erlangls",      setup = {        cmd = {          "erlang_ls",        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  emmet = { active = false },  fish = {    formatter = {      exe = "fish_indent",      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 = {    formatter = {      exe = "",      args = {},    },    linters = {},    lsp = {      provider = "graphql",      setup = {        cmd = {          "graphql-lsp",          "server",          "-m",          "stream",        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  html = {    formatter = {      exe = "prettier",      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) },    },    linters = {},    lsp = {      provider = "jdtls",      setup = {        cmd = { DATA_PATH .. "/lspinstall/java/jdtls.sh" },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  json = {    formatter = {      exe = "json_tool",      args = {},      stdin = true,    },    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 = {    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 = {    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"          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 = {    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", "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 = {    formatter = {      exe = "nginx_beautifier",      args = {        provider = "",        setup = {},      },    },    linters = {},    lsp = {},  },  perl = {    formatter = {      exe = "perltidy",      args = {},    },    linters = {},    lsp = {      provider = "",      setup = {},    },  },  sql = {    formatter = {      exe = "sqlformat",      args = {},    },    linters = {},    lsp = {      provider = "sqls",      setup = {        cmd = { "sqls" },      },    },  },  php = {    formatter = {      exe = "phpcbf",      args = {},    },    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",            },          },        },      },    },  },  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 = {      exe = "format_r",      args = {},    },    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",      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 = {      exe = "rustfmt",      args = {},    },    linters = {},    lsp = {      provider = "rust_analyzer",      setup = {        cmd = {          DATA_PATH .. "/lspinstall/rust/rust-analyzer",        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  scala = {    formatter = {      exe = "scalafmt",      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 = {    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 = {},    },    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",    },  },  tf = {    formatter = {      exe = "terraform_fmt",      args = {},    },    linters = {},    lsp = {      provider = "terraformls",      setup = {        filetypes = { "terraform", "tf" },        cmd = {          DATA_PATH .. "/lspinstall/terraform/terraform-ls",          "serve",        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  tex = {    formatter = {      exe = "latexindent",      args = {},      stdin = false,    },    linters = { "chktex" },    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 = {    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",      args = {},    },    linters = {},    lsp = {      provider = "vuels",      setup = {        cmd = {          DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",        },        on_attach = common_on_attach,        capabilities = common_capabilities,      },    },  },  yaml = {    formatter = {      exe = "prettier",      args = {},    },    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 = {      exe = "",      args = {},      stdin = false,    },    linters = {},    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.telescope").config()require("core.treesitter").config()require("core.nvimtree").config()
 |