defaults.lua 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206
  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. vim.cmd [[ set spellfile=~/.config/lvim/spell/en.utf-8.add ]]
  6. lvim = {
  7. leader = "space",
  8. colorscheme = "onedarker",
  9. line_wrap_cursor_movement = true,
  10. transparent_window = false,
  11. format_on_save = true,
  12. vsnip_dir = home_dir .. "/.config/snippets",
  13. database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },
  14. keys = {},
  15. builtin = {},
  16. log = {
  17. ---@usage can be { "trace", "debug", "info", "warn", "error", "fatal" },
  18. level = "warn",
  19. viewer = {
  20. ---@usage this will fallback on "less +F" if not found
  21. cmd = "lnav",
  22. layout_config = {
  23. ---@usage direction = 'vertical' | 'horizontal' | 'window' | 'float',
  24. direction = "horizontal",
  25. open_mapping = "",
  26. size = 40,
  27. float_opts = {},
  28. },
  29. },
  30. },
  31. lsp = {
  32. completion = {
  33. item_kind = {
  34. "  (Text) ",
  35. "  (Method)",
  36. "  (Function)",
  37. "  (Constructor)",
  38. "  (Field)",
  39. "  (Variable)",
  40. "  (Class)",
  41. " ﰮ (Interface)",
  42. "  (Module)",
  43. "  (Property)",
  44. " 塞 (Unit)",
  45. "  (Value)",
  46. " 練 (Enum)",
  47. "  (Keyword)",
  48. "  (Snippet)",
  49. "  (Color)",
  50. "  (File)",
  51. "  (Reference)",
  52. "  (Folder)",
  53. "  (EnumMember)",
  54. " ﲀ (Constant)",
  55. "  (Struct)",
  56. "  (Event)",
  57. "  (Operator)",
  58. "  (TypeParameter)",
  59. },
  60. },
  61. diagnostics = {
  62. signs = {
  63. active = true,
  64. values = {
  65. { name = "LspDiagnosticsSignError", text = "" },
  66. { name = "LspDiagnosticsSignWarning", text = "" },
  67. { name = "LspDiagnosticsSignHint", text = "" },
  68. { name = "LspDiagnosticsSignInformation", text = "" },
  69. },
  70. },
  71. virtual_text = {
  72. prefix = "",
  73. spacing = 0,
  74. },
  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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-language-server",
  384. },
  385. -- init_options = {
  386. -- elmAnalyseTrigger = "change",
  387. -- elmFormatPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-format",
  388. -- elmPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/",
  389. -- elmTestPath = DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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 = { DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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 = { DATA_PATH .. "/lspinstall/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. DATA_PATH .. "/lspinstall/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. -- vim.fn.expand "~/.config/nvim/lua/lsp/julia/run.jl",
  585. CONFIG_PATH .. "/utils/julia/run.jl",
  586. },
  587. },
  588. },
  589. },
  590. kotlin = {
  591. formatters = {},
  592. linters = {},
  593. lsp = {
  594. provider = "kotlin_language_server",
  595. setup = {
  596. cmd = {
  597. DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server",
  598. },
  599. root_dir = function(fname)
  600. local util = require "lspconfig/util"
  601. local root_files = {
  602. "settings.gradle", -- Gradle (multi-project)
  603. "settings.gradle.kts", -- Gradle (multi-project)
  604. "build.xml", -- Ant
  605. "pom.xml", -- Maven
  606. }
  607. local fallback_root_files = {
  608. "build.gradle", -- Gradle
  609. "build.gradle.kts", -- Gradle
  610. }
  611. return util.root_pattern(unpack(root_files))(fname) or util.root_pattern(unpack(fallback_root_files))(fname)
  612. end,
  613. },
  614. },
  615. },
  616. lua = {
  617. formatters = {
  618. -- {
  619. -- exe = "stylua",
  620. -- args = {},
  621. -- },
  622. -- {
  623. -- exe = "lua_format",
  624. -- args = {},
  625. -- },
  626. },
  627. linters = {},
  628. lsp = {
  629. provider = "sumneko_lua",
  630. setup = {
  631. cmd = {
  632. DATA_PATH .. "/lspinstall/lua/sumneko-lua-language-server",
  633. "-E",
  634. DATA_PATH .. "/lspinstall/lua/main.lua",
  635. },
  636. settings = {
  637. Lua = {
  638. runtime = {
  639. -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
  640. version = "LuaJIT",
  641. -- Setup your lua path
  642. path = vim.split(package.path, ";"),
  643. },
  644. diagnostics = {
  645. -- Get the language server to recognize the `vim` global
  646. globals = { "vim", "lvim" },
  647. },
  648. workspace = {
  649. -- Make the server aware of Neovim runtime files
  650. library = {
  651. [vim.fn.expand "~/.local/share/lunarvim/lvim/lua"] = true,
  652. [vim.fn.expand "$VIMRUNTIME/lua"] = true,
  653. [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
  654. },
  655. maxPreload = 100000,
  656. preloadFileSize = 1000,
  657. },
  658. },
  659. },
  660. },
  661. },
  662. },
  663. nginx = {
  664. formatters = {
  665. -- {
  666. -- exe = "nginx_beautifier",
  667. -- args = {
  668. -- provider = "",
  669. -- setup = {},
  670. -- },
  671. -- },
  672. },
  673. linters = {},
  674. lsp = {},
  675. },
  676. perl = {
  677. formatters = {
  678. -- {
  679. -- exe = "perltidy",
  680. -- args = {},
  681. -- },
  682. },
  683. linters = {},
  684. lsp = {
  685. provider = "",
  686. setup = {},
  687. },
  688. },
  689. solidity = {
  690. formatters = {},
  691. linters = {},
  692. lsp = {
  693. provider = "solang",
  694. setup = {
  695. cmd = { "solang", "--language-server" },
  696. },
  697. },
  698. },
  699. sql = {
  700. formatters = {
  701. -- {
  702. -- exe = "sqlformat",
  703. -- args = {},
  704. -- },
  705. },
  706. linters = {},
  707. lsp = {
  708. provider = "sqls",
  709. setup = {
  710. cmd = { "sqls" },
  711. },
  712. },
  713. },
  714. php = {
  715. formatters = {
  716. -- {
  717. -- exe = "phpcbf",
  718. -- args = {},
  719. -- },
  720. },
  721. linters = {},
  722. lsp = {
  723. provider = "intelephense",
  724. setup = {
  725. cmd = {
  726. DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense",
  727. "--stdio",
  728. },
  729. filetypes = { "php", "phtml" },
  730. settings = {
  731. intelephense = {
  732. environment = {
  733. phpVersion = "7.4",
  734. },
  735. },
  736. },
  737. },
  738. },
  739. },
  740. puppet = {
  741. formatters = {},
  742. linters = {},
  743. lsp = {
  744. provider = "puppet",
  745. setup = {
  746. cmd = {
  747. DATA_PATH .. "/lspinstall/puppet/puppet-editor-services/puppet-languageserver",
  748. "--stdio",
  749. },
  750. },
  751. },
  752. },
  753. javascript = {
  754. formatters = {
  755. -- {
  756. -- exe = "prettier",
  757. -- args = {},
  758. -- },
  759. -- {
  760. -- exe = "prettier_d_slim",
  761. -- args = {},
  762. -- },
  763. -- {
  764. -- exe = "prettierd",
  765. -- args = {},
  766. -- },
  767. },
  768. -- @usage can be {"eslint"} or {"eslint_d"}
  769. linters = {},
  770. lsp = {
  771. provider = "tsserver",
  772. setup = {
  773. cmd = {
  774. -- TODO:
  775. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  776. "--stdio",
  777. },
  778. },
  779. },
  780. },
  781. javascriptreact = {
  782. formatters = {
  783. -- {
  784. -- exe = "prettier",
  785. -- args = {},
  786. -- },
  787. -- {
  788. -- exe = "prettier_d_slim",
  789. -- args = {},
  790. -- },
  791. -- {
  792. -- exe = "prettierd",
  793. -- args = {},
  794. -- },
  795. },
  796. linters = {},
  797. lsp = {
  798. provider = "tsserver",
  799. setup = {
  800. cmd = {
  801. -- TODO:
  802. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  803. "--stdio",
  804. },
  805. },
  806. },
  807. },
  808. python = {
  809. formatters = {
  810. -- {
  811. -- exe = "yapf",
  812. -- args = {},
  813. -- },
  814. -- {
  815. -- exe = "isort",
  816. -- args = {},
  817. -- },
  818. },
  819. linters = {},
  820. lsp = {
  821. provider = "pyright",
  822. setup = {
  823. cmd = {
  824. DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
  825. "--stdio",
  826. },
  827. },
  828. },
  829. },
  830. -- R -e 'install.packages("formatR",repos = "http://cran.us.r-project.org")'
  831. -- R -e 'install.packages("readr",repos = "http://cran.us.r-project.org")'
  832. r = {
  833. formatters = {
  834. -- {
  835. -- exe = "format_r",
  836. -- args = {},
  837. -- },
  838. },
  839. linters = {},
  840. lsp = {
  841. provider = "r_language_server",
  842. setup = {
  843. cmd = {
  844. "R",
  845. "--slave",
  846. "-e",
  847. "languageserver::run()",
  848. },
  849. },
  850. },
  851. },
  852. ruby = {
  853. formatters = {
  854. -- {
  855. -- exe = "rufo",
  856. -- args = {},
  857. -- },
  858. },
  859. linters = {},
  860. lsp = {
  861. provider = "solargraph",
  862. setup = {
  863. cmd = {
  864. DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
  865. "stdio",
  866. },
  867. filetypes = { "ruby" },
  868. init_options = {
  869. formatting = true,
  870. },
  871. root_dir = function(fname)
  872. local util = require("lspconfig").util
  873. return util.root_pattern("Gemfile", ".git")(fname)
  874. end,
  875. settings = {
  876. solargraph = {
  877. diagnostics = true,
  878. },
  879. },
  880. },
  881. },
  882. },
  883. rust = {
  884. formatters = {
  885. -- {
  886. -- exe = "rustfmt",
  887. -- args = {},
  888. -- },
  889. },
  890. linters = {},
  891. lsp = {
  892. provider = "rust_analyzer",
  893. setup = {
  894. cmd = {
  895. DATA_PATH .. "/lspinstall/rust/rust-analyzer",
  896. },
  897. },
  898. },
  899. },
  900. scala = {
  901. formatters = {
  902. -- {
  903. -- exe = "scalafmt",
  904. -- args = {},
  905. -- },
  906. },
  907. linters = {},
  908. lsp = {
  909. provider = "metals",
  910. setup = {},
  911. },
  912. },
  913. sh = {
  914. formatters = {
  915. -- {
  916. -- exe = "shfmt",
  917. -- args = {},
  918. -- },
  919. },
  920. linters = {},
  921. lsp = {
  922. provider = "bashls",
  923. setup = {
  924. cmd = {
  925. DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
  926. "start",
  927. },
  928. },
  929. },
  930. },
  931. svelte = {
  932. formatters = {},
  933. linters = {},
  934. lsp = {
  935. provider = "svelte",
  936. setup = {
  937. cmd = {
  938. DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver",
  939. "--stdio",
  940. },
  941. },
  942. },
  943. },
  944. swift = {
  945. formatters = {
  946. -- {
  947. -- exe = "swiftformat",
  948. -- args = {},
  949. -- },
  950. },
  951. linters = {},
  952. lsp = {
  953. provider = "sourcekit",
  954. setup = {
  955. cmd = {
  956. "xcrun",
  957. "sourcekit-lsp",
  958. },
  959. },
  960. },
  961. },
  962. tailwindcss = {
  963. lsp = {
  964. active = false,
  965. provider = "tailwindcss",
  966. setup = {
  967. cmd = {
  968. DATA_PATH .. "/lspinstall/tailwindcss/node_modules/.bin/tailwindcss-language-server",
  969. "--stdio",
  970. },
  971. },
  972. },
  973. },
  974. terraform = {
  975. formatters = {
  976. -- {
  977. -- exe = "terraform_fmt",
  978. -- args = {},
  979. -- },
  980. },
  981. linters = {},
  982. lsp = {
  983. provider = "terraformls",
  984. setup = {
  985. cmd = {
  986. DATA_PATH .. "/lspinstall/terraform/terraform-ls",
  987. "serve",
  988. },
  989. },
  990. },
  991. },
  992. tex = {
  993. formatters = {},
  994. linters = {},
  995. lsp = {
  996. provider = "texlab",
  997. setup = {
  998. cmd = { DATA_PATH .. "/lspinstall/latex/texlab" },
  999. },
  1000. },
  1001. },
  1002. typescript = {
  1003. formatters = {
  1004. -- {
  1005. -- exe = "prettier",
  1006. -- args = {},
  1007. -- },
  1008. -- {
  1009. -- exe = "prettierd",
  1010. -- args = {},
  1011. -- },
  1012. -- {
  1013. -- exe = "prettier_d_slim",
  1014. -- args = {},
  1015. -- },
  1016. },
  1017. linters = {},
  1018. lsp = {
  1019. provider = "tsserver",
  1020. setup = {
  1021. cmd = {
  1022. -- TODO:
  1023. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  1024. "--stdio",
  1025. },
  1026. },
  1027. },
  1028. },
  1029. typescriptreact = {
  1030. formatters = {
  1031. -- {
  1032. -- exe = "prettier",
  1033. -- args = {},
  1034. -- },
  1035. -- {
  1036. -- exe = "prettierd",
  1037. -- args = {},
  1038. -- },
  1039. -- {
  1040. -- exe = "prettier_d_slim",
  1041. -- args = {},
  1042. -- },
  1043. },
  1044. -- @usage can be {"eslint"} or {"eslint_d"}
  1045. linters = {},
  1046. lsp = {
  1047. provider = "tsserver",
  1048. setup = {
  1049. cmd = {
  1050. -- TODO:
  1051. DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  1052. "--stdio",
  1053. },
  1054. },
  1055. },
  1056. },
  1057. vim = {
  1058. formatters = {},
  1059. linters = {},
  1060. lsp = {
  1061. provider = "vimls",
  1062. setup = {
  1063. cmd = {
  1064. DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server",
  1065. "--stdio",
  1066. },
  1067. },
  1068. },
  1069. },
  1070. vue = {
  1071. formatters = {
  1072. -- {
  1073. -- exe = "prettier",
  1074. -- args = {},
  1075. -- },
  1076. -- {
  1077. -- exe = "prettierd",
  1078. -- args = {},
  1079. -- },
  1080. -- {
  1081. -- exe = "prettier_d_slim",
  1082. -- args = {},
  1083. -- },
  1084. },
  1085. linters = {},
  1086. lsp = {
  1087. provider = "vuels",
  1088. setup = {
  1089. cmd = {
  1090. DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",
  1091. },
  1092. root_dir = function(fname)
  1093. local util = require "lspconfig/util"
  1094. return util.root_pattern "package.json"(fname) or util.root_pattern "vue.config.js"(fname) or vim.fn.getcwd()
  1095. end,
  1096. init_options = {
  1097. config = {
  1098. vetur = {
  1099. completion = {
  1100. autoImport = true,
  1101. tagCasing = "kebab",
  1102. useScaffoldSnippets = true,
  1103. },
  1104. useWorkspaceDependencies = true,
  1105. validation = {
  1106. script = true,
  1107. style = true,
  1108. template = true,
  1109. },
  1110. },
  1111. },
  1112. },
  1113. },
  1114. },
  1115. },
  1116. yaml = {
  1117. formatters = {
  1118. -- {
  1119. -- exe = "prettier",
  1120. -- args = {},
  1121. -- },
  1122. -- {
  1123. -- exe = "prettierd",
  1124. -- args = {},
  1125. -- },
  1126. },
  1127. linters = {},
  1128. lsp = {
  1129. provider = "yamlls",
  1130. setup = {
  1131. cmd = {
  1132. DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server",
  1133. "--stdio",
  1134. },
  1135. },
  1136. },
  1137. },
  1138. zig = {
  1139. formatters = {},
  1140. linters = {},
  1141. lsp = {
  1142. provider = "zls",
  1143. setup = {
  1144. cmd = {
  1145. "zls",
  1146. },
  1147. },
  1148. },
  1149. },
  1150. gdscript = {
  1151. formatters = {},
  1152. linters = {},
  1153. lsp = {
  1154. provider = "gdscript",
  1155. setup = {
  1156. cmd = {
  1157. "nc",
  1158. "localhost",
  1159. "6008",
  1160. },
  1161. },
  1162. },
  1163. },
  1164. ps1 = {
  1165. formatters = {},
  1166. linters = {},
  1167. lsp = {
  1168. provider = "powershell_es",
  1169. setup = {
  1170. bundle_path = "",
  1171. },
  1172. },
  1173. },
  1174. nix = {
  1175. formatters = {
  1176. -- {
  1177. -- exe = "nixfmt",
  1178. -- args = {},
  1179. -- },
  1180. },
  1181. linters = {},
  1182. lsp = {
  1183. provider = "rnix",
  1184. setup = {
  1185. cmd = { "rnix-lsp" },
  1186. filetypes = { "nix" },
  1187. init_options = {},
  1188. settings = {},
  1189. root_dir = function(fname)
  1190. local util = require "lspconfig/util"
  1191. return util.root_pattern ".git"(fname) or vim.fn.getcwd()
  1192. end,
  1193. },
  1194. },
  1195. },
  1196. }