defaults.lua 24 KB

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