defaults.lua 24 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205
  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. runtime = {
  638. -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
  639. version = "LuaJIT",
  640. -- Setup your lua path
  641. path = vim.split(package.path, ";"),
  642. },
  643. diagnostics = {
  644. -- Get the language server to recognize the `vim` global
  645. globals = { "vim", "lvim" },
  646. },
  647. workspace = {
  648. -- Make the server aware of Neovim runtime files
  649. library = {
  650. [require("utils").join_paths(get_runtime_dir(), "lvim", "lua")] = true,
  651. [vim.fn.expand "$VIMRUNTIME/lua"] = true,
  652. [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
  653. },
  654. maxPreload = 100000,
  655. preloadFileSize = 1000,
  656. },
  657. },
  658. },
  659. },
  660. },
  661. },
  662. nginx = {
  663. formatters = {
  664. -- {
  665. -- exe = "nginx_beautifier",
  666. -- args = {
  667. -- provider = "",
  668. -- setup = {},
  669. -- },
  670. -- },
  671. },
  672. linters = {},
  673. lsp = {},
  674. },
  675. perl = {
  676. formatters = {
  677. -- {
  678. -- exe = "perltidy",
  679. -- args = {},
  680. -- },
  681. },
  682. linters = {},
  683. lsp = {
  684. provider = "",
  685. setup = {},
  686. },
  687. },
  688. solidity = {
  689. formatters = {},
  690. linters = {},
  691. lsp = {
  692. provider = "solang",
  693. setup = {
  694. cmd = { "solang", "--language-server" },
  695. },
  696. },
  697. },
  698. sql = {
  699. formatters = {
  700. -- {
  701. -- exe = "sqlformat",
  702. -- args = {},
  703. -- },
  704. },
  705. linters = {},
  706. lsp = {
  707. provider = "sqls",
  708. setup = {
  709. cmd = { "sqls" },
  710. },
  711. },
  712. },
  713. php = {
  714. formatters = {
  715. -- {
  716. -- exe = "phpcbf",
  717. -- args = {},
  718. -- },
  719. },
  720. linters = {},
  721. lsp = {
  722. provider = "intelephense",
  723. setup = {
  724. cmd = {
  725. ls_install_prefix .. "/php/node_modules/.bin/intelephense",
  726. "--stdio",
  727. },
  728. filetypes = { "php", "phtml" },
  729. settings = {
  730. intelephense = {
  731. environment = {
  732. phpVersion = "7.4",
  733. },
  734. },
  735. },
  736. },
  737. },
  738. },
  739. puppet = {
  740. formatters = {},
  741. linters = {},
  742. lsp = {
  743. provider = "puppet",
  744. setup = {
  745. cmd = {
  746. ls_install_prefix .. "/puppet/puppet-editor-services/puppet-languageserver",
  747. "--stdio",
  748. },
  749. },
  750. },
  751. },
  752. javascript = {
  753. formatters = {
  754. -- {
  755. -- exe = "prettier",
  756. -- args = {},
  757. -- },
  758. -- {
  759. -- exe = "prettier_d_slim",
  760. -- args = {},
  761. -- },
  762. -- {
  763. -- exe = "prettierd",
  764. -- args = {},
  765. -- },
  766. },
  767. -- @usage can be {"eslint"} or {"eslint_d"}
  768. linters = {},
  769. lsp = {
  770. provider = "tsserver",
  771. setup = {
  772. cmd = {
  773. -- TODO:
  774. ls_install_prefix .. "/typescript/node_modules/.bin/typescript-language-server",
  775. "--stdio",
  776. },
  777. },
  778. },
  779. },
  780. javascriptreact = {
  781. formatters = {
  782. -- {
  783. -- exe = "prettier",
  784. -- args = {},
  785. -- },
  786. -- {
  787. -- exe = "prettier_d_slim",
  788. -- args = {},
  789. -- },
  790. -- {
  791. -- exe = "prettierd",
  792. -- args = {},
  793. -- },
  794. },
  795. linters = {},
  796. lsp = {
  797. provider = "tsserver",
  798. setup = {
  799. cmd = {
  800. -- TODO:
  801. ls_install_prefix .. "/typescript/node_modules/.bin/typescript-language-server",
  802. "--stdio",
  803. },
  804. },
  805. },
  806. },
  807. python = {
  808. formatters = {
  809. -- {
  810. -- exe = "yapf",
  811. -- args = {},
  812. -- },
  813. -- {
  814. -- exe = "isort",
  815. -- args = {},
  816. -- },
  817. },
  818. linters = {},
  819. lsp = {
  820. provider = "pyright",
  821. setup = {
  822. cmd = {
  823. ls_install_prefix .. "/python/node_modules/.bin/pyright-langserver",
  824. "--stdio",
  825. },
  826. },
  827. },
  828. },
  829. -- R -e 'install.packages("formatR",repos = "http://cran.us.r-project.org")'
  830. -- R -e 'install.packages("readr",repos = "http://cran.us.r-project.org")'
  831. r = {
  832. formatters = {
  833. -- {
  834. -- exe = "format_r",
  835. -- args = {},
  836. -- },
  837. },
  838. linters = {},
  839. lsp = {
  840. provider = "r_language_server",
  841. setup = {
  842. cmd = {
  843. "R",
  844. "--slave",
  845. "-e",
  846. "languageserver::run()",
  847. },
  848. },
  849. },
  850. },
  851. ruby = {
  852. formatters = {
  853. -- {
  854. -- exe = "rufo",
  855. -- args = {},
  856. -- },
  857. },
  858. linters = {},
  859. lsp = {
  860. provider = "solargraph",
  861. setup = {
  862. cmd = {
  863. ls_install_prefix .. "/ruby/solargraph/solargraph",
  864. "stdio",
  865. },
  866. filetypes = { "ruby" },
  867. init_options = {
  868. formatting = true,
  869. },
  870. root_dir = function(fname)
  871. local util = require("lspconfig").util
  872. return util.root_pattern("Gemfile", ".git")(fname)
  873. end,
  874. settings = {
  875. solargraph = {
  876. diagnostics = true,
  877. },
  878. },
  879. },
  880. },
  881. },
  882. rust = {
  883. formatters = {
  884. -- {
  885. -- exe = "rustfmt",
  886. -- args = {},
  887. -- },
  888. },
  889. linters = {},
  890. lsp = {
  891. provider = "rust_analyzer",
  892. setup = {
  893. cmd = {
  894. ls_install_prefix .. "/rust/rust-analyzer",
  895. },
  896. },
  897. },
  898. },
  899. scala = {
  900. formatters = {
  901. -- {
  902. -- exe = "scalafmt",
  903. -- args = {},
  904. -- },
  905. },
  906. linters = {},
  907. lsp = {
  908. provider = "metals",
  909. setup = {},
  910. },
  911. },
  912. sh = {
  913. formatters = {
  914. -- {
  915. -- exe = "shfmt",
  916. -- args = {},
  917. -- },
  918. },
  919. linters = {},
  920. lsp = {
  921. provider = "bashls",
  922. setup = {
  923. cmd = {
  924. ls_install_prefix .. "/bash/node_modules/.bin/bash-language-server",
  925. "start",
  926. },
  927. },
  928. },
  929. },
  930. svelte = {
  931. formatters = {},
  932. linters = {},
  933. lsp = {
  934. provider = "svelte",
  935. setup = {
  936. cmd = {
  937. ls_install_prefix .. "/svelte/node_modules/.bin/svelteserver",
  938. "--stdio",
  939. },
  940. },
  941. },
  942. },
  943. swift = {
  944. formatters = {
  945. -- {
  946. -- exe = "swiftformat",
  947. -- args = {},
  948. -- },
  949. },
  950. linters = {},
  951. lsp = {
  952. provider = "sourcekit",
  953. setup = {
  954. cmd = {
  955. "xcrun",
  956. "sourcekit-lsp",
  957. },
  958. },
  959. },
  960. },
  961. tailwindcss = {
  962. lsp = {
  963. active = false,
  964. provider = "tailwindcss",
  965. setup = {
  966. cmd = {
  967. ls_install_prefix .. "/tailwindcss/node_modules/.bin/tailwindcss-language-server",
  968. "--stdio",
  969. },
  970. },
  971. },
  972. },
  973. terraform = {
  974. formatters = {
  975. -- {
  976. -- exe = "terraform_fmt",
  977. -- args = {},
  978. -- },
  979. },
  980. linters = {},
  981. lsp = {
  982. provider = "terraformls",
  983. setup = {
  984. cmd = {
  985. ls_install_prefix .. "/terraform/terraform-ls",
  986. "serve",
  987. },
  988. },
  989. },
  990. },
  991. tex = {
  992. formatters = {},
  993. linters = {},
  994. lsp = {
  995. provider = "texlab",
  996. setup = {
  997. cmd = { ls_install_prefix .. "/latex/texlab" },
  998. },
  999. },
  1000. },
  1001. typescript = {
  1002. formatters = {
  1003. -- {
  1004. -- exe = "prettier",
  1005. -- args = {},
  1006. -- },
  1007. -- {
  1008. -- exe = "prettierd",
  1009. -- args = {},
  1010. -- },
  1011. -- {
  1012. -- exe = "prettier_d_slim",
  1013. -- args = {},
  1014. -- },
  1015. },
  1016. linters = {},
  1017. lsp = {
  1018. provider = "tsserver",
  1019. setup = {
  1020. cmd = {
  1021. -- TODO:
  1022. ls_install_prefix .. "/typescript/node_modules/.bin/typescript-language-server",
  1023. "--stdio",
  1024. },
  1025. },
  1026. },
  1027. },
  1028. typescriptreact = {
  1029. formatters = {
  1030. -- {
  1031. -- exe = "prettier",
  1032. -- args = {},
  1033. -- },
  1034. -- {
  1035. -- exe = "prettierd",
  1036. -- args = {},
  1037. -- },
  1038. -- {
  1039. -- exe = "prettier_d_slim",
  1040. -- args = {},
  1041. -- },
  1042. },
  1043. -- @usage can be {"eslint"} or {"eslint_d"}
  1044. linters = {},
  1045. lsp = {
  1046. provider = "tsserver",
  1047. setup = {
  1048. cmd = {
  1049. -- TODO:
  1050. ls_install_prefix .. "/typescript/node_modules/.bin/typescript-language-server",
  1051. "--stdio",
  1052. },
  1053. },
  1054. },
  1055. },
  1056. vim = {
  1057. formatters = {},
  1058. linters = {},
  1059. lsp = {
  1060. provider = "vimls",
  1061. setup = {
  1062. cmd = {
  1063. ls_install_prefix .. "/vim/node_modules/.bin/vim-language-server",
  1064. "--stdio",
  1065. },
  1066. },
  1067. },
  1068. },
  1069. vue = {
  1070. formatters = {
  1071. -- {
  1072. -- exe = "prettier",
  1073. -- args = {},
  1074. -- },
  1075. -- {
  1076. -- exe = "prettierd",
  1077. -- args = {},
  1078. -- },
  1079. -- {
  1080. -- exe = "prettier_d_slim",
  1081. -- args = {},
  1082. -- },
  1083. },
  1084. linters = {},
  1085. lsp = {
  1086. provider = "vuels",
  1087. setup = {
  1088. cmd = {
  1089. ls_install_prefix .. "/vue/node_modules/.bin/vls",
  1090. },
  1091. root_dir = function(fname)
  1092. local util = require "lspconfig/util"
  1093. return util.root_pattern "package.json"(fname) or util.root_pattern "vue.config.js"(fname) or vim.fn.getcwd()
  1094. end,
  1095. init_options = {
  1096. config = {
  1097. vetur = {
  1098. completion = {
  1099. autoImport = true,
  1100. tagCasing = "kebab",
  1101. useScaffoldSnippets = true,
  1102. },
  1103. useWorkspaceDependencies = true,
  1104. validation = {
  1105. script = true,
  1106. style = true,
  1107. template = true,
  1108. },
  1109. },
  1110. },
  1111. },
  1112. },
  1113. },
  1114. },
  1115. yaml = {
  1116. formatters = {
  1117. -- {
  1118. -- exe = "prettier",
  1119. -- args = {},
  1120. -- },
  1121. -- {
  1122. -- exe = "prettierd",
  1123. -- args = {},
  1124. -- },
  1125. },
  1126. linters = {},
  1127. lsp = {
  1128. provider = "yamlls",
  1129. setup = {
  1130. cmd = {
  1131. ls_install_prefix .. "/yaml/node_modules/.bin/yaml-language-server",
  1132. "--stdio",
  1133. },
  1134. },
  1135. },
  1136. },
  1137. zig = {
  1138. formatters = {},
  1139. linters = {},
  1140. lsp = {
  1141. provider = "zls",
  1142. setup = {
  1143. cmd = {
  1144. "zls",
  1145. },
  1146. },
  1147. },
  1148. },
  1149. gdscript = {
  1150. formatters = {},
  1151. linters = {},
  1152. lsp = {
  1153. provider = "gdscript",
  1154. setup = {
  1155. cmd = {
  1156. "nc",
  1157. "localhost",
  1158. "6008",
  1159. },
  1160. },
  1161. },
  1162. },
  1163. ps1 = {
  1164. formatters = {},
  1165. linters = {},
  1166. lsp = {
  1167. provider = "powershell_es",
  1168. setup = {
  1169. bundle_path = "",
  1170. },
  1171. },
  1172. },
  1173. nix = {
  1174. formatters = {
  1175. -- {
  1176. -- exe = "nixfmt",
  1177. -- args = {},
  1178. -- },
  1179. },
  1180. linters = {},
  1181. lsp = {
  1182. provider = "rnix",
  1183. setup = {
  1184. cmd = { "rnix-lsp" },
  1185. filetypes = { "nix" },
  1186. init_options = {},
  1187. settings = {},
  1188. root_dir = function(fname)
  1189. local util = require "lspconfig/util"
  1190. return util.root_pattern ".git"(fname) or vim.fn.getcwd()
  1191. end,
  1192. },
  1193. },
  1194. },
  1195. }