defaults.lua 24 KB

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