defaults.lua 24 KB

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