defaults.lua 24 KB

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