]> git.lizzy.rs Git - micro.git/commitdiff
Lua prompt support and plugin improvements
authorZachary Yedidia <zyedidia@gmail.com>
Tue, 24 Dec 2019 22:17:44 +0000 (17:17 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Wed, 25 Dec 2019 22:05:11 +0000 (17:05 -0500)
internal/action/bufpane.go
internal/action/command.go
internal/config/runtime.go
internal/info/infobuffer.go
internal/shell/job.go
internal/shell/terminal.go
runtime/plugins/comment/comment.lua
runtime/plugins/linter/linter.lua

index 17a0220d3c375c86cd518fc5262c7dd7f65cd537..4c70669b1e5d904ffb79161b6b353155aa0187b3 100644 (file)
@@ -68,6 +68,10 @@ func BufMapKey(k Event, action string) {
                } else if strings.HasPrefix(a, "lua:") {
                        a = strings.SplitN(a, ":", 2)[1]
                        afn = LuaAction(a)
+                       if afn == nil {
+                               screen.TermMessage("Lua Error:", action, "does not exist")
+                               continue
+                       }
                } else if f, ok := BufKeyActions[a]; ok {
                        afn = f
                } else {
index 1fe25babce298bcb517233802198d9953b4f110e..aaafb57037dc017a362c6b54d8a2cd9d7afb6fee 100644 (file)
@@ -89,11 +89,7 @@ func LuaFunctionCommand(fn string) func(*BufPane, []string) {
                return nil
        }
        return func(bp *BufPane, args []string) {
-               var luaArgs []lua.LValue
-               luaArgs = append(luaArgs, luar.New(ulua.L, bp))
-               for _, v := range args {
-                       luaArgs = append(luaArgs, luar.New(ulua.L, v))
-               }
+               luaArgs := []lua.LValue{luar.New(ulua.L, bp), luar.New(ulua.L, args)}
                _, err := pl.Call(plFn, luaArgs...)
                if err != nil {
                        screen.TermMessage(err)
index e1d0deb8a6166b95da806a348545672040260244..392616d0824fff0f171fe6398e59efa449d9d6d7 100644 (file)
@@ -1108,7 +1108,7 @@ func runtimePluginsAutocloseInfoJson() (*asset, error) {
        return a, nil
 }
 
-var _runtimePluginsCommentCommentLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\x5b\x6f\x2b\x35\x10\x7e\xcf\xaf\x30\x7b\x88\x64\xb7\xd9\xed\x49\x79\x8b\x08\x12\xed\x43\x91\x08\x07\xa9\xad\x20\x55\x14\xa4\xbd\xcc\x26\x3e\x78\xbd\x2b\xdb\x0b\x44\x08\x7e\x3b\xf2\x65\xaf\xde\x84\x1c\x21\xc1\x0b\x95\xda\x6c\x3e\xcf\x37\x63\xcf\x7c\xe3\xd9\xb2\x32\x8d\x19\xaa\x15\x65\x68\x8d\x68\x51\x95\x42\xe1\xa0\xa0\xa9\x28\xef\x34\x18\x90\x99\xb5\x48\x4b\x9e\xd3\x83\x67\x63\xe1\xd6\x2a\xa9\xf3\x1c\x84\x67\x65\xe1\x80\xcc\x9c\x59\xae\xd0\x1a\xfd\xfe\xc7\x6c\x96\xab\x5d\x90\x06\x7b\xb4\x46\xc1\xdd\x1d\x9a\xcb\xc0\x22\xb7\xb7\x1e\x76\x28\x3d\xa8\x3a\xa9\x63\xc9\x2d\xfc\x6e\x84\x7e\x31\x86\x8f\xaa\x60\x16\xfb\xf2\xb3\x30\x44\x73\x89\xc2\xf0\x2b\xbb\xf4\x31\xfe\x25\xf6\x9c\x7f\xac\x19\x8d\x3d\xdf\x20\x98\x87\x1d\x2b\x8f\x2c\x6a\xa9\x3c\x50\x1e\x81\x79\x6c\x56\xbb\x20\x66\x4f\xdd\x7e\x64\x2a\x68\xe5\xfb\x10\x75\x72\x1a\xbb\xc8\xfc\x48\xbf\xd2\x7c\xc8\x9d\xe5\x35\x4f\x15\x2d\x39\x2a\xf9\x83\x29\xc6\xf7\x15\x70\x9c\xd4\x39\x99\x21\x84\x10\xcd\x75\xe9\xa2\x17\x50\x8a\xf2\x83\xdc\x05\x69\x59\x14\xc0\x95\x3a\x55\xa0\x1d\xad\x11\xa7\x0c\xa9\x23\x70\x63\xee\x28\xb9\xda\x0d\x59\x39\x65\x60\x29\x7b\xf4\xe7\x04\x47\xff\x5c\x8c\x73\xd1\x65\xeb\x06\x98\x84\x4f\xf0\xe9\x72\xd5\xb2\x79\x36\x6b\x3e\xf5\x6f\x97\x1b\x47\xdc\x50\x0e\x38\xa9\x16\x88\x51\x0e\x1f\x6c\x82\xac\x6e\x35\x80\xd6\x28\xa9\xa2\x87\x3a\x5f\x19\x3b\xcf\xc6\x39\x79\x3d\x55\x9d\xe9\xb9\xcd\xf9\xb4\x67\x38\xc0\x6f\x7a\xcf\x3f\xcd\xe5\x4d\x80\xa2\xa8\xef\x6f\x75\x90\x75\x82\x83\xf9\x4d\xb0\x40\xfa\x2f\x69\x80\xd0\x00\x61\x07\x44\x06\x88\x3a\xe0\xd6\x00\xb7\x1d\xb0\x37\xc0\xbe\x03\x76\x06\xd8\x75\xc0\x5c\x6a\x04\x47\x37\x24\xe8\x9f\x4f\x82\xbe\x29\xc2\xa4\x8a\x1e\x6b\x21\x4b\xa1\x3f\x5e\x80\x81\x49\x61\xff\x40\xb5\xa8\x4a\x39\x34\xdd\x94\x69\xcf\x82\xf2\xcc\x9c\x55\x2a\x41\xf9\x21\xca\x29\xcf\x70\xef\xb4\x7a\x3b\x73\x19\x10\x14\xa2\x65\x23\x52\x67\x5a\xc4\x2a\x3d\x9a\xd4\x2f\x06\x89\x23\x43\xb9\xd5\xdc\x2d\x42\xb6\xb1\x95\xfb\x3b\x7e\x4b\x75\x25\x7e\x86\x8a\xc5\x29\x60\x7b\x81\xe9\xfd\xe3\xf7\x8d\x2e\x16\xa8\x87\xbe\xb3\xce\x9a\x15\x7d\x75\x46\x4f\xa0\x36\x10\x67\x94\x1f\x7e\x3c\x52\x05\xb2\xd2\x9e\xb4\x05\xd1\x75\x1d\x6d\x8e\xf4\x1b\xab\xcd\xd8\xea\x9b\x58\xb6\xc9\xc5\x64\xa2\x9b\x26\xcb\xb0\x5b\xee\xa3\x37\x7d\x5c\x60\xe6\xf1\x1a\xca\x7d\x47\xb9\xbf\x92\xb2\xdc\x47\xdb\x2e\xca\xf6\xca\x28\xdb\x2e\xca\xf6\x42\x4b\xb7\x7c\x6d\x6f\xc5\x14\x6d\x51\x68\x55\x73\xc6\xf4\xad\x33\x7d\xf3\xfb\xbd\x1f\x62\xd0\x74\xad\x3c\x26\x7a\xcd\x74\x81\x12\xb4\xb0\x95\xfb\x37\x15\xf2\xbf\x3e\x3e\x5d\x1f\xb7\xff\x40\x1f\xee\xb3\x4b\xee\x33\x68\x99\x28\xc0\x64\xb8\x10\x6d\x62\xa9\x7e\xa0\xb2\x8e\xd9\xd6\xde\xf1\x8e\xf0\x04\x0d\x8c\xc9\xf4\x6c\xe9\x8a\xa5\x07\x8c\x54\xb1\x30\xe3\x66\xa1\xa3\x77\x65\xce\x4b\xd1\xcc\x1a\xdf\x04\x65\x65\xbb\xf7\xa9\x89\x45\x2e\x4f\x37\x9c\x54\xdd\xcc\xbf\x4a\x47\x7d\xc3\x71\x81\x57\x4f\x02\x62\x05\xe2\xf5\x18\x73\x7c\x66\x28\xec\xee\xf7\x13\xca\xb4\x1d\xd8\x9c\x69\x7d\x49\xa9\x03\xde\xa5\xdd\x68\x2d\xac\xd1\x7b\x3f\x98\xcb\x88\x0b\xd5\x3c\x35\x83\x65\xac\x84\x51\x76\x87\x35\xbb\xd0\x1e\xa3\x2a\x4e\xea\xf6\xca\x63\x7b\x2d\x76\xfe\xd8\xf7\xff\xe5\xb1\x97\x67\x8e\x3d\x75\xe7\x8e\xc5\xda\xeb\xcb\x73\x9a\x35\x17\xaf\xb4\xab\x02\x54\x2d\x38\xc2\xd2\x5d\xcd\xfa\x0d\x09\x47\x21\x99\xcb\x9b\xcf\xcd\xbb\xcb\x32\x20\xe3\xae\x73\xf3\xde\x34\x91\xc4\x2f\xe6\xdb\xe2\x45\x7f\x1b\xf8\x6c\xcc\xea\xa4\xb1\x59\x2e\x1c\xc6\x80\x63\x4b\x20\xeb\xb5\x79\xb0\x21\xec\x3f\x3e\xd1\x77\xf1\xcf\xf0\x58\x16\x45\xcc\x33\xdc\xbc\xdb\xe9\xcd\xb8\xc7\xa8\x83\x1c\xe1\x43\xf9\x58\x16\x15\x03\x05\xa4\xf1\xf1\x2a\x4e\x0f\x94\x67\xdf\xc2\x09\x07\x5f\x33\x15\xde\x69\x07\xac\x8e\x57\xbe\x93\x3c\x66\x12\xc8\xec\xaf\x00\x00\x00\xff\xff\x93\xd1\x8d\x0e\xb5\x0d\x00\x00"
+var _runtimePluginsCommentCommentLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\xdf\x6f\xeb\x34\x14\x7e\xef\x5f\x61\x72\xa9\x64\x6f\x4d\x76\x3b\xde\x2a\x8a\xc4\xf6\x30\x24\xca\x45\xda\x26\xe8\x54\x15\xc9\x4d\x4f\x5a\x5f\x1c\x27\xb2\x1d\xa0\x42\xf0\xb7\x23\xff\xc8\x4f\xa7\xa5\x57\x48\xf0\xc2\xa4\x2d\xc9\x97\xef\x9c\x63\x9f\xf3\x1d\x9f\x8c\x17\x29\xe5\xa8\xd2\x8c\xa3\x25\x62\x79\x59\x48\x8d\xa3\x9c\xa5\xb2\xb8\x33\x60\x44\x26\x8e\x91\x16\x22\x63\x87\x80\xe3\xe0\x86\xb5\xab\xb2\x0c\x64\xc0\x72\x70\x44\x26\x9e\x96\x69\xb4\x44\xbf\xff\x31\x99\x64\x7a\x13\xa5\xd1\x16\x2d\x51\x74\x77\x87\xa6\x2a\x72\xc8\xed\x6d\x80\x1d\x8a\x00\x2a\x4f\xfa\x58\x08\x07\xbf\x1b\xa0\x5f\x0c\xe1\xa3\xce\xb9\xc3\xbe\xfc\x2c\x8e\xd1\x54\xa1\x38\xfe\xca\xbd\xfa\x48\x7f\xa1\x81\xf3\x8f\x15\x67\x34\xf0\x0d\x92\x07\xd8\xb1\x0c\x8c\x65\xa5\x74\x00\xaa\x23\xf0\xc0\x9a\x57\x3e\x88\x5d\x53\xbb\x1e\x95\x4a\x56\x86\x3e\x64\xb5\x3b\x0d\x5d\xec\xc3\x48\xbf\xb2\xac\x6f\x3b\xc9\x2a\x91\x6a\x56\x08\x54\x88\x07\x5b\x8c\xef\x4b\x10\x78\x57\x65\x64\x82\x10\x42\x2c\x33\xa5\x4b\x5e\x40\x6b\x26\x0e\x6a\x13\xa5\x45\x9e\x83\xd0\xfa\x54\x82\x71\xb4\x44\x82\x71\xa4\x8f\x20\x2c\xdd\x9b\x64\x7a\xd3\xb7\xca\x18\x07\x67\xb2\x45\x7f\x8e\xd8\x98\x9f\x8b\x71\x2e\xba\x6c\xdc\x00\x57\xf0\x09\x3e\x7d\xae\x1a\x6b\xb1\x9f\xd4\x57\xf3\xdb\xe6\xc6\x1b\xae\x98\x00\xbc\x2b\x67\x88\x33\x01\x1f\x5c\x82\x9c\x6e\x0d\x80\x96\x68\x57\x26\x0f\x55\xb6\xb0\xbc\x80\xe3\x9d\xbc\x9e\xca\x96\x7a\x6e\x71\xa1\xd9\x33\x1c\xe0\x37\xb3\xe6\x9f\xa6\xea\x26\x42\x49\xd2\xf5\xb7\x38\xa8\x6a\x87\xa3\xe9\x4d\x34\x43\xe6\x2f\xa9\x81\xd8\x02\x71\x0b\x24\x16\x48\x5a\xe0\xd6\x02\xb7\x2d\xb0\xb5\xc0\xb6\x05\x36\x16\xd8\xb4\xc0\x54\x19\x04\x27\x37\x24\xea\xee\x4f\x81\x39\x29\xe2\x5d\x99\x3c\x56\x52\x15\xd2\x5c\x5e\x80\x83\x4d\x61\x77\x43\x95\x2c\x0b\xd5\xa7\xae\x8a\xb4\xc3\x60\x62\x6f\xf7\xaa\xb4\x64\xe2\x90\x64\x4c\xec\x71\x67\xb7\x66\x39\x53\x15\x11\x14\xa3\x79\x2d\x52\x4f\xcd\xa9\x4e\x8f\x36\xf5\xb3\x5e\xe2\x48\x5f\x6e\x95\xf0\x2f\x61\xbf\x72\x95\xfb\x3b\xfb\xc6\xd4\x97\xf8\x19\x4a\x4e\x53\xc0\xee\x00\x33\xeb\xc7\xef\x6b\x5d\xcc\x50\x07\x7d\xe7\x9c\xd5\x6f\xcc\xd1\x99\x3c\x81\x5e\x01\xdd\x33\x71\xf8\xf1\xc8\x34\xa8\xd2\x78\x32\x0c\x62\xea\x3a\x58\x1c\xe9\x36\x56\x93\xb1\xc5\x37\x54\x35\xc9\xc5\x64\xa4\x9b\x46\xcb\xb0\x99\x6f\x93\x37\xb3\x5d\xe0\xf6\xf6\x1a\x93\xfb\xd6\xe4\xfe\x4a\x93\xf9\x36\x59\xb7\x51\xd6\x57\x46\x59\xb7\x51\xd6\x17\x5a\xba\xb1\x37\x7c\x27\xa6\x64\x8d\x62\xa7\x9a\x33\xd4\xb7\x96\xfa\x16\xf6\x7b\x37\x44\xaf\xe9\x1a\x79\x8c\xf4\x9a\xed\x02\x2d\x59\xee\x2a\xf7\x6f\x2a\xe4\x7f\x7d\x7c\xba\x3e\x6e\xff\x81\x3e\xfc\xb5\x4d\xee\x33\x18\x99\x68\xc0\xa4\xff\x22\x59\x51\xa5\x7f\x60\xaa\xa2\x7c\xed\xce\x78\x6f\xf0\x04\x35\x8c\xc9\xf8\x6c\x69\x8b\x65\x06\x8c\xd2\x54\xda\x71\x33\x33\xd1\xdb\x32\x67\x85\xac\x67\x4d\x48\x41\xfb\xa2\x59\xfb\xd8\xc4\x22\x97\xa7\x9b\xe5\x51\x79\x50\xed\xe4\xbf\x4a\x4d\x5d\xe2\xb0\xcc\x8b\x27\x09\x54\x83\x7c\x3d\x52\x81\xcf\x8c\x86\xcd\xfd\x76\x44\x9f\xae\x0f\xeb\x9d\x2d\x2f\xe9\xb5\x67\x77\x69\x35\x46\x11\x4b\xf4\x3e\x0c\xe6\xf3\xe2\x43\xd5\x77\xf5\x78\x19\xea\x61\x90\xe3\x7e\xe5\x2e\x34\xc9\xa0\x96\xa3\xea\xbd\x72\xdb\x41\xa3\x9d\xdf\xf6\xfd\x7f\xb9\xed\xf9\x99\x6d\x8f\x9d\xbc\x43\xc9\x76\xba\xf3\x9c\x72\xed\xf1\xeb\xf5\x2a\x41\x57\x52\x20\xac\xfc\x01\x6d\xbe\x93\x70\x12\x93\xa9\xba\xf9\xdc\x7e\xc1\xcc\x23\x32\xec\x3d\x3f\xf5\x6d\x2b\x29\xfc\x62\x9f\x66\x2f\xe6\xa9\xe7\xb3\xa6\x55\xbb\x9a\x33\x9f\x79\x8c\x83\xc0\xce\x80\x2c\x97\xf6\xc6\x85\x70\xff\xfe\x24\xdf\xd1\x9f\xe1\xb1\xc8\x73\x2a\xf6\xb8\xfe\xc2\x33\x8b\xf1\xb7\x49\x0b\x79\x83\x0f\xc5\x63\x91\x97\x1c\x34\x90\xda\xc7\xab\x3c\x3d\x30\xb1\xff\x16\x4e\x38\xfa\x9a\xeb\xf8\xce\x38\xe0\x15\x5d\x84\x4e\x32\xca\x15\x90\xc9\x5f\x01\x00\x00\xff\xff\x04\xbe\xc6\xd7\xbb\x0d\x00\x00"
 
 func runtimePluginsCommentCommentLuaBytes() ([]byte, error) {
        return bindataRead(
@@ -1208,7 +1208,7 @@ func runtimePluginsLinterInfoJson() (*asset, error) {
        return a, nil
 }
 
-var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x46\x79\x42\x6a\x45\x97\xcd\x5d\xa4\x68\xff\x44\x9a\x8d\xf2\xb0\xbb\x17\xb9\x4d\xd1\xed\x1b\x63\x13\xdb\x74\x4f\x67\xb4\xdf\x3d\x2a\xdb\xd0\x86\x86\xd9\xc9\xdd\xb5\x34\x60\x4c\xb9\xea\x57\x7f\x5d\x66\x84\x62\x54\x10\xdd\x4b\xcb\x5b\x20\x5b\xc2\xdb\x4e\x69\x9b\x25\x61\x26\xd9\xdc\x78\x8a\x86\x0b\xe8\xa8\x3d\x44\x24\xf8\x78\x37\xcc\x8f\x84\xe6\x00\x42\x44\x54\x2d\x67\x5a\xdd\xb9\xd9\x91\x66\xd7\x37\x0d\xe8\x2b\x22\x3f\x3d\x52\x31\x25\x1b\xbe\xbf\xa2\xf2\xd3\xc9\xe6\x26\x90\x09\x2e\x2d\x68\x43\xb6\xe4\xe9\xdb\xcd\x4d\x51\x10\xa6\x81\x5a\x30\x84\x86\x57\x04\xa4\xd5\xe7\x9c\x30\x2a\x04\x69\xb4\x6a\xc9\x89\xdb\x03\x97\x84\x4a\xc2\x25\xb7\x9c\x0a\xfe\x5f\x6a\xb9\x92\xa4\xe9\x25\xc3\x41\x4e\xa4\xb2\xc8\xab\xe6\x1a\x98\x15\x67\x42\xed\x40\x4b\x84\xa2\x35\x41\xe3\xdc\x14\x05\xd2\x48\xda\x42\xe5\xae\x44\x35\xc4\x1e\x20\xc8\xc5\x77\x68\x1e\x7b\xee\xa0\x1a\x47\xc4\x2a\xc2\x0e\xc0\x1e\x48\xa3\x34\x3e\xf4\x26\x5e\xc0\xda\xba\x22\x2d\xe5\x72\x00\xdf\x69\xc5\xc0\x18\x62\x0f\x08\xc1\x10\x78\x04\xd6\x5b\xa8\x91\x98\xea\xbd\xa9\xf0\xda\xb7\x20\xad\x41\x6e\x1d\x35\xee\x7e\x81\x31\x70\xc0\x05\xf8\x43\x79\x69\x83\x34\x1a\xd0\x0b\x81\x98\xf5\x5a\x83\xb4\x0e\xa7\x53\x66\x42\x5f\xaf\xd2\x7b\x0b\x29\x7d\x1e\x17\x81\xd6\x4a\x37\x4a\xb7\xd4\x56\xe4\xa0\x4e\x1e\x96\x36\x10\x81\xba\x63\xaa\xed\xb8\x88\xf4\x53\xbd\xed\x7a\x3b\x08\x4d\x1b\x6f\xb1\x9c\xa4\xa2\xc2\x35\x40\x64\xdf\xee\x40\xe7\x24\x6d\x2b\x2f\xe2\xee\x44\xb5\xe4\x72\x4f\x5a\x30\x86\xee\x9d\x6c\x65\x90\xda\x58\xf4\xc4\xc7\x7b\xb4\x1a\x37\x83\x1d\xb8\x21\xa6\xef\x30\x94\xa0\x26\x4a\x93\x5e\x46\x8f\x72\x90\xac\x3a\x0c\x00\x2a\x10\x32\x6d\x73\x52\x43\x43\x7b\x61\x2b\x8c\xae\xa2\x20\xa7\x03\xb7\x80\x12\x2a\x62\x0e\xaa\x17\xb5\x53\xea\xe3\xbd\x97\xba\x03\x42\xc9\x4e\x50\xf6\xe0\x1e\xb3\x5a\x61\x20\x61\x7a\xc5\x0e\x71\x8e\x3f\x80\xc1\x75\x66\x33\x08\x0e\x3f\xa5\x09\xbd\x48\x21\x99\x92\xe2\xfc\x32\x06\xab\xc8\x1b\x2a\x0c\x90\x2c\xe0\x1d\xe1\xb9\x85\xb5\x6a\xa9\x65\x87\x89\x36\x63\xa8\xee\x80\x38\x81\x9d\x06\x34\x12\x75\x39\xd5\x53\xd2\x51\x6b\x41\x4b\x74\xac\x5b\xed\x12\x6a\xa2\x07\xb2\xa1\xcc\xf6\xa1\x72\x20\xb7\x1c\x55\x8b\xa4\x04\x5d\x9c\x7e\x94\x59\x7e\xa4\x16\x88\x72\x59\x09\x8f\x94\x59\xcf\xfa\xa5\xca\x69\xf8\x4f\xcf\x35\xc4\x4b\x9d\x7e\x42\x35\x8d\x01\x1b\x62\xc8\x3f\x90\x13\x17\xc2\xf9\xaa\xae\xa1\x8e\xb2\x65\x08\x32\xa2\xc1\xf6\x5a\x42\x4d\x76\xe7\x59\x42\x8f\xbf\xde\x40\xd3\x0b\xc2\xe3\x8c\x0f\xeb\x0c\x79\x5d\x70\x59\xc3\x23\xd4\x8e\xab\xf9\xae\x12\xaf\x5d\xea\x0f\x50\x99\x12\x7d\x2b\x9f\x05\xcb\x94\xf8\xfd\xb1\x7a\xb9\x2f\x41\x3b\xd4\x49\xd2\xd2\x07\x78\xe7\xf8\x65\x98\xfe\x79\xe4\x6d\xd6\xd6\xb9\xab\x50\x79\x5c\x11\x72\xa2\x4c\x7e\x89\xef\x7c\x08\xc0\x7c\xf0\x54\x3e\xd8\x61\x73\x83\x20\x78\x33\x14\xf8\xcf\x28\xe0\x2b\xd9\x6e\x89\xe4\x02\x15\x91\x37\x83\x7e\x33\x0a\x4c\xd5\xc5\x57\xe5\x18\xd9\xdb\x11\xe8\x0a\x25\x6b\x6b\xb2\x45\x1d\x56\xde\xa3\x62\x64\xeb\xf4\x5b\xa1\x88\x94\x26\xdb\xd8\x04\x2b\xf4\x0a\xf9\x29\x83\x59\xb2\x8a\xff\x52\x17\xb6\x51\x8d\x50\xda\x67\xc1\xca\xa2\x60\x61\xb2\x1d\x6c\xfd\xbd\x05\xc1\x13\x64\x3b\xf8\x04\x17\xbc\x5e\x33\xd4\x48\xcc\xe6\xc4\x20\xeb\x1b\xfc\xbb\x84\x8b\x86\x56\x1d\xe3\x80\xf1\x4e\x9e\xfb\x4f\x72\x31\x5b\x88\x7b\x6f\x16\x88\xdd\xae\x5f\xc3\x51\xf6\xae\xd1\x48\xee\x6a\x38\xde\xe1\x43\x32\x44\x4c\x68\x5e\xca\xbf\x7d\xfc\x78\x8f\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x78\x7c\xf8\xe7\xbb\x64\xc4\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x4f\x49\xd1\x98\xb3\xb4\xf4\xb1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xad\xa6\x38\x4c\x9b\xe4\x9b\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\x2a\xe1\xf6\xf6\x19\x19\x49\x61\x6c\xbd\x65\xb7\xb7\x6f\xfe\xf4\x9b\x05\xd6\x6d\x8d\xf4\xfe\xe2\xc6\x4f\x49\xc1\x94\x50\x7a\xab\x9a\xc6\x71\x55\x85\xbb\x9d\xfc\x95\xbb\x1b\x9b\x08\x49\xb3\x54\xa4\x9b\x67\xb4\x52\xbb\x9e\x0b\x27\x63\xaf\xc6\xeb\x53\x32\xce\x16\xf8\x1c\xdc\x70\xc1\xbd\xc6\x0c\xc3\x24\xe6\x15\x9e\x9f\xae\xb4\x5e\x66\xf0\x0b\x3d\x52\x87\x1f\x07\xc3\x3d\x18\xda\xa1\x49\xeb\x2b\x13\xfa\xbc\x5d\x63\x68\x0e\x01\x11\x72\x32\x4c\xf3\xce\x3f\x0d\xf3\x31\x32\xbf\xbf\xa4\x22\x2f\x6f\xf3\x65\x76\x82\x5b\xd0\xd4\x02\xb2\x98\x8d\x83\x7b\xae\x3d\xdc\xe2\x9b\x6f\xb9\x4f\xe7\x9c\x58\xdd\xc3\x02\xe3\x9e\xba\x8e\xd3\x31\xeb\x69\xb8\x0d\x53\x4f\x49\x51\x48\xe5\x7d\xbf\x14\x42\xcb\x60\x25\x47\xd1\xd3\xdb\x53\x32\x8a\x29\x0a\xac\x4c\x3f\xf5\x42\xfc\x83\xda\x83\xf1\x53\xc6\xd6\xaa\xb7\x7e\x8c\x16\x32\x55\x08\xb5\x51\x64\x99\x8a\x9c\xa4\xac\x5c\x96\xc9\x04\x95\x7b\xa4\x57\xbb\x5f\x00\x3b\x06\xf0\x26\x79\x64\xba\x97\x5e\xfe\x40\xf1\xfb\x66\x67\x77\x6e\x04\x7d\x00\xa7\x46\x77\xb6\x07\x25\xfd\x68\x9c\x9d\x85\x60\x59\x54\x7f\x5e\xe6\xd4\x9e\xbb\xf3\x94\x4b\x98\x99\x71\x58\xc3\x31\xa4\x40\x8c\x62\x4c\x83\xa2\xf0\x4d\x74\xe1\xf7\x99\xad\x6b\xba\xe9\x4e\x80\x37\xb9\x06\x6c\x76\xcd\x56\xaa\xeb\x30\x5f\x14\x67\x0e\x4d\xeb\xa4\xf9\xd3\x9b\x1b\xf8\x99\x97\xa6\x9c\x39\xf1\xc6\x3a\x1f\xb9\xd1\xd4\x59\x97\x97\x2b\x8e\x40\xa2\x9a\xea\x13\x97\xf8\x7a\x39\xb6\x67\x12\xd8\x22\xb8\x88\x9f\xe0\xb2\x7f\x5c\x67\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x16\xe7\xad\xe1\xb8\xfb\xe3\x6a\xf9\x9e\x3e\xc0\x5b\xd5\xb6\x54\xd6\x98\xe9\xde\x8b\x7e\xdf\x2b\xf1\xf6\xd6\xd5\xe0\x40\xfc\x41\xbd\x55\x6d\x27\xc0\xc2\x66\xb6\x0f\x06\xd2\x6c\xd7\x79\xec\xbb\xae\xba\xa7\x47\x08\x5b\xa3\xee\x65\x50\x64\xd7\x95\x7f\xe9\x9b\xf9\x6a\xa6\xa4\xa5\x5c\x9a\xcc\xb7\x5e\x20\x00\xcf\x8d\x7e\x2d\x9e\x29\x1e\x72\x72\x24\x5c\x92\x8e\x72\xed\x89\x36\xa4\x56\xe3\x7e\xc9\x1b\x72\xc4\xed\x34\xac\x9b\x6e\xa6\x4e\xbe\x6b\x29\x9d\x69\xc7\x79\x44\x10\xdf\x03\x8d\xef\x3f\x66\xdd\xc1\x05\x3e\x62\xbf\x6c\xf6\x0d\xb6\x17\xbb\xbe\xa9\x7e\xe2\x02\x3e\x9d\x3b\x98\xb4\x02\xee\xc4\xea\xde\x97\x58\x6c\xe2\x26\x81\xeb\xd0\xe9\x75\xd4\x1e\xca\xbf\x72\x9d\xe1\x43\xf0\xcc\x92\xc6\xae\x0f\x99\x28\x3d\x20\x18\x7a\x28\xc4\xb2\x25\xc7\xf2\xaa\x7f\x44\xeb\x8c\xbd\xd6\x95\x69\x2e\x0c\x8c\xd5\x5c\xee\x4b\xf7\x98\x35\x36\x8f\x78\x6d\x26\x56\x9b\x41\x38\x50\x83\xdd\xcc\xc5\x89\xc7\x12\x5b\xe9\xb8\xd7\xd9\xc4\x60\xf0\xe0\xe9\xd7\x50\x59\x93\x63\xd4\x3b\x3e\x03\x6e\xda\x16\x0e\x3e\x0b\x1c\x2f\xdc\x90\xf7\xaf\xe6\x38\xd3\x2b\x74\xd2\x51\xcf\x1b\x1c\x43\xf5\xfe\xe2\x9a\xa3\xeb\xb8\x27\x9e\xc1\x1f\x4e\x7e\x7e\xf8\xea\x3b\xf1\x6a\x6f\xfa\x5d\x96\xa4\x29\x6e\x2a\xce\xd1\xe3\x0c\x26\x57\xcd\xf5\x8a\x81\x79\x33\x02\xbe\xd2\x04\x63\x02\xe3\x31\x77\xb1\x52\x46\xa7\x9a\x63\x39\x39\xd7\x1c\xcb\xf1\x04\x73\x2c\x27\x67\x98\x79\x1a\x4c\xa3\x5e\x49\x97\xc1\x43\x46\x5f\xe7\xf0\x77\xb2\xe6\x02\xd0\x87\xef\xfa\xc9\x0b\xf1\xf9\xe3\x55\x28\x1e\x7d\x53\xbd\x15\x40\xf5\x7b\xff\x01\xc5\x64\xa1\x22\x0d\xb5\xcb\xd5\xfd\xf2\xef\x6a\x77\xdf\xd1\x93\xcc\x22\xbe\x49\x12\xfe\x42\x09\x53\xf2\xc7\x47\xd7\xa6\x4c\x80\xac\x4a\x9f\x5b\x00\x17\x67\x7e\xf3\x7a\x29\x8b\x4b\x00\xb9\x23\x36\x26\x56\x27\x22\x2e\xc9\x17\x39\xa8\x11\xbe\x71\xc2\x1e\x1e\xa7\x27\xb1\x49\xc0\x24\x59\x59\x16\x9b\xe4\x12\x33\x6e\x03\xc8\xd2\xfa\x36\x9e\x64\x4b\x93\xad\x5f\x8e\x73\x63\x65\xf9\x77\xee\x1a\x3e\x2e\x09\x1f\x8b\x0b\x4c\x03\xb8\x28\xc8\x27\xcd\x5b\x7f\x92\x33\x1d\x65\x93\x03\x19\xd6\x34\xbc\x55\xbe\x52\x24\x3f\xa7\xe6\x15\xca\x48\xcd\xab\x3f\x24\x93\x4c\x0f\x15\xa5\xe1\xb2\x76\x52\x72\xaf\xeb\x66\x21\x98\xc7\x82\xe9\x2c\x8c\xa7\x74\x25\x72\xd2\x9a\xfd\xbc\x30\xc5\x7c\x16\x58\x1c\xa8\x61\x0a\x4f\x4e\x93\x5a\x1f\x55\x9e\x18\xd3\xc4\x87\xce\x86\x0b\xd0\xf0\x37\x72\x9d\x16\x8d\xe1\xe7\x61\x32\x25\x26\x6f\xe2\x22\x15\x00\xec\xa8\x01\x3c\x4b\x66\xc3\x9e\xb0\xc1\x9a\x3d\xce\xba\xd2\xb0\x8c\x20\x7c\x9f\xf6\x92\xf0\x18\x3a\x27\xf0\x65\x10\x51\x2e\xae\xbf\xf0\x68\x8d\xa5\x3a\xec\x5b\x0d\xe8\xf2\x9d\x62\x99\x55\xfe\x9b\x4d\xc6\x94\x28\xde\xdc\xba\x40\xce\xc9\x38\x8b\x36\x2f\xde\xdc\x62\x94\x6f\x36\xcf\xb1\x06\x59\xaf\x33\xfe\x15\x6c\x83\xbe\x81\xe1\x07\x38\x85\x82\x30\xd6\x03\x17\x22\x79\xd0\x29\x77\x00\xf2\x81\xfc\xfd\xa7\x1f\xd1\xbf\xd7\x9c\x61\xc9\x87\xcf\x89\xfb\xc1\xbe\xe3\xf2\x4a\xe8\x44\x0f\xaf\xc5\x0b\x64\xcf\x82\x82\x84\x72\xf7\x43\x5d\x0f\xba\x21\x8a\xcd\x6a\x24\xad\xd7\x6b\x5f\x66\x8c\xd5\x39\x31\xd0\x6d\x26\x15\xc6\xf4\xc2\x5e\xf6\xb2\x69\xdd\xc9\x92\xec\xf3\xcf\xa9\xf9\xea\x2a\x87\xcf\x86\x6c\x64\x80\x15\x03\x28\x3b\x60\xbd\x30\x56\x57\x7b\x9f\x85\x21\x8f\xa3\x9a\x61\xb1\xe9\x2c\xb9\x34\xa0\x6d\xe6\x05\xe6\x6e\xe5\x66\xa9\xcb\xf2\x04\x33\x05\xa6\x79\x10\x21\x35\xd0\xb9\xef\x29\xff\xef\x77\x94\xb0\xee\xcb\x97\x64\x82\xc1\x33\x75\xff\x17\x19\x8b\x8b\xab\x98\xbe\xfe\x24\x59\xf9\x2a\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x6a\xe3\xfa\xe9\x3f\x26\x93\x5d\xcf\xfd\x63\x01\xb9\xfe\x2f\x00\x00\xff\xff\xe6\x74\x28\x8b\xad\x1a\x00\x00"
+var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x5e\x2e\x2f\x48\xad\xe8\xb2\xb9\x8b\x14\xed\x9f\x48\xbb\x51\x1e\x76\xf7\x22\xb7\x29\xba\x7d\x63\x6c\x62\x9b\xee\xe9\x8c\xf6\xbb\x47\x65\x1b\xda\xd0\x30\x3b\xb9\xbb\x96\x06\x8c\x29\xff\xea\x7f\xb9\xcc\x08\xc5\xa8\x20\x2d\x67\x5a\x91\x2d\xe1\x6d\xa7\xb4\xcd\x12\xf7\x9c\x6c\x6e\xfc\x5b\xdd\x4b\xcb\x5b\x88\xde\x87\x99\x91\xa2\xe1\x02\x3a\x6a\x0f\x11\x09\x3e\xde\x0d\xf3\x23\xa1\x39\x80\x10\x73\x46\x77\x6e\x76\xa4\xd9\xf5\x4d\x03\xfa\x8a\xc8\x4f\x8f\x54\x4c\xc9\x86\xef\xaf\xa8\xfc\x74\xb2\xb9\x09\x64\x82\x4b\x0b\xda\x90\x2d\x79\xfc\x7a\x73\x53\x14\x84\x69\xa0\x16\x0c\xa1\xe1\x15\x01\x69\xf5\x39\x27\x8c\x0a\x41\x1a\xad\x5a\x72\xe2\xf6\xc0\x25\xa1\x92\x70\xc9\x2d\xa7\x82\xff\x97\x5a\xae\x24\x69\x7a\xc9\x70\x90\x13\xa9\x2c\x62\xd5\x5c\x03\xb3\xe2\x4c\xa8\x1d\x68\x89\x50\xb4\x26\x68\x9c\x9b\xa2\x40\x1a\x49\x5b\xa8\xdc\x95\xa8\x86\xd8\x03\x04\xbe\xf8\x0e\xcd\x63\xcf\x1d\x54\xe3\x88\x58\x45\xd8\x01\xd8\x3d\x69\x94\xc6\x87\xde\xc4\x0b\x58\x5b\x57\xa4\xa5\x5c\x0e\xc2\x77\x5a\x31\x30\x86\xd8\x03\x8a\x60\x08\x3c\x00\xeb\x2d\xd4\x48\x4c\xf5\xde\x54\x78\xed\x5b\x90\xd6\x20\x5a\x47\x8d\xbb\x5f\xc4\x18\x10\x70\x01\xfe\x90\x5f\xda\x20\x8d\x06\xf4\x42\x20\x66\xbd\xd6\x20\xad\x93\xd3\x29\x33\xa1\xaf\x57\xe9\xbd\x85\x94\x3e\x8f\x8b\x40\x6b\xa5\x1b\xa5\x5b\x6a\x2b\x72\x50\x27\x2f\x96\x36\x10\x09\x75\xc7\x54\xdb\x71\x11\xe9\xa7\x7a\xdb\xf5\x76\x60\x9a\x36\xde\x62\x39\x49\x45\x85\x6b\x80\xc8\xbe\xdd\x81\xce\x49\xda\x56\x9e\xc5\xdd\x89\x6a\xc9\xe5\x9e\xb4\x60\x0c\xdd\x3b\xde\xca\x20\xb5\xb1\xe8\x89\xf7\x1f\xd0\x6a\xdc\x0c\x76\xe0\x86\x98\xbe\xc3\x50\x82\x9a\x28\x4d\x7a\x19\x3d\xca\x81\xb3\xea\x30\x00\xa8\x40\x91\x69\x9b\x93\x1a\x1a\xda\x0b\x5b\x61\x74\x15\x05\x39\x1d\xb8\x05\xe4\x50\x11\x73\x50\xbd\xa8\x9d\x52\xef\x3f\x78\xae\x3b\x20\x94\xec\x04\x65\xf7\xee\x31\xab\x15\x06\x12\xa6\x57\xec\x10\xe7\xf8\x03\x18\x5c\x67\x36\x03\xe3\xf0\x53\x9a\xd0\x0b\x17\x92\x29\x29\xce\xcf\x03\x58\x95\xbc\xa1\xc2\x00\xc9\x82\xbc\xa3\x78\x6e\x61\xad\x5a\x6a\xd9\x61\xa2\xcd\x18\xaa\x3b\x20\x8e\x61\xa7\x01\x8d\x44\x5d\x4e\xf5\x94\x74\xd4\x5a\xd0\x12\x1d\xeb\x56\xbb\x84\x9a\xe8\x81\x30\x94\xd9\x3e\x54\x0e\x44\xcb\x51\xb5\x88\x4b\xd0\xc5\xe9\x47\x99\xe5\x47\x6a\x81\x28\x97\x95\xf0\x40\x99\xf5\xd0\xcf\x55\x4e\xc3\x7f\x7a\xae\x21\x5e\xea\xf4\x13\xaa\x69\x0c\xd8\x10\x43\xfe\x81\x9c\xb8\x10\xce\x57\x75\x0d\x75\x94\x2d\x43\x90\x11\x0d\xb6\xd7\x12\x6a\xb2\x3b\xcf\x12\x7a\xfc\xf5\x06\x9a\x5e\x10\x1e\x67\x7c\x58\x67\xc8\xcb\x82\xcb\x1a\x1e\xa0\x76\xa8\xe6\x9b\x4a\xbc\x74\xa9\x3f\x88\xca\x94\xe8\x5b\xf9\xa4\xb0\x4c\x89\xdf\x5f\x56\xcf\xf7\x39\xd2\x0e\x75\x92\xb4\xf4\x1e\xde\x38\xbc\x0c\xd3\x3f\x8f\xbc\xcd\xda\x3a\x77\x15\x2a\x8f\x2b\x42\x4e\x94\xc9\x2f\xf1\x9d\x0f\x01\x98\x0f\x9e\xca\x07\x3b\x6c\x6e\x50\x08\xde\x0c\x05\xfe\x13\x32\xf8\x42\xb6\x5b\x22\xb9\x40\x45\xe4\xcd\xa0\xdf\x8c\x02\x53\x75\xf1\x55\x39\x46\xf6\x76\x14\x74\x85\x92\xb5\x35\xd9\xa2\x0e\x2b\xef\x51\x31\xb2\x75\xfa\xad\x50\x44\x4a\x93\x6d\x6c\x82\x15\x7a\x85\x78\xca\x60\x96\xac\xca\x7f\xa9\x0b\xdb\xa8\x46\x28\xed\xb3\x60\x65\x51\xb0\x30\xd9\x0e\xb6\xfe\xd6\x82\xe0\x09\xb2\x1d\x7c\x82\x0b\x5e\xae\x19\x6a\x24\x66\x73\x62\x90\xf5\x0d\xfe\x5d\xc2\x45\x43\xab\x8e\x71\xc0\x78\x27\xcf\xfd\x27\xb9\x98\x2d\xc4\xbd\x37\x0b\xc4\x6e\xd7\xaf\xe1\x28\x7b\xd7\x68\x24\x77\x35\x1c\xef\xf0\x21\x19\x22\x26\x34\x2f\xe5\xdf\xde\xbf\xff\x80\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x30\xde\xfd\xf3\x4d\x32\xca\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x8f\x49\xd1\x98\xb3\xb4\xf4\xa1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xac\xa6\x38\x4c\x9b\xe4\xab\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\xca\xe1\xf6\xf6\x09\x1e\x49\x61\x6c\xbd\x65\xb7\xb7\xaf\xbe\xff\xcd\x0c\xeb\xb6\x46\x7a\x7f\x71\xe3\xc7\xa4\x60\x4a\x28\xbd\x55\x4d\xe3\x50\x55\xe1\x6e\x27\x7f\xe5\xee\xc6\x26\x4c\xd2\x2c\x15\xe9\xe6\x09\xad\xd4\xae\xe7\xc2\xf1\xd8\xab\xf1\xfa\x98\x8c\xb3\x05\x3e\x07\x37\x4c\xe4\xfe\xf3\x05\xb0\x28\x66\x98\x18\x2d\x31\x64\x78\x7e\xbc\x52\x7e\x59\xa8\x5f\xe8\x91\x3a\x35\x70\x30\xdc\x83\xbd\x9d\x50\x69\x7d\x65\x49\x9f\xbe\x6b\x80\xe6\x10\x24\x42\x24\xc3\x34\xef\xfc\xd3\x30\x1f\x4b\xe6\xb7\x99\x54\xe4\xe5\x6d\xbe\x0c\x27\xb8\x05\x4d\x2d\x20\xc4\x6c\x1c\xbc\x74\xed\xe8\x16\xdf\x7c\xcd\x7d\x56\xe7\xc4\xea\x1e\x16\x80\x7b\xea\x1a\x4f\x07\xd6\xd3\x70\x1b\xa6\x1e\x93\xa2\x90\xca\x87\xc0\x52\x24\x2d\x0b\x2b\x39\xb2\x9e\xde\x1e\x93\x91\x4d\x51\x60\x81\xfa\xa9\x17\xe2\x1f\xd4\x1e\x8c\x9f\x32\xb6\x56\xbd\xf5\x63\xb4\x90\xa9\x42\xc4\x8d\x2c\xcb\x54\xe4\x24\x65\xe5\x32\x4f\x26\xa8\xdc\x23\xbd\xda\xfd\x02\xd8\x38\x80\x37\xc9\x03\xd3\xbd\xf4\xfc\x07\x8a\xdf\x37\x49\xbb\x73\x23\xe8\x3d\x38\x35\xba\xb3\x3d\x28\xe9\x47\xe3\xec\x2c\x04\xcb\x22\x8e\xe3\x18\xa9\x3d\x77\xe7\x29\x4a\x98\x99\x21\xac\xc9\x31\xa4\x40\x2c\xc5\x98\x06\x45\xe1\x7b\xe9\xc2\x6f\x37\x5b\xd7\x7b\xd3\x9d\x00\x6f\x72\x0d\xd8\xf3\x9a\xad\x54\xd7\x61\xbe\xc8\xce\x1c\x9a\xd6\x71\xf3\x87\x38\x37\xf0\x33\xcf\x4d\x39\x73\xe2\x8d\x75\x3e\x72\xa3\xa9\xb3\x2e\x2f\x57\x1c\x81\x44\x35\xd5\x27\x2e\xf1\xf5\x72\x6c\xcf\x38\xb0\x45\xe1\x22\x3c\xc1\x65\xff\xb0\x0e\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x66\xe7\xad\xe1\xd0\xfd\xa9\xb5\x7c\x4b\xef\xe1\xb5\x6a\x5b\x2a\x6b\xcc\x74\xef\x45\xbf\xfd\x95\x78\x7b\xed\x4a\x71\x20\x7e\xa7\x5e\xab\xb6\x13\x60\x61\x33\xdb\x0e\x03\x69\xb6\xeb\x7c\x8b\xe5\x35\xd8\x75\xd5\x07\x7a\x84\xb0\x4f\xea\x5e\x06\x75\x76\x5d\xf9\x97\xbe\x99\x63\x30\x25\x2d\xe5\xd2\x64\xbe\x0f\x03\x01\x78\x88\xf4\x6b\xf1\x80\x71\x9f\x93\x23\xe1\x92\x74\x94\x6b\x4f\xb4\x21\xb5\x1a\x37\x4f\xde\x90\x23\xee\xad\x61\xdd\x74\x67\x75\xfc\x5d\x7f\xe9\x0c\x3c\xce\xa3\x04\xf1\x3d\xd0\xf8\x66\x64\xd6\x2a\x5c\xc4\x47\xd9\x2f\x3b\x7f\x83\xbd\xc6\xae\x6f\xaa\x9f\xb8\x80\x8f\xe7\x0e\x26\x7d\x81\x3b\xbe\xba\xf7\x25\x96\x9c\xb8\x63\xe0\x3a\xb4\x7d\x1d\xb5\x87\xf2\xaf\x5c\x67\xf8\x10\xfc\xb3\xa4\xb1\x6b\x4a\x26\x4a\x0f\x12\x0c\x0d\x15\xca\xb2\x25\xc7\xf2\xaa\x99\x44\xeb\x8c\x8d\xd7\x95\x69\x2e\x00\xc6\x6a\x2e\xf7\xa5\x7b\xcc\x1a\x9b\x47\x58\x9b\x89\xd5\x66\x22\x1c\xa8\xc1\xd6\xe6\xe2\xc4\x63\x89\x7d\x75\xdc\xf8\x6c\x62\x61\xf0\x14\xea\xd7\x50\x59\x93\x63\xd4\x48\x3e\x21\xdc\xb4\x47\x1c\x7c\x16\x10\x2f\x68\x88\xfd\xab\x11\x67\x7a\x85\xb6\x3a\x6a\x80\x83\x63\xa8\xde\x5f\x5c\x73\x74\xed\xf7\xc4\x33\xf8\xc3\xc9\x4f\xf7\x5f\x7c\x5b\x5e\xed\x4d\xbf\xcb\x92\x34\xc5\xad\xc5\x39\x7a\x9c\xc1\x14\xab\xb9\x5e\x31\x30\x6f\x46\x81\xaf\x34\xc1\x98\xc0\x78\xcc\x5d\xac\x94\xd1\x11\xe7\x58\x4e\x0e\x39\xc7\x72\x3c\xce\x1c\xcb\xc9\x81\x66\x9e\x06\xd3\xa8\x57\xd2\x65\xf0\xae\x5b\xcb\xe1\x6f\x64\xcd\x45\x40\x1f\xbe\xeb\xc7\x30\x94\xcf\x9f\xb5\x42\xf1\xe8\x9b\xea\xb5\x00\xaa\xdf\xfa\xaf\x29\x43\x02\x84\xfc\x70\xb5\xbf\xfc\xbb\xda\x7d\xe8\xe8\x49\x66\x11\x6a\x92\x84\xbf\x50\xc6\x94\xfc\xf1\xc1\xb5\x2a\x13\x31\x56\x79\xcf\xf5\xc7\xc5\x99\xdf\xc0\xe2\xda\x36\x7e\x38\xfc\x26\x64\x38\x95\x7d\x7a\xf5\xc5\xaf\xff\xf4\xdd\x30\xf8\xe3\x30\xf8\x7e\x18\xfc\xe9\x4b\x04\xee\x8e\xea\x98\x93\x9d\x88\x44\x48\x3e\xcb\xa1\x86\x87\x6f\xa5\xb0\x87\x87\xe9\x89\x6e\x12\x6b\x49\x56\x96\xc5\x26\xb9\x84\x9b\xdb\x41\xb2\xb4\xbe\x8d\x27\xd9\xd2\x64\xeb\x97\xe3\xdc\x58\x94\xfe\x9d\xbb\x8e\x91\x4b\xc2\xc7\xba\x04\xd3\xd8\x2f\x0a\xf2\x51\xf3\xd6\x9f\x08\x4d\x47\xd9\xe4\x60\x87\xe5\x10\x6f\x95\x2f\x32\xc9\xcf\xa9\x79\x81\x3c\x52\xf3\xe2\x0f\xc9\xa4\x48\x84\x62\xd4\x70\x59\x3b\x2e\xb9\xd7\x75\xb3\x90\x07\x63\xad\x75\xee\xc0\xd3\xbe\x12\x39\x69\xcd\x7e\x5e\xd3\x62\x9c\x05\x88\x03\x35\x4c\xe1\x09\x6c\xb2\x4d\x44\x45\x2b\x96\x69\xe2\x70\x67\xc3\x05\xd1\xf0\x37\xa2\x4e\xeb\xcd\xf0\xf3\x62\x32\x25\x26\x6f\x40\x18\xe0\x8d\xfb\xb2\xb2\xf4\x8d\xe1\x19\xd8\x71\x85\x74\x7c\x38\xd3\xaa\x7c\xa3\xf6\xd9\x8e\x1a\xc0\xc3\x6d\x36\xec\x4b\x9b\x9c\x8c\x73\xae\x38\x6d\xe6\xca\x5f\x2f\x41\xb1\xa6\x8b\x96\x25\x0c\xa9\xe2\xb5\xc4\xa3\xf4\x9c\xc0\x57\x6f\xd4\x62\x71\xfd\x05\xa3\x35\x96\xea\xb0\xdd\x36\xa0\xcb\x37\x8a\x65\x56\xf9\xef\x4e\x19\x53\xa2\x78\x75\xeb\x92\x38\x27\xe3\x2c\xfa\xbb\x78\x75\x8b\xe9\x38\xd3\x69\x06\x0d\xb2\x5e\x07\xfe\x15\xb0\x41\xdf\x00\xf8\x0e\x4e\xa1\x8e\x65\x43\xb9\x68\xcd\x3e\x0f\x1a\xe5\x8e\x7d\x3e\x10\xbf\xfd\xf8\x23\x46\xd6\x35\x2e\x2c\x45\xcf\x53\xcc\x7e\xb0\x6f\xb8\x9c\xb1\x9c\xe8\xe0\x35\x78\x06\xe7\x59\x28\x91\x50\xa1\x7f\xa8\xeb\x41\x2f\x94\x61\xb3\x1a\x7f\xeb\x5b\x8c\x2f\x6f\xc6\xea\x9c\x18\xe8\x36\x93\xca\x66\x7a\x61\x2f\xdb\xef\xb4\xde\x65\x49\xf6\xe9\xe7\xd4\x7c\x71\x15\xcb\x67\x61\x36\x02\x60\xa5\x02\xca\x0e\x58\xa7\x8c\xd5\xd5\xde\x67\x7f\xa8\x1f\x51\xad\xb2\xd8\x2d\x97\x5c\x1a\xd0\x36\xf3\x0c\x73\xb7\x72\xb3\xd4\x18\x7a\x82\x99\x02\xd3\x1c\x88\x24\x35\xd0\xb9\xef\x41\xff\xef\x77\xa0\xb0\xee\xf3\xe7\x64\x22\x83\x07\x75\xff\xd7\x19\x8b\x9a\xab\xd4\xbe\xee\x25\x59\xf9\x22\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x62\xe3\x0e\x02\xdf\x25\x93\x8d\xda\xfd\x63\x04\x51\xff\x17\x00\x00\xff\xff\xb2\x3e\x43\x48\x8b\x1b\x00\x00"
 
 func runtimePluginsLinterLinterLuaBytes() ([]byte, error) {
        return bindataRead(
index ca7de9cc0c59874035d5217b149e29dbe6477b45..89b926f28edbfe8959dfc285969e5910f0e73e1d 100644 (file)
@@ -2,8 +2,14 @@ package info
 
 import (
        "fmt"
+       "strings"
 
        "github.com/zyedidia/micro/internal/buffer"
+       luar "layeh.com/gopher-luar"
+
+       "github.com/zyedidia/micro/internal/config"
+       ulua "github.com/zyedidia/micro/internal/lua"
+       "github.com/zyedidia/micro/internal/screen"
 )
 
 // The InfoBuf displays messages and other info at the bottom of the screen.
@@ -113,6 +119,8 @@ func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(s
        i.Buffer.Insert(i.Buffer.Start(), msg)
 }
 
+// YNPrompt creates a yes or no prompt, and the callback returns the yes/no result and whether
+// the prompt was canceled
 func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) {
        if i.HasPrompt {
                i.DonePrompt(true)
@@ -126,6 +134,63 @@ func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) {
        i.YNCallback = donecb
 }
 
+// PlugPrompt provides a plugin interface for calling "Prompt" with the appropriate Lua callbacks
+func (i *InfoBuf) PlugPrompt(prompt string, msg string, ptype string, eventcb string, donecb string) {
+       eventLuaFn := strings.Split(eventcb, ".")
+       doneLuaFn := strings.Split(donecb, ".")
+       var luaEventcb func(string)
+       var luaDonecb func(string, bool)
+
+       if len(eventLuaFn) == 2 {
+               plName, plFn := doneLuaFn[0], doneLuaFn[1]
+               pl := config.FindPlugin(plName)
+               if pl != nil {
+                       luaEventcb = func(resp string) {
+                               _, err := pl.Call(plFn, luar.New(ulua.L, resp))
+                               if err != nil && err != config.ErrNoSuchFunction {
+                                       screen.TermMessage(err)
+                               }
+                       }
+               }
+       }
+
+       if len(doneLuaFn) == 2 {
+               plName, plFn := doneLuaFn[0], doneLuaFn[1]
+               pl := config.FindPlugin(plName)
+               if pl != nil {
+                       luaDonecb = func(resp string, canceled bool) {
+                               _, err := pl.Call(plFn, luar.New(ulua.L, resp), luar.New(ulua.L, canceled))
+                               if err != nil && err != config.ErrNoSuchFunction {
+                                       screen.TermMessage(err)
+                               }
+                       }
+               }
+       }
+
+       i.Prompt(prompt, msg, ptype, luaEventcb, luaDonecb)
+}
+
+// PlugYNPrompt provides a plugin interface for calling "YNPrompt" with the appropriate Lua callbacks
+func (i *InfoBuf) PlugYNPrompt(prompt string, donecb string) {
+       doneLuaFn := strings.Split(donecb, ".")
+       var luaDonecb func(bool, bool)
+
+       if len(doneLuaFn) == 2 {
+               plName, plFn := doneLuaFn[0], doneLuaFn[1]
+               pl := config.FindPlugin(plName)
+               if pl != nil {
+                       luaDonecb = func(resp bool, canceled bool) {
+                               _, err := pl.Call(plFn, luar.New(ulua.L, resp), luar.New(ulua.L, canceled))
+                               if err != nil && err != config.ErrNoSuchFunction {
+                                       screen.TermMessage(err)
+                               }
+                       }
+               }
+       }
+
+       i.YNPrompt(prompt, luaDonecb)
+}
+
 // DonePrompt finishes the current prompt and indicates whether or not it was canceled
 func (i *InfoBuf) DonePrompt(canceled bool) {
        hadYN := i.HasYN
index 8c29bb9c8b2e0b3649fddced20d7446f7dca8e4c..010adebd280dfb3c4d71f7638322a3410a207b9c 100644 (file)
@@ -115,11 +115,7 @@ func luaFunctionJob(fn string) func(string, ...interface{}) {
                return nil
        }
        return func(output string, args ...interface{}) {
-               var luaArgs []lua.LValue
-               luaArgs = append(luaArgs, luar.New(ulua.L, output))
-               for _, v := range args {
-                       luaArgs = append(luaArgs, luar.New(ulua.L, v))
-               }
+               luaArgs := []lua.LValue{luar.New(ulua.L, output), luar.New(ulua.L, args)}
                _, err := pl.Call(plFn, luaArgs...)
                if err != nil && err != config.ErrNoSuchFunction {
                        screen.TermMessage(err)
index 608271d4b64109b82efda975e5016d94a007b7e1..18ff6f6b9af973a8bea7409c8fdbb1a5a6259923 100644 (file)
@@ -102,11 +102,7 @@ func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool, callback s
                pl := config.FindPlugin(plName)
                if pl != nil {
                        t.callback = func(out string) {
-                               var luaArgs []lua.LValue
-                               luaArgs = append(luaArgs, luar.New(ulua.L, out))
-                               for _, v := range userargs {
-                                       luaArgs = append(luaArgs, luar.New(ulua.L, v))
-                               }
+                               luaArgs := []lua.LValue{luar.New(ulua.L, out), luar.New(ulua.L, userargs)}
                                _, err := pl.Call(plFn, luaArgs...)
                                if err != nil {
                                        screen.TermMessage(err)
index 0b34a4dc76ab7574adbe420c065178508da1cf3c..d4c5b7e364817c42d25bf90c9ab5691b4f5f345f 100644 (file)
@@ -74,7 +74,7 @@ function commentSelection(bp, startLine, endLine)
     end
 end
 
-function comment(bp)
+function comment(bp, args)
     if bp.Cursor:HasSelection() then
         if bp.Cursor.CurSelection[1]:GreaterThan(-bp.Cursor.CurSelection[2]) then
             local endLine = bp.Cursor.CurSelection[1].Y
index e59699813483f6c9b2d0a9bdb6985561e3177f81..e94a0b583d7684c1d576d5dbe26f0dc6582501af 100644 (file)
@@ -1,3 +1,4 @@
+local micro = import("micro")
 local runtime = import("runtime")
 local filepath = import("path/filepath")
 local shell = import("micro/shell")
@@ -59,8 +60,8 @@ function init()
     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("dmd", "d", "dmd", {"-color=off", "-o-", "-w", "-wi", "-c", "%f"}, "%f%(%l%):.+: %m")
-    makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l: %m")
-    makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%c: %m")
+    makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l:%c:? %m")
+    -- makeLinter("golint", "go", "golint", {"%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)
@@ -78,7 +79,7 @@ function init()
     config.MakeCommand("lint", "linter.lintCmd", config.NoComplete)
 end
 
-function lintCmd(bp)
+function lintCmd(bp, args)
     bp:Save()
     runLinter(bp.Buf)
 end
@@ -128,12 +129,13 @@ function onSave(bp)
 end
 
 function lint(buf, linter, cmd, args, errorformat, loff, coff)
-    buf:ClearMessages("linter")
+    buf:ClearMessages(linter)
 
     shell.JobSpawn(cmd, args, "", "", "linter.onExit", buf, linter, errorformat, loff, coff)
 end
 
-function onExit(output, buf, linter, errorformat, loff, coff)
+function onExit(output, args)
+    local buf, linter, errorformat, loff, coff = args[1], args[2], args[3], args[4], args[5]
     local lines = split(output, "\n")
 
     local regex = errorformat:gsub("%%f", "(..-)"):gsub("%%l", "(%d+)"):gsub("%%c", "(%d+)"):gsub("%%m", "(.+)")
@@ -146,15 +148,18 @@ function onExit(output, buf, linter, errorformat, loff, coff)
             if not string.find(errorformat, "%%c") then
                 hascol = false
                 msg = col
+            elseif col == nil then
+                hascol = false
             end
+            micro.Log(basename(buf.Path), basename(file))
             if basename(buf.Path) == basename(file) then
                 local bmsg = nil
                 if hascol then
                     local mstart = buffer.Loc(tonumber(col-1+coff), tonumber(line-1+loff))
                     local mend = buffer.Loc(tonumber(col+coff), tonumber(line-1+loff))
-                    bmsg = buffer.NewMessage("linter", msg, mstart, mend, buffer.MTError)
+                    bmsg = buffer.NewMessage(linter, msg, mstart, mend, buffer.MTError)
                 else
-                    bmsg = buffer.NewMessageAtLine("linter", msg, tonumber(line+loff), buffer.MTError)
+                    bmsg = buffer.NewMessageAtLine(linter, msg, tonumber(line+loff), buffer.MTError)
                 end
                 buf:AddMessage(bmsg)
             end