defaults.lua 23 KB

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