瀏覽代碼

add eslint and eslint_d to efm (#877)

William Goulois 4 年之前
父節點
當前提交
26c5c74303
共有 2 個文件被更改,包括 25 次插入14 次删除
  1. 1 1
      lua/default-config.lua
  2. 24 13
      lua/lsp/ts-fmt-lint.lua

+ 1 - 1
lua/default-config.lua

@@ -266,7 +266,7 @@ O = {
     },
     terraform = {},
     tsserver = {
-      -- @usage can be 'eslint'
+      -- @usage can be 'eslint' or 'eslint_d'
       linter = "",
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },

+ 24 - 13
lua/lsp/ts-fmt-lint.lua

@@ -5,30 +5,41 @@ local M = {}
 M.setup = function()
   local tsserver_args = {}
 
-  local prettier = {
-    formatCommand = "prettier --stdin-filepath ${INPUT}",
-    formatStdin = true,
-  }
-
-  if vim.fn.glob "node_modules/.bin/prettier" ~= "" then
-    prettier = {
-      formatCommand = "./node_modules/.bin/prettier --stdin-filepath ${INPUT}",
+  if O.lang.tsserver.linter == "eslint" or O.lang.tsserver.linter == "eslint_d" then
+    local eslint = {
+      lintCommand = O.lang.tsserver.linter .. " -f unix --stdin --stdin-filename   {INPUT}",
+      lintStdin = true,
+      lintFormats = { "%f:%l:%c: %m" },
+      lintIgnoreExitCode = true,
+      formatCommand = O.lang.tsserver.linter .. " --fix-to-stdout --stdin  --stdin-filename=${INPUT}",
       formatStdin = true,
     }
+    table.insert(tsserver_args, eslint)
   end
 
   require("lspconfig").efm.setup {
     -- init_options = {initializationOptions},
     cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
     init_options = { documentFormatting = true, codeAction = false },
-    filetypes = { "html", "css", "yaml", "vue", "javascript", "javascriptreact", "typescript", "typescriptreact" },
+    filetypes = {
+      "vue",
+      "javascript",
+      "javascriptreact",
+      "typescript",
+      "typescriptreact",
+      "javascript.jsx",
+      "typescript.tsx",
+    },
     settings = {
       rootMarkers = { ".git/", "package.json" },
       languages = {
-        html = { prettier },
-        css = { prettier },
-        json = { prettier },
-        yaml = { prettier },
+        vue = tsserver_args,
+        javascript = tsserver_args,
+        javascriptreact = tsserver_args,
+        ["javascript.jsx"] = tsserver_args,
+        typescript = tsserver_args,
+        ["typescript.tsx"] = tsserver_args,
+        typescriptreact = tsserver_args,
       },
     },
   }