]> git.lizzy.rs Git - micro.git/blobdiff - runtime/plugins/linter/linter.lua
Update linter to include eslint
[micro.git] / runtime / plugins / linter / linter.lua
index eb82059d4fa04c663e1f3ddd4fa0c3ed9811401a..0bb312ec0579e9a2aa58ee4f9a6c7bc41e653e5a 100644 (file)
@@ -6,6 +6,8 @@ local filepath = import("path/filepath")
 local shell = import("micro/shell")
 local buffer = import("micro/buffer")
 local config = import("micro/config")
+local util = import("micro/util")
+local os = import("os")
 
 local linters = {}
 
@@ -64,10 +66,12 @@ function init()
     end
 
     makeLinter("gcc", "c", "gcc", {"-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m")
-    makeLinter("gcc", "c++", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m")
+    makeLinter("g++", "c++", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m")
     makeLinter("dmd", "d", "dmd", {"-color=off", "-o-", "-w", "-wi", "-c", "%f"}, "%f%(%l%):.+: %m")
-    makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l:%c:? %m")
+    makeLinter("eslint", "javascript", "eslint", {"-f","compact","%f"}, "%f: line %l, col %c, %m")
+    makeLinter("gobuild", "go", "go", {"build", "-o", devnull, "%d"}, "%f:%l:%c:? %m")
     -- makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%c: %m")
+    makeLinter("hlint", "haskell", "hlint", {"%f"}, "%f:%l:%c.-: %m")
     makeLinter("javac", "java", "javac", {"-d", "%d", "%f"}, "%f:%l: error: %m")
     makeLinter("jshint", "javascript", "jshint", {"%f"}, "%f: line %l,.+, %m")
     makeLinter("literate", "literate", "lit", {"-c", "%f"}, "%f:%l:%m", {}, false, true)
@@ -82,12 +86,12 @@ function init()
     makeLinter("swiftc", "swiftc", {"%f"}, "%f:%l:%c:.+: %m", {"linux"}, true)
     makeLinter("yaml", "yaml", "yamllint", {"--format", "parsable", "%f"}, "%f:%l:%c:.+ %m")
 
-    config.MakeCommand("lint", "linter.lintCmd", config.NoComplete)
-end
+    config.MakeCommand("lint", function(bp, args)
+        bp:Save()
+        runLinter(bp.Buf)
+    end, config.NoComplete)
 
-function lintCmd(bp, args)
-    bp:Save()
-    runLinter(bp.Buf)
+    config.AddRuntimeFile("linter", config.RTHelp, "help/linter.md")
 end
 
 function contains(list, element)
@@ -102,7 +106,7 @@ end
 function runLinter(buf)
     local ft = buf:FileType()
     local file = buf.Path
-    local dir = filepath.Dir(file)
+    local dir = "." .. util.RuneStr(os.PathSeparator) .. filepath.Dir(file)
 
     for k, v in pairs(linters) do
         local ftmatch = ft == v.filetype
@@ -143,7 +147,7 @@ function lint(buf, linter, cmd, args, errorformat, loff, coff, callback)
         end
     end
 
-    shell.JobSpawn(cmd, args, "", "", "linter.onExit", buf, linter, errorformat, loff, coff)
+    shell.JobSpawn(cmd, args, nil, nil, onExit, buf, linter, errorformat, loff, coff)
 end
 
 function onExit(output, args)