default-config.lua 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180
  1. CONFIG_PATH = os.getenv "HOME" .. "/.local/share/lunarvim/lvim"
  2. DATA_PATH = vim.fn.stdpath "data"
  3. CACHE_PATH = vim.fn.stdpath "cache"
  4. TERMINAL = vim.fn.expand "$TERMINAL"
  5. USER = vim.fn.expand "$USER"
  6. vim.cmd [[ set spellfile=~/.config/lvim/spell/en.utf-8.add ]]
  7. lvim = {
  8. leader = "space",
  9. colorscheme = "spacegray",
  10. line_wrap_cursor_movement = true,
  11. transparent_window = false,
  12. format_on_save = true,
  13. vsnip_dir = os.getenv "HOME" .. "/.config/snippets",
  14. database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },
  15. keys = {},
  16. builtin = {},
  17. log = {
  18. ---@usage can be { "trace", "debug", "info", "warn", "error", "fatal" },
  19. level = "warn",
  20. viewer = {
  21. ---@usage this will fallback on "less +F" if not found
  22. cmd = "lnav",
  23. layout_config = {
  24. ---@usage direction = 'vertical' | 'horizontal' | 'window' | 'float',
  25. direction = "horizontal",
  26. open_mapping = "",
  27. size = 40,
  28. float_opts = {},
  29. },
  30. },
  31. },
  32. lsp = {
  33. completion = {
  34. item_kind = {
  35. "  (Text) ",
  36. "  (Method)",
  37. "  (Function)",
  38. "  (Constructor)",
  39. " ﴲ (Field)",
  40. "[] (Variable)",
  41. "  (Class)",
  42. " ﰮ (Interface)",
  43. "  (Module)",
  44. " 襁 (Property)",
  45. "  (Unit)",
  46. "  (Value)",
  47. " 練 (Enum)",
  48. "  (Keyword)",
  49. "  (Snippet)",
  50. "  (Color)",
  51. "  (File)",
  52. "  (Reference)",
  53. "  (Folder)",
  54. "  (EnumMember)",
  55. " ﲀ (Constant)",
  56. " ﳤ (Struct)",
  57. "  (Event)",
  58. "  (Operator)",
  59. "  (TypeParameter)",
  60. },
  61. },
  62. diagnostics = {
  63. signs = {
  64. active = true,
  65. values = {
  66. { name = "LspDiagnosticsSignError", text = "" },
  67. { name = "LspDiagnosticsSignWarning", text = "" },
  68. { name = "LspDiagnosticsSignHint", text = "" },
  69. { name = "LspDiagnosticsSignInformation", text = "" },
  70. },
  71. },
  72. virtual_text = {
  73. prefix = "",
  74. spacing = 0,
  75. },
  76. underline = true,
  77. severity_sort = true,
  78. },
  79. override = {},
  80. document_highlight = true,
  81. popup_border = "single",
  82. on_attach_callback = nil,
  83. on_init_callback = nil,
  84. null_ls = {
  85. setup = {},
  86. },
  87. },
  88. plugins = {
  89. -- use config.lua for this not put here
  90. },
  91. autocommands = {},
  92. }
  93. local schemas = nil
  94. local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
  95. if status_ok then
  96. schemas = jsonls_settings.get_default_schemas()
  97. end
  98. -- TODO move all of this into lang specific files, only require when using
  99. lvim.lang = {
  100. asm = {
  101. formatters = {
  102. -- {
  103. -- exe = "asmfmt",
  104. -- args = {},
  105. -- },
  106. },
  107. linters = {},
  108. lsp = {
  109. provider = "",
  110. setup = {},
  111. },
  112. },
  113. beancount = {
  114. formatters = {
  115. -- {
  116. -- exe = "bean_format",
  117. -- args = {},
  118. -- },
  119. },
  120. linters = {},
  121. lsp = {
  122. provider = "beancount",
  123. setup = {
  124. cmd = { "beancount-langserver" },
  125. },
  126. },
  127. },
  128. c = {
  129. formatters = {
  130. -- {
  131. -- exe = "clang_format",
  132. -- args = {},
  133. -- },
  134. -- {
  135. -- exe = "uncrustify",
  136. -- args = {},
  137. -- },
  138. },
  139. linters = {},
  140. lsp = {
  141. provider = "clangd",
  142. setup = {
  143. cmd = {
  144. DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd",
  145. "--background-index",
  146. "--header-insertion=never",
  147. "--cross-file-rename",
  148. "--clang-tidy",
  149. "--clang-tidy-checks=-*,llvm-*,clang-analyzer-*",
  150. },
  151. },
  152. },
  153. },
  154. cpp = {
  155. formatters = {
  156. -- {
  157. -- exe = "clang_format",
  158. -- args = {},
  159. -- },
  160. -- {
  161. -- exe = "uncrustify",
  162. -- args = {},
  163. -- },
  164. },
  165. linters = {},
  166. lsp = {
  167. provider = "clangd",
  168. setup = {
  169. cmd = {
  170. DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd",
  171. "--background-index",
  172. "--header-insertion=never",
  173. "--cross-file-rename",
  174. "--clang-tidy",
  175. "--clang-tidy-checks=-*,llvm-*,clang-analyzer-*",
  176. },
  177. },
  178. },
  179. },
  180. crystal = {
  181. formatters = {
  182. -- {
  183. -- exe = "crystal_format",
  184. -- args = {},
  185. -- },
  186. },
  187. linters = {},
  188. lsp = {
  189. provider = "crystalline",
  190. setup = {
  191. cmd = { "crystalline" },
  192. },
  193. },
  194. },
  195. cs = {
  196. formatters = {
  197. -- {
  198. -- exe = "clang_format ",
  199. -- args = {},
  200. -- },
  201. -- {
  202. -- exe = "uncrustify",
  203. -- args = {},
  204. -- },
  205. },
  206. linters = {},
  207. lsp = {
  208. provider = "omnisharp",
  209. setup = {
  210. cmd = {
  211. DATA_PATH .. "/lspinstall/csharp/omnisharp/run",
  212. "--languageserver",
  213. "--hostPID",
  214. tostring(vim.fn.getpid()),
  215. },
  216. },
  217. },
  218. },
  219. cmake = {
  220. formatters = {
  221. -- {
  222. -- exe = "cmake_format",
  223. -- args = {},
  224. -- },
  225. },
  226. linters = {},
  227. lsp = {
  228. provider = "cmake",
  229. setup = {
  230. cmd = {
  231. DATA_PATH .. "/lspinstall/cmake/venv/bin/cmake-language-server",
  232. },
  233. },
  234. },
  235. },
  236. clojure = {
  237. formatters = {},
  238. linters = {},
  239. lsp = {
  240. provider = "clojure_lsp",
  241. setup = {
  242. cmd = {
  243. DATA_PATH .. "/lspinstall/clojure/clojure-lsp",
  244. },
  245. },
  246. },
  247. },
  248. css = {
  249. formatters = {
  250. -- {
  251. -- exe = "prettier",
  252. -- args = {},
  253. -- },
  254. -- {
  255. -- exe = "prettierd",
  256. -- args = {},
  257. -- },
  258. },
  259. linters = {},
  260. lsp = {
  261. provider = "cssls",
  262. setup = {
  263. cmd = {
  264. "node",
  265. DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
  266. "--stdio",
  267. },
  268. },
  269. },
  270. },
  271. less = {
  272. formatters = {
  273. -- {
  274. -- exe = "prettier",
  275. -- args = {},
  276. -- },
  277. -- {
  278. -- exe = "prettierd",
  279. -- args = {},
  280. -- },
  281. },
  282. linters = {},
  283. lsp = {
  284. provider = "cssls",
  285. setup = {
  286. cmd = {
  287. "node",
  288. DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
  289. "--stdio",
  290. },
  291. },
  292. },
  293. },
  294. d = {
  295. formatters = {
  296. -- {
  297. -- exe = "dfmt",
  298. -- args = {},
  299. -- },
  300. },
  301. linters = {},
  302. lsp = {
  303. provider = "serve_d",
  304. setup = {
  305. cmd = { "serve-d" },
  306. },
  307. },
  308. },
  309. dart = {
  310. formatters = {
  311. -- {
  312. -- exe = "dart_format",
  313. -- args = {},
  314. -- },
  315. },
  316. linters = {},
  317. lsp = {
  318. provider = "dartls",
  319. setup = {
  320. cmd = {
  321. "dart",
  322. "/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
  323. "--lsp",
  324. },
  325. },
  326. },
  327. },
  328. docker = {
  329. formatters = {},
  330. linters = {},
  331. lsp = {
  332. provider = "dockerls",
  333. setup = {
  334. cmd = {
  335. DATA_PATH .. "/lspinstall/dockerfile/node_modules/.bin/docker-langserver",
  336. "--stdio",
  337. },
  338. },
  339. },
  340. },
  341. elixir = {
  342. formatters = {
  343. -- {
  344. -- exe = "mix",
  345. -- args = {},
  346. -- },
  347. },
  348. linters = {},
  349. lsp = {
  350. provider = "elixirls",
  351. setup = {
  352. cmd = {
  353. DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",
  354. },
  355. },
  356. },
  357. },
  358. elm = {
  359. formatters = {
  360. -- {
  361. -- exe = "elm_format",
  362. -- args = {},
  363. -- },
  364. },
  365. linters = {},
  366. lsp = {
  367. provider = "elmls",
  368. setup = {
  369. cmd = {
  370. DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-language-server",
  371. },
  372. -- init_options = {
  373. -- elmAnalyseTrigger = "change",
  374. -- elmFormatPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-format",
  375. -- elmPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/",
  376. -- elmTestPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-test",
  377. -- },
  378. },
  379. },
  380. },
  381. erlang = {
  382. formatters = {
  383. -- {
  384. -- exe = "erlfmt",
  385. -- args = {},
  386. -- },
  387. },
  388. linters = {},
  389. lsp = {
  390. provider = "erlangls",
  391. setup = {
  392. cmd = {
  393. "erlang_ls",
  394. },
  395. },
  396. },
  397. },
  398. emmet = { active = false },
  399. fish = {
  400. formatters = {
  401. -- {
  402. -- exe = "fish_indent",
  403. -- args = {},
  404. -- },
  405. },
  406. linters = {},
  407. lsp = {
  408. provider = "",
  409. setup = {},
  410. },
  411. },
  412. fortran = {
  413. formatters = {},
  414. linters = {},
  415. lsp = {
  416. provider = "fortls",
  417. setup = {
  418. cmd = {
  419. DATA_PATH .. "/lspinstall/fortran/venv/bin/fortls",
  420. },
  421. },
  422. },
  423. },
  424. go = {
  425. formatters = {
  426. -- {
  427. -- exe = "gofmt",
  428. -- args = {},
  429. -- },
  430. -- {
  431. -- exe = "goimports",
  432. -- args = {},
  433. -- },
  434. -- {
  435. -- exe = "gofumpt",
  436. -- args = {},
  437. -- },
  438. },
  439. linters = {},
  440. lsp = {
  441. provider = "gopls",
  442. setup = {
  443. cmd = {
  444. DATA_PATH .. "/lspinstall/go/gopls",
  445. },
  446. },
  447. },
  448. },
  449. graphql = {
  450. formatters = {},
  451. linters = {},
  452. lsp = {
  453. provider = "graphql",
  454. setup = {
  455. cmd = {
  456. "graphql-lsp",
  457. "server",
  458. "-m",
  459. "stream",
  460. },
  461. },
  462. },
  463. },
  464. haskell = {
  465. formatters = {},
  466. linters = {},
  467. lsp = {
  468. provider = "hls",
  469. setup = {
  470. cmd = { DATA_PATH .. "/lspinstall/haskell/hls" },
  471. },
  472. },
  473. },
  474. html = {
  475. formatters = {
  476. -- {
  477. -- exe = "prettier",
  478. -- args = {},
  479. -- },
  480. -- {
  481. -- exe = "prettierd",
  482. -- args = {},
  483. -- },
  484. },
  485. linters = {},
  486. lsp = {
  487. provider = "html",
  488. setup = {
  489. cmd = {
  490. "node",
  491. DATA_PATH .. "/lspinstall/html/vscode-html/html-language-features/server/dist/node/htmlServerMain.js",
  492. "--stdio",
  493. },
  494. },
  495. },
  496. },
  497. java = {
  498. formatters = {
  499. -- {
  500. -- exe = "clang_format",
  501. -- args = {},
  502. -- },
  503. -- {
  504. -- exe = "uncrustify",
  505. -- args = {},
  506. -- },
  507. },
  508. linters = {},
  509. lsp = {
  510. provider = "jdtls",
  511. setup = {
  512. cmd = { DATA_PATH .. "/lspinstall/java/jdtls.sh" },
  513. },
  514. },
  515. },
  516. json = {
  517. formatters = {
  518. -- {
  519. -- exe = "json_tool",
  520. -- args = {},
  521. -- },
  522. -- {
  523. -- exe = "prettier",
  524. -- args = {},
  525. -- },
  526. -- {
  527. -- exe = "prettierd",
  528. -- args = {},
  529. -- },
  530. },
  531. linters = {},
  532. lsp = {
  533. provider = "jsonls",
  534. setup = {
  535. cmd = {
  536. "node",
  537. DATA_PATH .. "/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js",
  538. "--stdio",
  539. },
  540. settings = {
  541. json = {
  542. schemas = schemas,
  543. -- = {
  544. -- {
  545. -- fileMatch = { "package.json" },
  546. -- url = "https://json.schemastore.org/package.json",
  547. -- },
  548. -- },
  549. },
  550. },
  551. commands = {
  552. Format = {
  553. function()
  554. vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
  555. end,
  556. },
  557. },
  558. },
  559. },
  560. },
  561. julia = {
  562. formatters = {},
  563. linters = {},
  564. lsp = {
  565. provider = "julials",
  566. setup = {
  567. {
  568. "julia",
  569. "--startup-file=no",
  570. "--history-file=no",
  571. -- vim.fn.expand "~/.config/nvim/lua/lsp/julia/run.jl",
  572. CONFIG_PATH .. "/utils/julia/run.jl",
  573. },
  574. },
  575. },
  576. },
  577. kotlin = {
  578. formatters = {},
  579. linters = {},
  580. lsp = {
  581. provider = "kotlin_language_server",
  582. setup = {
  583. cmd = {
  584. DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server",
  585. },
  586. root_dir = function(fname)
  587. local util = require "lspconfig/util"
  588. local root_files = {
  589. "settings.gradle", -- Gradle (multi-project)
  590. "settings.gradle.kts", -- Gradle (multi-project)
  591. "build.xml", -- Ant
  592. "pom.xml", -- Maven
  593. }
  594. local fallback_root_files = {
  595. "build.gradle", -- Gradle
  596. "build.gradle.kts", -- Gradle
  597. }
  598. return util.root_pattern(unpack(root_files))(fname) or util.root_pattern(unpack(fallback_root_files))(fname)
  599. end,
  600. },
  601. },
  602. },
  603. lua = {
  604. formatters = {
  605. -- {
  606. -- exe = "stylua",
  607. -- args = {},
  608. -- },
  609. -- {
  610. -- exe = "lua_format",
  611. -- args = {},
  612. -- },
  613. },
  614. linters = {},
  615. lsp = {
  616. provider = "sumneko_lua",
  617. setup = {
  618. cmd = {
  619. DATA_PATH .. "/lspinstall/lua/sumneko-lua-language-server",
  620. "-E",
  621. DATA_PATH .. "/lspinstall/lua/main.lua",
  622. },
  623. settings = {
  624. Lua = {
  625. runtime = {
  626. -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
  627. version = "LuaJIT",
  628. -- Setup your lua path
  629. path = vim.split(package.path, ";"),
  630. },
  631. diagnostics = {
  632. -- Get the language server to recognize the `vim` global
  633. globals = { "vim", "lvim" },
  634. },
  635. workspace = {
  636. -- Make the server aware of Neovim runtime files
  637. library = {
  638. [vim.fn.expand "~/.local/share/lunarvim/lvim/lua"] = true,
  639. [vim.fn.expand "$VIMRUNTIME/lua"] = true,
  640. [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
  641. },
  642. maxPreload = 100000,
  643. preloadFileSize = 1000,
  644. },
  645. },
  646. },
  647. },
  648. },
  649. },
  650. nginx = {
  651. formatters = {
  652. -- {
  653. -- exe = "nginx_beautifier",
  654. -- args = {
  655. -- provider = "",
  656. -- setup = {},
  657. -- },
  658. -- },
  659. },
  660. linters = {},
  661. lsp = {},
  662. },
  663. perl = {
  664. formatters = {
  665. -- {
  666. -- exe = "perltidy",
  667. -- args = {},
  668. -- },
  669. },
  670. linters = {},
  671. lsp = {
  672. provider = "",
  673. setup = {},
  674. },
  675. },
  676. sql = {
  677. formatters = {
  678. -- {
  679. -- exe = "sqlformat",
  680. -- args = {},
  681. -- },
  682. },
  683. linters = {},
  684. lsp = {
  685. provider = "sqls",
  686. setup = {
  687. cmd = { "sqls" },
  688. },
  689. },
  690. },
  691. php = {
  692. formatters = {
  693. -- {
  694. -- exe = "phpcbf",
  695. -- args = {},
  696. -- },
  697. },
  698. linters = {},
  699. lsp = {
  700. provider = "intelephense",
  701. setup = {
  702. cmd = {
  703. DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense",
  704. "--stdio",
  705. },
  706. filetypes = { "php", "phtml" },
  707. settings = {
  708. intelephense = {
  709. environment = {
  710. phpVersion = "7.4",
  711. },
  712. },
  713. },
  714. },
  715. },
  716. },
  717. puppet = {
  718. formatters = {},
  719. linters = {},
  720. lsp = {
  721. provider = "puppet",
  722. setup = {
  723. cmd = {
  724. DATA_PATH .. "/lspinstall/puppet/puppet-editor-services/puppet-languageserver",
  725. "--stdio",
  726. },
  727. },
  728. },
  729. },
  730. javascript = {
  731. formatters = {
  732. -- {
  733. -- exe = "prettier",
  734. -- args = {},
  735. -- },
  736. -- {
  737. -- exe = "prettier_d_slim",
  738. -- args = {},
  739. -- },
  740. -- {
  741. -- exe = "prettierd",
  742. -- args = {},
  743. -- },
  744. },
  745. -- @usage can be {"eslint"} or {"eslint_d"}
  746. linters = {},
  747. lsp = {
  748. provider = "tsserver",
  749. setup = {
  750. cmd = {
  751. -- TODO:
  752. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  753. "--stdio",
  754. },
  755. },
  756. },
  757. },
  758. javascriptreact = {
  759. formatters = {
  760. -- {
  761. -- exe = "prettier",
  762. -- args = {},
  763. -- },
  764. -- {
  765. -- exe = "prettier_d_slim",
  766. -- args = {},
  767. -- },
  768. -- {
  769. -- exe = "prettierd",
  770. -- args = {},
  771. -- },
  772. },
  773. linters = {},
  774. lsp = {
  775. provider = "tsserver",
  776. setup = {
  777. cmd = {
  778. -- TODO:
  779. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  780. "--stdio",
  781. },
  782. },
  783. },
  784. },
  785. python = {
  786. formatters = {
  787. -- {
  788. -- exe = "yapf",
  789. -- args = {},
  790. -- },
  791. -- {
  792. -- exe = "isort",
  793. -- args = {},
  794. -- },
  795. },
  796. linters = {},
  797. lsp = {
  798. provider = "pyright",
  799. setup = {
  800. cmd = {
  801. DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
  802. "--stdio",
  803. },
  804. },
  805. },
  806. },
  807. -- R -e 'install.packages("formatR",repos = "http://cran.us.r-project.org")'
  808. -- R -e 'install.packages("readr",repos = "http://cran.us.r-project.org")'
  809. r = {
  810. formatters = {
  811. -- {
  812. -- exe = "format_r",
  813. -- args = {},
  814. -- },
  815. },
  816. linters = {},
  817. lsp = {
  818. provider = "r_language_server",
  819. setup = {
  820. cmd = {
  821. "R",
  822. "--slave",
  823. "-e",
  824. "languageserver::run()",
  825. },
  826. },
  827. },
  828. },
  829. ruby = {
  830. formatters = {
  831. -- {
  832. -- exe = "rufo",
  833. -- args = {},
  834. -- },
  835. },
  836. linters = {},
  837. lsp = {
  838. provider = "solargraph",
  839. setup = {
  840. cmd = {
  841. DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
  842. "stdio",
  843. },
  844. filetypes = { "ruby" },
  845. init_options = {
  846. formatting = true,
  847. },
  848. root_dir = function(fname)
  849. local util = require("lspconfig").util
  850. return util.root_pattern("Gemfile", ".git")(fname)
  851. end,
  852. settings = {
  853. solargraph = {
  854. diagnostics = true,
  855. },
  856. },
  857. },
  858. },
  859. },
  860. rust = {
  861. formatters = {
  862. -- {
  863. -- exe = "rustfmt",
  864. -- args = {},
  865. -- },
  866. },
  867. linters = {},
  868. lsp = {
  869. provider = "rust_analyzer",
  870. setup = {
  871. cmd = {
  872. DATA_PATH .. "/lspinstall/rust/rust-analyzer",
  873. },
  874. },
  875. },
  876. },
  877. scala = {
  878. formatters = {
  879. -- {
  880. -- exe = "scalafmt",
  881. -- args = {},
  882. -- },
  883. },
  884. linters = { "" },
  885. lsp = {
  886. provider = "metals",
  887. setup = {},
  888. },
  889. },
  890. sh = {
  891. formatters = {
  892. -- {
  893. -- exe = "shfmt",
  894. -- args = {},
  895. -- },
  896. },
  897. linters = {},
  898. lsp = {
  899. provider = "bashls",
  900. setup = {
  901. cmd = {
  902. DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
  903. "start",
  904. },
  905. },
  906. },
  907. },
  908. svelte = {
  909. formatters = {},
  910. linters = {},
  911. lsp = {
  912. provider = "svelte",
  913. setup = {
  914. cmd = {
  915. DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver",
  916. "--stdio",
  917. },
  918. },
  919. },
  920. },
  921. swift = {
  922. formatters = {
  923. -- {
  924. -- exe = "swiftformat",
  925. -- args = {},
  926. -- },
  927. },
  928. linters = {},
  929. lsp = {
  930. provider = "sourcekit",
  931. setup = {
  932. cmd = {
  933. "xcrun",
  934. "sourcekit-lsp",
  935. },
  936. },
  937. },
  938. },
  939. tailwindcss = {
  940. active = false,
  941. filetypes = {
  942. "html",
  943. "css",
  944. "scss",
  945. "javascript",
  946. "javascriptreact",
  947. "typescript",
  948. "typescriptreact",
  949. },
  950. },
  951. terraform = {
  952. formatters = {
  953. -- {
  954. -- exe = "terraform_fmt",
  955. -- args = {},
  956. -- },
  957. },
  958. linters = {},
  959. lsp = {
  960. provider = "terraformls",
  961. setup = {
  962. cmd = {
  963. DATA_PATH .. "/lspinstall/terraform/terraform-ls",
  964. "serve",
  965. },
  966. },
  967. },
  968. },
  969. tex = {
  970. formatters = {},
  971. linters = {},
  972. lsp = {
  973. provider = "texlab",
  974. setup = {
  975. cmd = { DATA_PATH .. "/lspinstall/latex/texlab" },
  976. },
  977. },
  978. },
  979. typescript = {
  980. formatters = {
  981. -- {
  982. -- exe = "prettier",
  983. -- args = {},
  984. -- },
  985. -- {
  986. -- exe = "prettierd",
  987. -- args = {},
  988. -- },
  989. -- {
  990. -- exe = "prettier_d_slim",
  991. -- args = {},
  992. -- },
  993. },
  994. linters = {},
  995. lsp = {
  996. provider = "tsserver",
  997. setup = {
  998. cmd = {
  999. -- TODO:
  1000. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  1001. "--stdio",
  1002. },
  1003. },
  1004. },
  1005. },
  1006. typescriptreact = {
  1007. formatters = {
  1008. -- {
  1009. -- exe = "prettier",
  1010. -- args = {},
  1011. -- },
  1012. -- {
  1013. -- exe = "prettierd",
  1014. -- args = {},
  1015. -- },
  1016. -- {
  1017. -- exe = "prettier_d_slim",
  1018. -- args = {},
  1019. -- },
  1020. },
  1021. -- @usage can be {"eslint"} or {"eslint_d"}
  1022. linters = {},
  1023. lsp = {
  1024. provider = "tsserver",
  1025. setup = {
  1026. cmd = {
  1027. -- TODO:
  1028. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  1029. "--stdio",
  1030. },
  1031. },
  1032. },
  1033. },
  1034. vim = {
  1035. formatters = {},
  1036. linters = {},
  1037. lsp = {
  1038. provider = "vimls",
  1039. setup = {
  1040. cmd = {
  1041. DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server",
  1042. "--stdio",
  1043. },
  1044. },
  1045. },
  1046. },
  1047. vue = {
  1048. formatters = {
  1049. -- {
  1050. -- exe = "prettier",
  1051. -- args = {},
  1052. -- },
  1053. -- {
  1054. -- exe = "prettierd",
  1055. -- args = {},
  1056. -- },
  1057. -- {
  1058. -- exe = "prettier_d_slim",
  1059. -- args = {},
  1060. -- },
  1061. },
  1062. linters = {},
  1063. lsp = {
  1064. provider = "vuels",
  1065. setup = {
  1066. cmd = {
  1067. DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",
  1068. },
  1069. },
  1070. },
  1071. },
  1072. yaml = {
  1073. formatters = {
  1074. -- {
  1075. -- exe = "prettier",
  1076. -- args = {},
  1077. -- },
  1078. -- {
  1079. -- exe = "prettierd",
  1080. -- args = {},
  1081. -- },
  1082. },
  1083. linters = {},
  1084. lsp = {
  1085. provider = "yamlls",
  1086. setup = {
  1087. cmd = {
  1088. DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server",
  1089. "--stdio",
  1090. },
  1091. },
  1092. },
  1093. },
  1094. zig = {
  1095. formatters = {},
  1096. linters = {},
  1097. lsp = {
  1098. provider = "zls",
  1099. setup = {
  1100. cmd = {
  1101. "zls",
  1102. },
  1103. },
  1104. },
  1105. },
  1106. gdscript = {
  1107. formatters = {},
  1108. linters = {},
  1109. lsp = {
  1110. provider = "gdscript",
  1111. setup = {
  1112. cmd = {
  1113. "nc",
  1114. "localhost",
  1115. "6008",
  1116. },
  1117. },
  1118. },
  1119. },
  1120. ps1 = {
  1121. formatters = {},
  1122. linters = {},
  1123. lsp = {
  1124. provider = "powershell_es",
  1125. setup = {
  1126. bundle_path = "",
  1127. },
  1128. },
  1129. },
  1130. nix = {
  1131. formatters = {
  1132. -- {
  1133. -- exe = "nixfmt",
  1134. -- args = {},
  1135. -- },
  1136. },
  1137. linters = {},
  1138. lsp = {
  1139. provider = "rnix",
  1140. setup = {
  1141. cmd = { "rnix-lsp" },
  1142. filetypes = { "nix" },
  1143. init_options = {},
  1144. settings = {},
  1145. root_dir = function(fname)
  1146. local util = require "lspconfig/util"
  1147. return util.root_pattern ".git"(fname) or vim.fn.getcwd()
  1148. end,
  1149. },
  1150. },
  1151. },
  1152. }
  1153. -- NOTE: which-key should be first because it defines lvim.builtin.which_key.mappings
  1154. require("keymappings").config()
  1155. require("core.which-key").config()
  1156. require("core.gitsigns").config()
  1157. require("core.compe").config()
  1158. require("core.dashboard").config()
  1159. require("core.dap").config()
  1160. require("core.terminal").config()
  1161. require("core.telescope").config()
  1162. require("core.treesitter").config()
  1163. require("core.nvimtree").config()
  1164. require("core.project").config()
  1165. require("core.bufferline").config()
  1166. require("core.autopairs").config()
  1167. require("core.comment").config()
  1168. require("core.lspinstall").config()
  1169. require("core.lualine").config()