From 5f19f69681b3131dc545087eae3834798df6f0b9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 3 Jun 2016 16:41:09 -0400 Subject: [PATCH 1/6] Tab bar and support for opening multiple files --- cmd/micro/bindings.go | 45 +++++++++++++++++++++++++++++++++----- cmd/micro/micro.go | 48 ++++++++++++++++++++++++----------------- cmd/micro/statusline.go | 2 +- cmd/micro/tabbar.go | 35 ++++++++++++++++++++++++++++++ cmd/micro/view.go | 42 ++++++++++++++++++++++++------------ 5 files changed, 132 insertions(+), 40 deletions(-) create mode 100644 cmd/micro/tabbar.go diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go index c97c96e0..9b1af052 100644 --- a/cmd/micro/bindings.go +++ b/cmd/micro/bindings.go @@ -73,6 +73,8 @@ var bindingActions = map[string]func(*View) bool{ "ShellMode": (*View).ShellMode, "CommandMode": (*View).CommandMode, "Quit": (*View).Quit, + "LastView": (*View).LastView, + "NextView": (*View).NextView, } var bindingKeys = map[string]tcell.Key{ @@ -902,7 +904,7 @@ func (v *View) OpenFile() bool { if v.CanClose("Continue? (yes, no, save) ") { filename, canceled := messenger.Prompt("File to open: ", "Open") if canceled { - return true + return false } home, _ := homedir.Dir() filename = strings.Replace(filename, "~", home, 1) @@ -910,12 +912,19 @@ func (v *View) OpenFile() bool { if err != nil { messenger.Error(err.Error()) - return true + return false } buf := NewBuffer(file, filename) v.OpenBuffer(buf) + return true } - return true + return false +} + +func (v *View) openInNewView(buf *Buffer) { + views = append(views, NewView(buf)) + mainView++ + views[mainView].Num = mainView } // Start moves the viewport to the start of the buffer @@ -1082,12 +1091,38 @@ func (v *View) Quit() bool { // Make sure not to quit if there are unsaved changes if views[mainView].CanClose("Quit anyway? (yes, no, save) ") { views[mainView].CloseBuffer() - screen.Fini() - os.Exit(0) + if len(views) > 1 { + views = views[:v.Num+copy(views[v.Num:], views[v.Num+1:])] + for i, v := range views { + v.Num = i + } + if v.Num <= mainView { + if !(v.Num == mainView && mainView == 0) { + mainView-- + } + } + } else { + screen.Fini() + os.Exit(0) + } } return false } +func (v *View) LastView() bool { + if mainView > 0 { + mainView-- + } + return true +} + +func (v *View) NextView() bool { + if mainView < len(views)-1 { + mainView++ + } + return true +} + // None is no action func None() bool { return false diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e9ed08f4..00e54b3f 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -55,7 +55,7 @@ var ( ) // LoadInput loads the file input for the editor -func LoadInput() (string, []byte, error) { +func LoadInput() []*Buffer { // There are a number of ways micro should start given its input // 1. If it is given a file in os.Args, it should open that @@ -72,23 +72,34 @@ func LoadInput() (string, []byte, error) { var filename string var input []byte var err error + var buffers []*Buffer if len(os.Args) > 1 { // Option 1 - filename = os.Args[1] - // Check that the file exists - if _, e := os.Stat(filename); e == nil { - input, err = ioutil.ReadFile(filename) + for i := 1; i < len(os.Args); i++ { + filename = os.Args[i] + // Check that the file exists + if _, e := os.Stat(filename); e == nil { + input, err = ioutil.ReadFile(filename) + if err != nil { + TermMessage(err) + continue + } + } + buffers = append(buffers, NewBuffer(input, filename)) } } else if !isatty.IsTerminal(os.Stdin.Fd()) { // Option 2 // The input is not a terminal, so something is being piped in // and we should read from stdin input, err = ioutil.ReadAll(os.Stdin) + buffers = append(buffers, NewBuffer(input, filename)) + } else { + // Option 3, just open an empty buffer + buffers = append(buffers, NewBuffer(input, filename)) } - // Option 3, or just return whatever we got - return filename, input, err + return buffers } // InitConfigDir finds the configuration directory for micro according to the XDG spec. @@ -170,9 +181,10 @@ func InitScreen() { // RedrawAll redraws everything -- all the views and the messenger func RedrawAll() { messenger.Clear() - for _, v := range views { - v.Display() - } + // for _, v := range views { + views[mainView].Display() + // } + DisplayTabBar() messenger.Display() screen.Show() } @@ -186,12 +198,6 @@ func main() { os.Exit(0) } - filename, input, err := LoadInput() - if err != nil { - fmt.Println(err) - os.Exit(1) - } - L = lua.NewState() defer L.Close() @@ -210,8 +216,6 @@ func main() { // Load the help files LoadHelp() - buf := NewBuffer(input, filename) - InitScreen() // This is just so if we have an error, we can exit cleanly and not completely @@ -229,8 +233,12 @@ func main() { messenger = new(Messenger) messenger.history = make(map[string][]string) - views = make([]*View, 1) - views[0] = NewView(buf) + // views = make([]*View, 1) + buffers := LoadInput() + for i, buf := range buffers { + views = append(views, NewView(buf)) + views[i].Num = i + } L.SetGlobal("OS", luar.New(L, runtime.GOOS)) L.SetGlobal("views", luar.New(L, views)) diff --git a/cmd/micro/statusline.go b/cmd/micro/statusline.go index ea3e7a4d..8c505195 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/statusline.go @@ -15,7 +15,7 @@ type Statusline struct { // Display draws the statusline to the screen func (sline *Statusline) Display() { // We'll draw the line at the lowest line in the view - y := sline.view.height + y := sline.view.height + sline.view.y file := sline.view.Buf.Name // If the name is empty, use 'No name' diff --git a/cmd/micro/tabbar.go b/cmd/micro/tabbar.go new file mode 100644 index 00000000..be5de108 --- /dev/null +++ b/cmd/micro/tabbar.go @@ -0,0 +1,35 @@ +package main + +func DisplayTabBar() { + str := "" + for i, v := range views { + if i == mainView { + str += "[" + } else { + str += " " + } + str += v.Buf.Name + if i == mainView { + str += "]" + } else { + str += " " + } + str += " " + } + + tabBarStyle := defStyle.Reverse(true) + if style, ok := colorscheme["tabbar"]; ok { + tabBarStyle = style + } + + // Maybe there is a unicode filename? + fileRunes := []rune(str) + w, _ := screen.Size() + for x := 0; x < w; x++ { + if x < len(fileRunes) { + screen.SetContent(x, 0, fileRunes[x], nil, tabBarStyle) + } else { + screen.SetContent(x, 0, ' ', nil, tabBarStyle) + } + } +} diff --git a/cmd/micro/view.go b/cmd/micro/view.go index ca1ad2ca..01e134a9 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -31,6 +31,9 @@ type View struct { width int height int + // Where this view is located + x, y int + // How much to offset because of line numbers lineNumOffset int @@ -40,6 +43,9 @@ type View struct { // Is the help text opened in this view helpOpen bool + // This is the index of this view in the views array + Num int + // Is this view modifiable? Modifiable bool @@ -91,6 +97,8 @@ func NewView(buf *Buffer) *View { func NewViewWidthHeight(buf *Buffer, w, h int) *View { v := new(View) + v.x, v.y = 0, 1 + v.widthPercent = w v.heightPercent = h v.Resize(screen.Size()) @@ -113,6 +121,8 @@ func NewViewWidthHeight(buf *Buffer, w, h int) *View { func (v *View) Resize(w, h int) { // Always include 1 line for the command line at the bottom h-- + // Include one line for the tab bar at the top + h-- v.width = int(float32(w) * float32(v.widthPercent) / 100) // We subtract 1 for the statusline v.height = int(float32(h) * float32(v.heightPercent) / 100) @@ -173,6 +183,7 @@ func (v *View) OpenBuffer(buf *Buffer) { v.Topline = 0 v.leftCol = 0 v.Cursor.ResetSelection() + v.Relocate() v.messages = make(map[string][]GutterMessage) v.matches = Match(v) @@ -459,12 +470,12 @@ func (v *View) DisplayView() { } for lineN := 0; lineN < v.height; lineN++ { - var x int + x := v.x // If the buffer is smaller than the view height if lineN+v.Topline >= v.Buf.NumLines { // We have to clear all this space for i := 0; i < v.width; i++ { - screen.SetContent(i, lineN, ' ', nil, defStyle) + screen.SetContent(i, lineN+v.y, ' ', nil, defStyle) } continue @@ -492,9 +503,9 @@ func (v *View) DisplayView() { gutterStyle = style } } - screen.SetContent(x, lineN, '>', nil, gutterStyle) + screen.SetContent(x, lineN+v.y, '>', nil, gutterStyle) x++ - screen.SetContent(x, lineN, '>', nil, gutterStyle) + screen.SetContent(x, lineN+v.y, '>', nil, gutterStyle) x++ if v.Cursor.Y == lineN+v.Topline { messenger.Message(msg.msg) @@ -504,9 +515,9 @@ func (v *View) DisplayView() { } } if !msgOnLine { - screen.SetContent(x, lineN, ' ', nil, tcell.StyleDefault) + screen.SetContent(x, lineN+v.y, ' ', nil, tcell.StyleDefault) x++ - screen.SetContent(x, lineN, ' ', nil, tcell.StyleDefault) + screen.SetContent(x, lineN+v.y, ' ', nil, tcell.StyleDefault) x++ if v.Cursor.Y == lineN+v.Topline && messenger.gutterMessage { messenger.Reset() @@ -525,18 +536,18 @@ func (v *View) DisplayView() { if settings["ruler"] == true { lineNum = strconv.Itoa(lineN + v.Topline + 1) for i := 0; i < maxLineLength-len(lineNum); i++ { - screen.SetContent(x, lineN, ' ', nil, lineNumStyle) + screen.SetContent(x, lineN+v.y, ' ', nil, lineNumStyle) x++ } // Write the actual line number for _, ch := range lineNum { - screen.SetContent(x, lineN, ch, nil, lineNumStyle) + screen.SetContent(x, lineN+v.y, ch, nil, lineNumStyle) x++ } if settings["ruler"] == true { // Write the extra space - screen.SetContent(x, lineN, ' ', nil, lineNumStyle) + screen.SetContent(x, lineN+v.y, ' ', nil, lineNumStyle) x++ } } @@ -594,11 +605,14 @@ func (v *View) DisplayView() { if x-v.leftCol >= v.lineNumOffset { screen.SetContent(x-v.leftCol, lineN, indentChar[0], nil, lineIndentStyle) } + if x-v.leftCol >= v.lineNumOffset { + screen.SetContent(x-v.leftCol, lineN+v.y, indentChar[0], nil, lineIndentStyle) + } tabSize := int(settings["tabsize"].(float64)) for i := 0; i < tabSize-1; i++ { x++ if x-v.leftCol >= v.lineNumOffset { - screen.SetContent(x-v.leftCol, lineN, ' ', nil, lineStyle) + screen.SetContent(x-v.leftCol, lineN+v.y, ' ', nil, lineStyle) } } } else if runewidth.RuneWidth(ch) > 1 { @@ -613,7 +627,7 @@ func (v *View) DisplayView() { } } else { if x-v.leftCol >= v.lineNumOffset { - screen.SetContent(x-v.leftCol, lineN, ch, nil, lineStyle) + screen.SetContent(x-v.leftCol, lineN+v.y, ch, nil, lineStyle) } } charNum = charNum.Move(1, v.Buf) @@ -632,7 +646,7 @@ func (v *View) DisplayView() { if style, ok := colorscheme["selection"]; ok { selectStyle = style } - screen.SetContent(x-v.leftCol, lineN, ' ', nil, selectStyle) + screen.SetContent(x-v.leftCol, lineN+v.y, ' ', nil, selectStyle) x++ } @@ -647,7 +661,7 @@ func (v *View) DisplayView() { } } if !(x-v.leftCol < v.lineNumOffset) { - screen.SetContent(x-v.leftCol+i, lineN, ' ', nil, lineStyle) + screen.SetContent(x+i, lineN+v.y, ' ', nil, lineStyle) } } } @@ -659,7 +673,7 @@ func (v *View) DisplayCursor() { if (v.Cursor.Y-v.Topline < 0 || v.Cursor.Y-v.Topline > v.height-1) || v.Cursor.HasSelection() { screen.HideCursor() } else { - screen.ShowCursor(v.Cursor.GetVisualX()+v.lineNumOffset-v.leftCol, v.Cursor.Y-v.Topline) + screen.ShowCursor(v.x+v.Cursor.GetVisualX()+v.lineNumOffset-v.leftCol, v.Cursor.Y-v.Topline+v.y) } } From 40affa56c74eebbd940a04b41e54eca3904962b5 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 8 Jun 2016 13:26:50 -0400 Subject: [PATCH 2/6] Create tab struct and reorganize tab bar --- cmd/micro/bindings.go | 52 ++++++++++++++++++--------------- cmd/micro/buffer.go | 5 ++++ cmd/micro/command.go | 12 ++++---- cmd/micro/micro.go | 32 ++++++++++---------- cmd/micro/runtime.go | 28 +++++++++--------- cmd/micro/statusline.go | 4 --- cmd/micro/tab.go | 65 +++++++++++++++++++++++++++++++++++++++++ cmd/micro/tabbar.go | 35 ---------------------- cmd/micro/view.go | 5 ++-- 9 files changed, 137 insertions(+), 101 deletions(-) create mode 100644 cmd/micro/tab.go delete mode 100644 cmd/micro/tabbar.go diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go index 9b1af052..28e284fb 100644 --- a/cmd/micro/bindings.go +++ b/cmd/micro/bindings.go @@ -73,8 +73,9 @@ var bindingActions = map[string]func(*View) bool{ "ShellMode": (*View).ShellMode, "CommandMode": (*View).CommandMode, "Quit": (*View).Quit, - "LastView": (*View).LastView, - "NextView": (*View).NextView, + "AddTab": (*View).AddTab, + "LastTab": (*View).LastTab, + "NextTab": (*View).NextTab, } var bindingKeys = map[string]tcell.Key{ @@ -382,6 +383,7 @@ func DefaultBindings() map[string]string { "CtrlD": "DuplicateLine", "CtrlV": "Paste", "CtrlA": "SelectAll", + "CtrlT": "AddTab", "Home": "Start", "End": "End", "PageUp": "CursorPageUp", @@ -921,12 +923,6 @@ func (v *View) OpenFile() bool { return false } -func (v *View) openInNewView(buf *Buffer) { - views = append(views, NewView(buf)) - mainView++ - views[mainView].Num = mainView -} - // Start moves the viewport to the start of the buffer func (v *View) Start() bool { v.Topline = 0 @@ -1089,16 +1085,16 @@ func (v *View) Quit() bool { return v.ToggleHelp() } // Make sure not to quit if there are unsaved changes - if views[mainView].CanClose("Quit anyway? (yes, no, save) ") { - views[mainView].CloseBuffer() - if len(views) > 1 { - views = views[:v.Num+copy(views[v.Num:], views[v.Num+1:])] - for i, v := range views { - v.Num = i - } - if v.Num <= mainView { - if !(v.Num == mainView && mainView == 0) { - mainView-- + if v.CanClose("Quit anyway? (yes, no, save) ") { + v.CloseBuffer() + if len(tabs) > 1 { + if len(tabs[v.TabNum].views) == 1 { + tabs = tabs[:v.TabNum+copy(tabs[v.TabNum:], tabs[v.TabNum+1:])] + for i, t := range tabs { + t.SetNum(i) + } + if curTab >= len(tabs) { + curTab-- } } } else { @@ -1109,16 +1105,24 @@ func (v *View) Quit() bool { return false } -func (v *View) LastView() bool { - if mainView > 0 { - mainView-- +func (v *View) AddTab() bool { + tab := NewTabFromView(NewView(NewBuffer([]byte{}, ""))) + tab.SetNum(len(tabs)) + tabs = append(tabs, tab) + curTab++ + return true +} + +func (v *View) LastTab() bool { + if curTab > 0 { + curTab-- } return true } -func (v *View) NextView() bool { - if mainView < len(views)-1 { - mainView++ +func (v *View) NextTab() bool { + if curTab < len(tabs)-1 { + curTab++ } return true } diff --git a/cmd/micro/buffer.go b/cmd/micro/buffer.go index b454c4fb..67175de5 100644 --- a/cmd/micro/buffer.go +++ b/cmd/micro/buffer.go @@ -51,9 +51,14 @@ type SerializedBuffer struct { func NewBuffer(txt []byte, path string) *Buffer { b := new(Buffer) b.LineArray = NewLineArray(txt) + b.Path = path b.Name = path + if path == "" { + b.Name = "No name" + } + b.ModTime, _ = GetModTime(b.Path) b.EventHandler = NewEventHandler(b) diff --git a/cmd/micro/command.go b/cmd/micro/command.go index e2a60749..5cabce01 100644 --- a/cmd/micro/command.go +++ b/cmd/micro/command.go @@ -62,8 +62,10 @@ func DefaultCommands() map[string]string { // Set sets an option func Set(args []string) { // Set an option and we have to set it for every view - for _, view := range views { - SetOption(view, args) + for _, tab := range tabs { + for _, view := range tab.views { + SetOption(view, args) + } } } @@ -85,13 +87,13 @@ func Run(args []string) { // Quit closes the main view func Quit(args []string) { // Close the main view - views[mainView].Quit() + CurView().Quit() } // Save saves the buffer in the main view func Save(args []string) { // Save the main view - views[mainView].Save() + CurView().Save() } // Replace runs search and replace @@ -138,7 +140,7 @@ func Replace(args []string) { return } - view := views[mainView] + view := CurView() found := false for { diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 00e54b3f..4c9ea68f 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -48,10 +48,10 @@ var ( L *lua.LState // The list of views - views []*View - // This is the currently open view - // It's just an index to the view in the views array - mainView int + tabs []*Tab + // This is the currently open tab + // It's just an index to the tab in the tabs array + curTab int ) // LoadInput loads the file input for the editor @@ -181,10 +181,10 @@ func InitScreen() { // RedrawAll redraws everything -- all the views and the messenger func RedrawAll() { messenger.Clear() - // for _, v := range views { - views[mainView].Display() - // } - DisplayTabBar() + for _, v := range tabs[curTab].views { + v.Display() + } + DisplayTabs() messenger.Display() screen.Show() } @@ -233,21 +233,21 @@ func main() { messenger = new(Messenger) messenger.history = make(map[string][]string) - // views = make([]*View, 1) + buffers := LoadInput() - for i, buf := range buffers { - views = append(views, NewView(buf)) - views[i].Num = i + for _, buf := range buffers { + tabs = append(tabs, NewTabFromView(NewView(buf))) } L.SetGlobal("OS", luar.New(L, runtime.GOOS)) - L.SetGlobal("views", luar.New(L, views)) - L.SetGlobal("mainView", luar.New(L, mainView)) + L.SetGlobal("tabs", luar.New(L, tabs)) + L.SetGlobal("curTab", luar.New(L, curTab)) L.SetGlobal("messenger", luar.New(L, messenger)) L.SetGlobal("GetOption", luar.New(L, GetOption)) L.SetGlobal("AddOption", luar.New(L, AddOption)) L.SetGlobal("BindKey", luar.New(L, BindKey)) L.SetGlobal("MakeCommand", luar.New(L, MakeCommand)) + L.SetGlobal("CurView", luar.New(L, CurView)) LoadPlugins() @@ -261,10 +261,10 @@ func main() { if searching { // Since searching is done in real time, we need to redraw every time // there is a new event in the search bar - HandleSearchEvent(event, views[mainView]) + HandleSearchEvent(event, CurView()) } else { // Send it to the view - views[mainView].HandleEvent(event) + CurView().HandleEvent(event) } } } diff --git a/cmd/micro/runtime.go b/cmd/micro/runtime.go index 1664d50f..44145d30 100644 --- a/cmd/micro/runtime.go +++ b/cmd/micro/runtime.go @@ -195,7 +195,7 @@ func runtimeColorschemesDefaultMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/colorschemes/default.micro", size: 440, mode: os.FileMode(420), modTime: time.Unix(1464789733, 0)} + info := bindataFileInfo{name: "runtime/colorschemes/default.micro", size: 440, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -215,7 +215,7 @@ func runtimeColorschemesSolarizedTcMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/colorschemes/solarized-tc.micro", size: 659, mode: os.FileMode(420), modTime: time.Unix(1464789148, 0)} + info := bindataFileInfo{name: "runtime/colorschemes/solarized-tc.micro", size: 659, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -235,7 +235,7 @@ func runtimeColorschemesSolarizedMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/colorschemes/solarized.micro", size: 530, mode: os.FileMode(420), modTime: time.Unix(1464789633, 0)} + info := bindataFileInfo{name: "runtime/colorschemes/solarized.micro", size: 530, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -255,12 +255,12 @@ func runtimeHelpHelpMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/help/help.md", size: 7253, mode: os.FileMode(420), modTime: time.Unix(1464788885, 0)} + info := bindataFileInfo{name: "runtime/help/help.md", size: 7253, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _runtimePluginsGoGoLua = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x52\x4f\x6b\xdb\x30\x14\xbf\xfb\x53\x3c\x04\x03\x6b\xf1\x0c\xbb\x1a\x72\xd8\x06\xcb\x69\x64\x6c\x63\x97\x90\x16\xd5\x7e\x8e\x45\x65\xc9\x48\x72\xd2\x52\xfa\xdd\xfb\xfc\x27\xad\x9c\x38\x14\x42\x75\x49\xfc\xfc\x7b\xbf\x7f\x96\x2c\x61\x85\x7e\xdd\x78\x69\x74\xcc\x76\x46\xd6\x8d\xb1\xde\x31\x0e\xcb\x25\x68\xa9\xc0\x57\xa8\x23\xa0\xf3\xad\x28\xce\x61\x09\x94\x42\x39\xe4\x11\xea\x22\x3a\xe5\x2a\x6b\xff\x1e\x4f\x07\x49\xc0\xdb\x76\xa4\x88\x7e\x89\x7b\xfc\x61\xea\x5a\xe8\x62\xaa\x43\x0f\xb7\x81\xbd\x53\xe0\x40\x34\x80\x7a\xdd\x28\x2a\x5b\x9d\x77\x3a\x40\x43\xa3\xff\x8a\x3d\xc6\xbc\x77\x40\x3e\xf7\x12\x0f\x6e\x53\x0b\xa9\xff\xd3\xbf\xc5\xd7\x6d\xfa\xbd\x2d\xd3\x9f\x52\xe1\xbf\xc7\x06\x3b\xcf\x6c\x65\xd8\x9b\xe9\x71\xed\x42\x55\x13\x58\x77\x42\xaf\xa3\x68\x77\x90\xaa\x9a\x2f\x69\x9e\x81\xde\x85\xdb\xd4\xcf\xf1\xb7\xef\x2a\x0c\x18\x82\xcf\xc2\x65\x41\x78\x65\x72\xa1\xa0\xa2\xda\x14\xe5\x04\x69\xd2\xc6\x34\x78\xb4\x02\x5f\x0e\xc0\x20\x4d\x2f\x14\xf4\x5b\xf8\x2a\xa4\xb1\xe8\x5a\xe5\x89\x66\xe0\xcb\x2c\x0a\xfa\x1a\x9f\x05\x1b\x40\xe3\x34\x57\xc6\x75\xf2\x17\xcc\xfd\xc1\x75\x67\x80\xcf\x85\x9a\x76\x78\x6d\xb0\x91\xe5\xda\x70\xe4\xc4\x35\x4a\xfa\xf8\x2c\x25\xdd\xb8\xec\x83\xb2\x0e\x0a\xce\xdb\x04\x1c\x36\xb3\x3e\x9e\x9e\x27\xd3\x1d\x3e\xd0\x30\x66\xf1\xe6\xe6\x93\xdb\x2e\x38\xe3\x59\x69\x6c\x2d\x88\xe5\x48\x40\xcf\x80\x22\xaf\x40\x6a\x20\xea\x6c\x47\x6f\xf3\x2a\xee\x77\x39\x14\xe6\xf5\x6e\x79\x71\xa7\x30\x95\xda\xa1\xf5\xf1\x20\x98\xf4\x9b\x3c\x0a\xaf\x9e\x45\xdf\x5a\x3d\x3a\xea\x33\xbc\x04\x00\x00\xff\xff\x96\x4d\x4a\x5a\x40\x04\x00\x00") +var _runtimePluginsGoGoLua = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xa4\x52\xdd\x6a\xdb\x30\x14\xbe\xf7\x53\x1c\x04\x03\x69\xf3\xfc\x00\x86\x5c\x6c\x81\xe5\x6a\x64\x6c\x63\x37\x63\x1b\x9a\x7d\x1c\x8b\xca\x92\x91\xe4\xa6\xa5\xf4\xdd\x7b\xfc\x93\x54\x76\x5c\x4a\xa8\x6e\x8c\x8f\xbe\xf3\xfd\x21\x55\xc1\x0e\xc3\xbe\x0d\xca\x1a\xce\x0e\x56\x35\xad\x75\xc1\x33\x01\x9b\x0d\x18\xa5\x21\xd4\x68\x12\xa0\xf3\xa9\x2c\x2f\x61\x29\x54\x52\x7b\x14\x09\x9a\x32\x59\x72\x55\x4d\x78\x8d\xa7\x87\xa4\x10\x5c\x37\x51\x24\x5f\xe5\x0d\x6e\x6d\xd3\x48\x53\xce\x75\xe8\xe7\x5f\x64\x6f\x09\x1c\x89\x46\xd0\xa0\x9b\x24\x55\x67\x8a\x5e\x07\x68\x68\xcd\x0f\x79\x8b\x5c\x0c\x0e\xc8\xe7\xb6\x73\xbf\x14\x1e\xb9\xc8\x3e\x77\x55\xf6\x45\x69\xfc\x79\xdf\x62\xef\x95\xed\x2c\x7b\x36\x3b\xc1\x5f\xa8\x68\x06\xeb\x4f\xec\x71\x12\xeb\x0f\x52\x45\xeb\xe5\xac\x33\xd0\x5d\xbc\x4d\xbd\x9c\xbe\x43\x47\x71\xb0\x18\x7c\x0e\x95\x47\x61\xb5\x2d\xa4\x86\x9a\x6a\xd2\x94\x0f\x94\xcd\x5a\xdb\xe2\xc9\x02\x7c\x3c\x02\x83\x2c\x5b\x14\xf2\x4d\x86\x3a\x5e\x77\xe8\x3b\x1d\x68\x7d\xe4\xc9\x1d\x4a\x6a\xfd\xbd\x64\x23\x68\x9a\x16\xda\xfa\x5e\x76\x61\xe6\x3b\xee\x7b\x41\xb1\x66\x7e\xde\xd5\xb5\x01\xa6\xed\x6b\x43\x90\xb2\x6f\xb5\x0a\xfc\x22\x0d\xbd\xa0\xfc\x8d\x99\x46\x66\x1f\x5c\x0a\x1e\xdb\x55\xfd\x87\xc7\xd9\xf4\x80\x77\x34\xe4\x8c\xff\xfe\xfb\xce\xff\xf9\x20\x98\xc8\x2b\xeb\x1a\x49\x2c\x27\x02\xfa\x07\x94\x45\x0d\xca\x00\x51\xe7\x07\xba\x2d\x6a\x3e\xec\x0a\x28\xed\xf9\xad\x04\xf9\x5f\x63\xa6\x8c\x47\x17\xf8\x28\x98\x0e\x9b\x22\x89\x9f\x92\xc3\xd0\x39\x33\x39\x1a\x32\x3c\x05\x00\x00\xff\xff\x06\xfe\xea\x24\x08\x04\x00\x00") func runtimePluginsGoGoLuaBytes() ([]byte, error) { return bindataRead( @@ -275,12 +275,12 @@ func runtimePluginsGoGoLua() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/plugins/go/go.lua", size: 1088, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/plugins/go/go.lua", size: 1032, mode: os.FileMode(420), modTime: time.Unix(1465403835, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _runtimePluginsLinterLinterLua = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x55\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\x41\x10\xd3\x20\x26\x92\x82\xe6\xd1\x40\x06\x74\x1d\x16\x60\xe8\xd6\x02\xe9\xd6\x87\xae\x2b\x68\xe9\x64\x71\xa5\x48\x81\xa4\xe2\x18\xc3\xfe\xf7\x1d\x49\x45\x96\x35\x39\xaa\x10\x84\x67\x8a\xf7\x7d\xf7\xe3\xd3\x51\xd4\xe4\x1e\xdc\xbb\xce\x09\xad\x52\x2a\x85\x72\x60\x28\x23\x77\x77\x44\x09\x49\x5c\x03\x6a\x43\xf0\x79\x5d\x55\xb3\x33\x19\x71\xa6\x07\xb6\x01\x55\x6d\x36\x75\xaf\x4a\xff\x96\xc4\x97\x5f\xb4\x7a\xe0\x8f\x90\xb2\xe0\x7b\x81\x62\xc4\xf6\x8f\xd4\x25\x97\xa4\x76\xe4\x8e\x3c\x0a\x38\xd8\x4f\x2d\x17\xea\x0f\xb4\xae\x5f\x7d\x2e\x7e\xec\xeb\xe2\x67\x21\xe1\xc3\xb1\x83\xb9\x07\x6e\x5f\xf4\x79\xcf\x5d\x33\x3b\x5f\xc1\xa3\xea\xa5\x44\x17\x7a\x83\xf6\x8d\xff\x41\xc7\x33\x18\xe9\xbb\x07\x9f\x3b\x3d\x08\x55\xe9\x83\xa5\xe7\x51\xfa\x67\x82\xf0\xdb\xef\x6f\x4f\xbe\xbe\x0e\x13\x1c\x9f\x0a\x1e\xb9\xd7\x0b\x10\x43\x91\xfc\x92\xd2\xbd\xde\xf5\x42\x56\x58\x4f\x34\x49\xb0\x49\xae\x09\x25\x45\xf1\xcc\x85\xaf\x92\x7a\x9b\xc8\x2d\x49\x5a\xca\x5e\x82\xf2\x6b\x44\xf2\x56\x04\xb9\x5c\x9b\x11\x37\xa9\xae\x67\xd8\x20\x2d\x9c\xb2\x78\xdb\xf3\xb5\x34\x64\xcf\xcb\x06\xca\xaf\x9e\xfd\xd9\x26\x79\xae\x74\x5e\x6a\xa9\x4d\x0c\xc5\x77\xeb\x9b\x49\xdf\x1f\x5d\xa3\xd5\x1a\x6f\x77\xac\x25\xff\x0a\xd6\xf3\x3e\xdb\x0b\x64\x2f\x11\xbd\x59\x6d\x51\x59\x86\xa2\x96\x25\xc9\x6b\x7b\x54\x8e\x3f\xe5\x5a\xc9\x23\xc9\x3f\x72\x54\x42\xfe\x11\x9e\x9c\xe1\x17\x52\x2c\x5e\xce\xf2\xa7\x35\xf2\xaa\x0d\xda\xc0\x85\xc4\x52\xde\xe9\xba\x46\x85\xe4\x24\x3f\xe0\x9f\xc0\xdd\x19\x73\x92\x26\x32\x61\x6b\xc4\xbf\xf0\xc7\xd5\xa6\xfe\x8d\x67\x42\xea\xc1\x58\x2a\x2b\x18\xa3\xcd\x2a\xcf\x43\x69\x44\xe7\x56\xd9\x6c\x33\xc8\x37\x5a\x73\x3e\x7f\x1a\x48\x22\xb3\xe2\x3a\x9b\x31\x0e\xdf\x9e\x67\x1e\x37\xff\xa7\xfb\xed\x1b\x09\xdc\xbc\x96\xf2\xbe\x77\xc8\xfa\x2b\x58\xcb\xf7\x60\x87\x29\xe5\x31\x16\x67\x59\x08\x2e\xda\x19\x29\xdb\x2a\x8b\x49\xd7\xda\xb4\xdc\x45\xdf\x0b\x54\x33\x9e\x88\xc1\x36\xc1\x25\x8e\xa3\x86\xab\x2a\x0c\x30\xa1\x8b\x4e\x77\x80\xf3\x31\x0d\x59\x23\x8f\x5f\x28\x0b\xbf\x28\xb9\xfd\xe1\xfb\x57\x43\xc2\xd1\xd3\xd7\xc2\xa2\xe3\x10\xa4\xed\xa4\x70\x69\x84\xdb\x1a\xe0\x55\x4a\xaf\x38\x65\x58\xb8\x3f\xd5\xe0\x37\xbc\x2c\xa5\xb6\x7e\x32\x4f\xb0\x0c\xec\xe1\x09\xb1\x26\x79\x6d\xf7\xb6\xdf\xa5\x34\x49\x6a\xdf\x8f\xb4\xb8\x66\x94\x8d\x7b\x32\xec\xa1\xb8\xa7\x9b\xed\xe9\x60\x80\x46\x1c\xf2\x25\x0b\x2d\x13\x8a\x88\x8e\x0b\x13\x4a\x00\x96\x91\x4a\x8f\x5d\xca\x73\xf2\xc1\x88\x96\x1c\x1a\xe1\xc0\x76\xbc\x9c\x4c\x78\xef\x1b\x32\x84\x2d\x86\x54\x36\x29\xfd\x2b\xb1\x57\x9e\x03\x97\xef\x26\xfd\x47\xb5\x59\x67\x84\xda\x17\x35\xce\xed\xc0\x92\xc5\xac\xd8\x82\xe6\xc6\x8b\x23\x23\xf1\x64\x6b\xf7\xc8\x33\x20\x44\xa6\x29\xc4\x99\x37\x52\x0d\x25\xdf\x71\x0b\x8a\xb7\x90\x5e\x1e\xb0\xe1\x1e\x9d\x1f\xf7\xcc\x0b\x61\x2d\xeb\xe8\x4c\x42\xa3\x0a\x9d\x56\x7d\xbb\x03\x13\xc2\x64\x21\x81\x8c\xdc\x9e\x07\x3a\xbd\x8f\xc6\xef\xe3\x92\xc6\xa3\x7c\xb0\x02\x19\xb1\xd0\xb1\x33\x6d\xd8\x5e\xfa\x6b\xf9\x9f\x7f\x17\x14\x83\x72\xfd\x84\x3d\xf9\x1c\x94\x10\x95\x93\x8e\x00\x5e\x01\x80\x37\x81\xef\x3f\x42\x6f\xf7\xb1\xb4\x43\x5f\x26\x1a\x70\x7c\x27\xa1\x10\xca\x82\x71\x69\x24\xcc\x82\xe7\xe9\xcb\xf4\xab\x01\xd7\x1b\x35\x44\xb4\x9c\xc7\x79\x91\x27\x01\xfb\xcd\x53\x8f\x83\x66\x87\xc1\x92\x16\x57\x37\x0c\xff\x31\xaf\xdf\xe4\x76\x50\xd5\xc0\xe5\xdd\x02\xd3\x7f\x01\x00\x00\xff\xff\x42\x2c\x44\xb3\x27\x09\x00\x00") +var _runtimePluginsLinterLinterLua = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x55\xdb\x6e\xe3\x36\x10\x7d\xf7\x57\x10\x44\x55\x88\x89\xa4\xa0\x79\x34\x90\x02\xdb\x14\x0d\x50\x6c\xbb\x0b\x64\xdb\x7d\xe8\x65\x41\x4b\x23\x8b\x0d\x45\x0a\x24\x15\xc7\x28\xfa\xef\x1d\x92\x8a\x2c\x2b\x4a\xb4\x46\x10\x8e\xa9\x99\x73\xe6\x72\x3c\x12\x35\xb9\x03\xf7\xa1\x73\x42\xab\x94\x4a\xa1\x1c\x18\xca\xc8\xcd\x0d\x51\x42\x12\xd7\x80\xda\x10\xfc\xbc\xab\xaa\x99\x4f\x46\x9c\xe9\x81\x6d\x40\x55\x9b\x4d\xdd\xab\xd2\x3f\x25\xf1\xe1\x17\xad\xee\xf9\x23\xa4\x2c\xc4\xbe\x42\x31\x62\xfb\x8f\xd4\x25\x97\xa4\x76\xe4\x86\xdc\xf6\xe6\x77\x01\x87\x94\x15\x3f\xf4\x75\xf1\x93\x90\xf0\xe9\xd8\xc1\xdc\x13\xaf\x5f\xf8\x7e\xe4\xae\x99\xf9\x55\xf0\xa8\x7a\x29\xd1\x95\x5e\xa1\x7d\xe5\xbf\xd0\xd1\x07\x33\xfb\x70\xef\x6b\xa5\x07\xa1\x2a\x7d\xb0\xf4\x3c\x2b\xff\x99\x20\xfc\xfa\xdb\xfb\x53\xac\xaf\x7b\x82\xe3\x53\x47\x97\x3b\xbd\x00\x31\x34\xc5\x1f\x29\xdd\xeb\x5d\x2f\x64\x85\xfd\x43\x93\x04\x9b\xe4\x9a\x50\x52\x14\xcf\x5c\xf8\x28\xa9\xb7\x89\xdc\x92\xa4\xa5\xec\x2d\x28\x7f\x46\x24\x6f\x45\x90\x97\x3d\x19\xf1\x92\xea\x72\x86\x09\xd2\xc2\x29\xfb\xf7\x3d\x5f\x4b\x5f\xf6\xbc\x6c\xa0\x7c\xf0\xac\xcf\x36\xc9\x73\xa5\xf3\x52\x4b\x6d\x62\x0a\x7e\x3a\x5f\x4d\xfa\xf1\xe8\x1a\xad\xd6\x78\xbb\x63\x2d\xf9\x03\x58\xcf\xfb\x6c\x2f\x90\xbd\x45\x74\xbb\x3a\x9a\xb2\x0c\xcd\x2c\x4b\x92\xd7\xf6\xa8\x1c\x7f\xca\xb5\x92\x47\x92\x7f\xe6\xa8\x80\xfc\x33\x3c\x39\xc3\x5f\x29\xb1\x78\xbb\xca\x1f\xd7\xc8\xab\x36\x68\x02\x0f\x12\x5b\x79\xa3\xeb\x1a\x95\x91\x93\xfc\x80\x7f\x02\x6f\x67\xcc\x49\x9a\xc8\x84\xad\x11\xff\xcc\x1f\x57\x87\xfa\x0f\xfa\x84\xd2\x83\xb1\xd4\x56\x30\x46\x9b\x55\x9e\xfb\xd2\x88\xce\xad\xb2\xd9\x66\x90\x6d\xb4\xe6\x7c\xde\x1b\x48\x22\xb3\xe2\x32\x9b\x31\x0e\xbf\x39\xcf\x3c\x5e\x8e\x7a\xdf\xde\x4a\xe0\xe6\x9d\x94\x77\xbd\x43\xb6\x5f\xc0\x5a\xbe\x07\x3b\x6c\x21\x1f\xbb\xb8\xab\x42\x52\xd1\xce\x48\xd9\x56\x59\x2c\xb6\xd6\xa6\xe5\x2e\xc6\xce\x28\x66\xf8\x31\x96\x6d\x82\x6b\x5c\x3b\x0d\x57\x55\x58\x50\x42\x17\x9d\xee\x00\xf7\x5e\x1a\xaa\x44\x7c\x7f\x50\x16\xbe\x51\x72\xfd\xfd\xb7\xdf\x0d\x05\xc6\x48\x5f\xbb\xc5\xc0\x21\x39\xdb\x49\xe1\xd2\x08\xb7\x35\xc0\xab\x94\x5e\x70\xca\xb0\x51\x7f\xaa\x21\x6e\x78\x58\x4a\x6d\xfd\xc6\x9d\x60\x19\xd8\xc3\x13\x62\x4d\xea\xd9\xee\x6d\xbf\x4b\x69\x92\xd4\xbe\xff\x69\x71\xc9\x28\x1b\xef\x64\xb8\x43\x31\x4f\x2f\xdb\x93\x63\x80\x46\x1c\xf2\x25\x0b\x23\x12\x8a\x88\x8e\x0b\x13\x5a\x00\x96\x91\x4a\x8f\x53\xc9\x73\xf2\xc9\x88\x96\x1c\x1a\xe1\xc0\x76\xbc\x9c\x6c\x70\x1f\x1b\x2a\x84\x2d\xa6\x54\x36\x29\xfd\x3b\xb1\x17\x9e\x03\x8f\x6f\x26\xf3\x46\x75\x59\x67\x84\xda\x17\x35\xee\xe7\xc0\x92\xc5\xaa\xd8\x82\xc6\xc6\x17\x43\x46\xa2\x67\x6b\xf7\xc8\x33\x20\x44\xa6\x29\xc4\x59\x34\x52\x0d\x2d\xdf\x71\x0b\x8a\xb7\x90\xbe\x5c\xa4\xe1\xbd\x38\x77\xf3\x8c\x0b\xe9\x9c\xeb\xe6\x4c\x32\xa3\xda\x9c\x56\x7d\xbb\x03\x13\xd2\x62\x21\xe1\x8c\x5c\x9f\x27\x36\x7d\xcf\x8c\xfa\x7f\x4d\xcb\x51\x2e\x58\x71\x46\x2c\x74\xec\x4c\x0b\xb6\x97\xfe\xf5\xfa\xef\x7f\x0b\x0a\x41\x79\xfe\x81\x33\xf8\x2b\x4c\x3e\x2a\x25\x1d\x01\xfc\xc4\x01\x37\xbd\x9f\x37\x42\x6f\xf7\xb1\x95\xc3\x1c\x26\x33\x77\x7c\x27\xa1\x10\xca\x82\x71\x69\x24\xcc\x42\xe4\xe9\x17\xe8\x4f\x03\xae\x37\x6a\xc8\x68\xb9\x8e\xf3\xe6\x4e\x12\xf6\x97\xa7\x99\x06\x8d\x0e\x8b\x23\x2d\x2e\xae\x18\xfe\x63\x5e\xaf\xc9\xf5\xa0\xa2\x81\xcb\x87\x05\xa6\xff\x03\x00\x00\xff\xff\xc7\x61\x41\xe2\xef\x08\x00\x00") func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( @@ -295,7 +295,7 @@ func runtimePluginsLinterLinterLua() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/plugins/linter/linter.lua", size: 2343, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/plugins/linter/linter.lua", size: 2287, mode: os.FileMode(420), modTime: time.Unix(1465403847, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -355,7 +355,7 @@ func runtimeSyntaxMakefile() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/syntax/Makefile", size: 17, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/syntax/Makefile", size: 17, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -720,7 +720,7 @@ func runtimeSyntaxErbMicro() (*asset, error) { return a, nil } -var _runtimeSyntaxFishMicro = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x55\x5b\x6f\x1b\x37\x13\x7d\xf7\xaf\xd8\xac\x8c\xcf\x92\xf3\xd9\x4d\xd2\x24\x68\xd3\x8b\x5b\x14\x28\xfa\xd4\x97\x02\x7d\xa8\xd7\x76\xb9\xdc\xd9\x5d\x66\x79\x0b\x2f\x92\xd5\x4c\xfe\x7b\x0f\x29\xa5\x49\x00\x1b\x10\x87\x5c\x72\x38\x97\x33\x87\xa3\xd5\xaa\xf9\x8d\x02\x35\x2a\x36\xc2\x36\x74\x2f\x8c\xd7\xd4\x8c\x2e\x34\xbf\xaa\x38\x37\x71\x26\xad\x9b\x28\x83\xf2\x29\x5e\x9e\xac\x56\x27\x71\x6f\x93\xb8\x6f\xda\x11\xc7\x6d\xd3\x76\x97\x65\x71\xda\x9e\xcc\x24\x06\x0a\x4d\x7b\xbb\x7a\x72\x79\xfe\xd5\x9a\xec\xb6\x79\xba\xb9\x2a\x87\xeb\x86\x4f\x37\xed\x09\x2e\x37\xbf\x67\xd3\x53\x88\x27\xd2\x69\x78\xe8\x83\x9a\xe6\x24\xf7\x70\xdc\x76\xfd\xf5\xb3\x8b\x6f\x6f\x9e\x76\xfd\x41\xf3\x17\x67\x07\x95\x94\xb3\x42\x97\xc8\x86\x46\x3a\x9b\x82\xd3\xcd\xa8\xdd\xee\x8b\xfb\x7b\x44\xe8\x76\xc5\xc2\x1a\x7a\xdc\xd3\xa4\x2c\xf7\x81\xc4\xc2\x52\x44\xe2\x72\x51\xd9\x4c\x4c\x1a\x5f\x04\x15\x64\xc7\x63\xb6\xb2\x98\x67\x35\xb2\x75\x89\xb1\x15\x28\xe5\x60\x39\x92\x26\x99\x38\xce\x6a\x84\xdc\xa9\x24\x67\xde\xcd\x4a\xd3\xa6\xc4\xf6\xb9\x67\x23\x26\x02\x18\x4d\xbb\xee\xde\x73\xf7\x81\xbb\x35\x77\x1b\xee\xbe\xe3\xee\x86\xbb\x6b\xfe\x9b\xbb\x8e\xbb\x53\xfe\x9e\x7f\xe4\x5b\x7e\xc2\x3f\xf0\xff\xb8\xe3\x23\x12\x15\x5d\xe9\x8c\x41\xcc\x1f\xf1\x98\x02\x51\x85\x62\xdd\x4f\xdc\xab\x92\x8c\x76\x72\x39\x24\xe3\x9d\xb2\x89\xfb\xac\x34\xb2\x61\x39\x20\xaf\x8c\x8d\xa3\x89\x8f\xb3\x56\xb6\x64\x5c\x8a\x98\x88\x07\x15\xe6\x22\x22\x93\x9c\x1d\x93\x51\x89\x69\x2b\x34\xd3\x3d\x49\x08\x7c\x8e\x13\x97\x1a\x55\x71\x07\xa8\x46\x75\xd8\xb8\x53\x03\x72\x3b\x2c\x3d\xf2\x0c\xc7\x65\x80\xed\xe3\x76\xc5\xe0\x8b\x9d\xec\x07\x91\xe8\xee\xe8\x1f\xe8\xc6\xba\x3f\x54\xb4\xe9\x30\x45\xb1\xa5\xff\xd0\x8f\x0c\x7e\x79\x9e\x55\x4c\x2e\xec\xf9\xad\xeb\x23\x1b\x91\x66\x36\xca\xd0\xd0\xb3\xa5\xfb\x34\xb0\xf3\x64\xd9\x3b\x3f\xb0\x0f\xb4\x85\x8c\xb9\x67\x9f\x8b\x61\xbf\x1b\x38\x20\x6f\x67\x50\x3e\x31\xa0\x78\xa9\x8c\xbb\x0a\x28\xc7\x24\x52\x8e\x98\x82\xb2\x13\xa7\x20\x3c\xa7\xbd\x27\xce\x5a\x15\x28\xb2\x11\x71\xe1\xad\x08\x34\x6c\x3e\xf1\xce\x18\x67\x1b\xe0\x98\xef\x1f\xaf\xcf\x7a\x62\x35\x6d\xae\xc4\x0e\xc5\x11\x40\x6f\x10\x15\x42\xd4\xa1\xdb\xbd\x7f\xf6\xff\x97\x1f\xa0\xea\x79\x51\x5a\x57\x21\x30\x1f\x0f\x34\xc5\x92\xe2\x42\xec\xeb\x71\x04\x2c\xb8\x9b\x44\xf8\x2c\x84\x40\x39\x29\xf0\xfe\x71\x7e\x80\xd8\xaf\x5f\x16\xdf\x64\x85\x41\xc5\x05\x98\x30\xa3\x7c\x90\x53\xf0\x90\xc6\x81\x13\xb3\xdb\x95\x9d\xe0\x40\x70\xb9\xc4\x6c\x2a\x4d\x58\x42\x21\x7a\x0d\x04\x64\x4e\x5c\x4a\xc6\xc3\xc0\xc3\x58\xa8\x52\x46\xf5\x16\xcb\xaa\x1a\x1f\x32\x5e\xcd\x16\x74\xf1\x85\x68\x98\xc0\x05\x21\x53\x79\x44\xa2\x3c\xa9\xd1\xa0\xfc\x4e\x0f\x5c\x5a\x00\xcf\x2e\x26\x35\x70\xf9\x59\xe0\x8f\x14\xdf\x82\xb9\x0c\x40\x17\xd6\x98\xdd\x54\x8d\x6a\xa0\x30\xbc\x2a\x21\x99\xa5\xb8\x35\xcb\xa8\x46\x87\xc9\x22\x70\xb3\x24\x32\x9e\xcd\x96\xad\x92\xc4\x56\xe3\x89\xce\xd9\xb3\x05\xd9\x24\xdb\x6c\x8a\x4b\xe8\x79\x11\x11\xbb\x07\x61\xe4\xbc\xb0\x87\x8b\x3d\x28\x82\x1f\x9e\x4a\x09\xb9\x2e\x46\xf6\xe9\xfe\x40\x14\xc4\x57\xe3\xc0\x42\x97\x5b\x1c\x40\x1b\x53\xdc\x07\x10\xd2\x95\xb7\xff\x8e\xd7\x71\x16\xcf\x51\x13\xf1\xe2\xc5\xcb\x3a\xbd\x7a\x5d\xa6\xaf\xbf\xa9\x5f\xaf\x9e\xbf\xd8\x94\xa8\xe3\x1c\x6a\xe5\xf2\xc8\x51\x13\x8a\x1d\x5d\x00\xf5\x2a\xaa\x85\x76\x10\x43\x5f\x0e\x53\xda\x73\xbd\xb0\xb7\x12\x65\x2e\x43\x69\x4e\x44\x18\x31\x71\x02\xd1\xab\x70\x28\x45\x72\x19\xcd\x26\x05\xfc\xd0\xaf\x52\x09\xaa\x14\x27\x55\xdb\xc5\x50\xae\xd8\x65\x7b\xac\x45\xb6\xea\x1d\x44\xcd\x29\x47\x34\x56\xde\x96\x64\x76\x12\x0d\xcb\x95\x21\x8c\xe2\x3d\xc5\xcd\x03\x5d\x15\x8d\x54\x4c\xf1\xc1\x4e\x7a\x71\x71\x2d\x2e\xfe\xb9\xb8\x79\xda\x3e\xdc\x68\x9b\x7a\x5e\x8e\x8b\xcd\x3f\xea\xeb\x7a\xa8\xa7\xa3\x2f\x76\x97\x7c\x7d\xdb\xde\x6c\xce\xdb\xf6\x01\x85\xb3\xa3\xc2\x19\x14\xce\x1e\xe9\xad\xed\x23\xfb\x67\x07\xef\x7f\x8a\xa0\x44\x8f\x57\xf5\xa0\xd6\x5a\x6d\x10\xef\x69\xf7\xfe\xaa\xfc\xbb\xfc\x7c\xf1\xd7\xdd\x93\x9f\x56\xa7\xe7\x57\xc8\xad\xfb\x70\xf5\xe9\xc5\x43\xf9\x4b\x03\xbd\x16\x72\x41\x63\xbf\xe5\xeb\xeb\x37\xd1\x0b\x49\x6f\x6e\x6e\x36\xab\xcb\x73\xfc\xd3\xfd\x1b\x00\x00\xff\xff\x09\x05\x1b\x07\x33\x07\x00\x00") +var _runtimeSyntaxFishMicro = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x55\x6d\x6f\x1c\x35\x10\xfe\x9e\x5f\xb1\xdd\x44\xcd\x5d\x4a\x42\x5b\xda\x0a\xca\x4b\x40\x40\x25\x3e\x40\x3f\x80\x50\x44\x36\x09\xde\xb5\x77\xd7\x3d\xbf\xd5\x2f\x77\x39\x3a\xfd\xef\x3c\xe3\xbb\xa6\x42\xa1\xd2\x79\xec\xf5\xd8\xe3\x99\x79\x9e\x99\x4b\x5b\x97\xc5\x6d\xd3\x8e\x3a\xcd\x6d\xd3\x76\x67\xbc\x38\x6a\x0f\x66\x25\xa4\x8a\x4d\x7b\x7d\xf8\xe0\xec\xe4\xf3\x85\x72\xeb\xe6\xd1\xf2\x9c\x95\x8b\x86\x8e\x96\xed\xc1\xc1\x61\xf3\x5b\xb1\xbd\x8a\xe9\x60\xf0\xc6\xc7\x66\xf0\x2e\x65\xe1\x32\x8c\xf4\x97\x8f\x4f\xbf\xba\x7a\xd4\xf5\xf5\xd8\x8f\xde\x49\x9d\xb5\x77\xc2\xa4\x46\x38\xc9\x27\x73\xf4\xa6\x19\x8d\xdf\xec\x2f\xe3\x66\x56\x56\xed\x6e\x2f\x70\x88\x7a\x35\x69\x47\x7d\x54\x62\x45\x83\x48\x8a\xf8\x96\x76\x45\x91\x32\xf8\x52\x38\x32\xfa\x48\x63\x71\x03\xdb\x26\x3d\x92\xf3\x99\xb0\x15\x55\x2e\xd1\x51\x52\x46\x0d\x99\xd2\xac\x47\xc8\x8d\xce\xc3\x4c\x9b\x59\x1b\xb5\x64\xbf\xf6\xcf\x06\x35\x68\x61\x9a\x76\xd1\xbd\xa3\xee\x3d\x75\x0b\xea\x96\xd4\x7d\x4d\xdd\x15\x75\x97\xf4\x37\x75\x1d\x75\x47\xf4\x0d\x7d\x47\xd7\xf4\x80\xbe\xa5\x87\xd4\xd1\x2e\xf8\x57\x48\x05\x22\xb1\x16\xce\x7e\x48\x41\xde\x06\x55\x03\xe8\x27\xea\x35\x07\x61\xfc\xb0\xda\x05\x11\xbc\x76\x99\xfa\xa2\x0d\xa2\xa0\x41\x22\x9e\x82\x8d\xbd\x85\x0f\xb3\xd1\x8e\x23\xb5\xc1\xa8\xac\x48\xea\x38\xb3\x48\xa4\x86\xd9\x93\xb2\x3a\x93\x5a\x0b\x43\xea\x56\x0d\x10\xf8\x1c\x27\x62\x50\xaa\xb8\x41\x8a\x46\xbd\xdb\xb8\xd1\x12\xd9\xdc\x2d\x83\x98\x54\xdc\x2f\x23\x6c\xef\xb7\xa3\x9e\xe6\xfc\x9f\x9d\x12\x24\x60\xb8\xd9\xbf\x8f\xac\xa6\xba\x2f\x6b\x96\xd5\x6e\x4a\x62\xad\xee\xb2\x9e\x68\x56\x26\xd0\xac\x53\xf6\x71\x4b\x6f\x7c\x9f\xc8\x8a\x3c\x93\xd5\x56\xc9\x9e\x9c\xba\xcd\x92\x7c\x50\x8e\x82\x0f\x92\x42\x54\x6b\xc8\x54\x7a\x0a\x85\x0d\x87\x8d\xa4\x88\xb8\xbd\x05\x6c\x42\x02\xb4\xcc\xe3\xa6\xe6\x93\x98\x15\x25\x61\x8a\xda\x4d\x94\xa3\x08\xc4\x29\xa6\x62\x34\xa7\xa2\x58\x91\x56\xb4\x16\x51\xc9\xe5\x1d\xd7\xac\xf5\xae\x41\x1a\xcb\xed\x27\xd1\x59\x4c\xa4\xa7\xe5\xb9\xd8\x00\x1a\x81\xdc\x49\x51\x13\x08\x14\xba\xcd\xbb\xc7\x9f\x3d\x7b\x3f\x45\x15\x68\xa5\x8d\xa9\x42\x60\xde\x2b\x8c\x4a\x1c\xe0\x4a\x51\xa8\xea\x84\xa4\xe0\x6e\x16\xf1\xa3\x03\x51\x95\xac\xc1\xf4\x4f\x72\x03\x64\x7e\xf1\x8c\x5f\x56\x4e\x58\xa0\x2d\xc0\x82\x19\xd0\x41\x4e\x31\x40\x5a\x0f\x3e\xcc\x7e\xc3\x3b\xd1\x83\xd4\xc3\x2a\x15\x5b\x29\x42\x03\x0e\xa4\x60\x10\xfd\x50\x32\x31\x5c\x24\x25\xc9\x91\x69\xc2\xa3\x3e\x96\x78\x55\x8d\xcb\x82\x4a\x59\x83\x2a\x81\x49\x86\x09\x3c\x10\x43\xe6\xc2\x11\x5c\x46\xa3\x05\xf4\xde\x48\xe2\x7a\xa7\xd9\xa7\xac\x25\xf1\x8f\x6b\x19\x01\xbe\x01\x6b\x09\xd9\x5c\x91\xc1\xec\xa7\x6a\xd4\x20\x07\xf2\x39\xbb\x64\x57\xfc\xac\x5d\x8d\x7a\xf4\x98\x1c\x1c\xb7\x2b\x14\x72\x20\xbb\x26\xa7\x07\x45\xce\xa0\x2c\xe7\x12\xc8\x81\x68\x03\xb9\x62\xf9\x49\x9c\x0b\x22\xc1\xf7\x00\xb2\x0c\xf3\x8a\x02\x9e\xd8\x82\x1e\xf8\xa1\x4c\xd8\xe5\xba\x18\x29\xe4\xdb\x1d\x49\xe0\x5f\xf5\x03\x0b\xc3\xb7\x28\x82\x32\x96\x9f\x8f\x20\xa3\xe7\x7a\x7f\x4b\x8b\x34\x8b\x27\x40\x44\x3c\x7d\xfa\xac\x4e\xcf\x5f\xf0\xf4\xc5\x97\xf5\xeb\xf9\x93\xa7\x4b\xf6\x3a\xcd\xb1\xe2\x56\x46\x4a\x46\x01\xea\xe4\x23\x68\x57\xb3\xca\x94\x83\x90\x3d\x2b\x73\xde\x52\xbd\xb0\x75\x03\x40\xe6\xa1\x0d\x65\xa5\x30\x52\xa6\x0c\x92\x57\xe1\x01\x45\xf6\x05\x0d\x26\x47\xfc\xd0\xa3\x32\x3b\xc5\xe0\xe4\x6a\x9b\x0d\x95\x9a\xbb\xe2\xf6\x58\x14\xa7\xdf\x42\xd4\x98\x4a\x42\x1b\xa5\x35\x07\xb3\x19\xd0\xa4\x3c\x0f\x61\x35\x6d\x55\x5a\xde\xef\xa2\x68\x9c\x62\x4a\xf7\x3b\xe7\xe9\xe9\xa5\x38\xfd\xe7\xf4\xea\x51\xfb\x3f\x5d\xb5\xa9\x4a\xd6\xc1\xd8\xef\xb5\xa2\xee\x77\x6e\xf4\xc1\xee\x8c\x2e\xaf\xdb\xab\xe5\x49\xdb\xde\x53\x1f\xef\xd5\xc7\x50\x1f\xdf\xeb\xa1\xed\xbd\x9d\xe3\xfa\xd8\x9f\x22\x6a\xd1\xa3\x74\xf6\xea\xda\x99\xf4\xa8\xf1\xf7\xb2\xd0\x4b\xb8\x76\xd4\xbd\x3b\xe7\x7f\x8c\x1f\x4e\xff\xba\x79\xf0\xfd\xe1\xd1\xc9\x39\x62\xe8\xde\x9f\xdf\x55\x34\xce\xa7\xe6\x61\xf3\xc7\xeb\x9f\x5e\x7f\xf4\xd9\xee\x02\x5b\x5c\xd3\xe5\xe5\xcb\x14\xc4\xa0\x5e\x5e\x5d\x2d\x0f\xcf\x4e\x8e\x3e\xf8\x91\xbd\xf4\x38\xc0\xd7\xe8\xe2\xe2\x82\x5e\xfd\x72\xf1\xeb\xcf\xcb\x97\xe7\xed\xbf\x01\x00\x00\xff\xff\x11\x2a\x5c\x2d\xf5\x06\x00\x00") func runtimeSyntaxFishMicroBytes() ([]byte, error) { return bindataRead( @@ -735,7 +735,7 @@ func runtimeSyntaxFishMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/syntax/fish.micro", size: 1843, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/syntax/fish.micro", size: 1781, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1195,7 +1195,7 @@ func runtimeSyntaxMakefileMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/syntax/makefile.micro", size: 967, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/syntax/makefile.micro", size: 967, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1740,7 +1740,7 @@ func runtimeSyntaxSedMicro() (*asset, error) { return a, nil } -var _runtimeSyntaxShMicro = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x7c\x92\x6f\x6f\xd3\x30\x10\xc6\xdf\xf7\x53\x78\x49\xc5\x92\x96\x16\xde\x32\xfe\x94\x4d\x48\x0c\x6d\x2f\x26\x21\xde\x50\x77\xc3\x75\x2e\x8d\x55\xc7\x09\xb6\xb3\x15\xf6\xec\xbb\x73\x5b\x9b\xb5\x12\x08\xa9\xbd\xde\x9d\x9f\xbb\x3e\xfe\x25\x69\x2a\xce\xc9\x93\x30\x41\x28\x27\x68\xa3\xea\xd6\x92\x28\x1b\x2f\xce\x9a\xce\x3b\x12\xa1\x22\x6b\x45\xd0\xde\xb4\x31\x4c\x07\x69\x3a\x08\xbf\x5c\x54\x1b\x91\x7c\x3d\x4f\x44\x22\xa7\xa1\x1a\x3e\xfd\x2e\x55\xa8\x9e\x13\xaf\x39\x7d\x4e\xb6\xbd\x1b\x65\x8d\x0a\x14\x76\x27\x07\xe5\xee\xbc\xec\x9c\x8e\xa6\x71\xcf\x8a\xc3\xc6\x4e\xd3\xfa\xa6\x34\x96\x7a\xc5\xbe\xbc\x5a\xaf\xfa\xec\xe2\xf3\xd9\xb7\x2f\x97\x9f\x38\x9d\xd2\xb2\x33\xb6\x90\x8f\x0e\x4f\xaf\x2e\xb6\xed\x41\x45\xaa\x20\x2f\x92\xeb\xf4\x68\x3a\x7a\x95\x91\xbb\x15\xe3\x7c\x96\x2d\x55\x3e\x0b\x55\x26\x30\xcc\x93\xc1\x40\x37\x96\x21\x84\xa8\x22\xd5\xe4\x22\x1b\x58\x66\x9a\xfd\xa2\x68\xf8\xe3\x08\x64\x4d\xc9\x81\x3b\x14\x94\x06\x6d\x4c\x44\x69\xc0\xe8\xd0\xfb\x06\x2b\x8c\x83\x6d\xb4\xb2\xf0\xfc\xaf\x1c\x22\x53\x45\x20\x4b\x3a\x22\x54\xa6\x8c\x88\x15\x39\x44\x53\x13\x3a\x17\x8d\xc5\x5d\xc5\xf7\xc8\xe5\x32\xe9\x3d\xb4\xa4\x8d\xb2\x22\xc9\xe4\x3d\xe4\x03\x64\x06\x99\x43\xbe\x85\x5c\x40\xce\xf1\x03\x52\x42\x0e\xf1\x0e\x1f\x70\x84\xf7\x78\x01\x89\xfc\xaf\xd9\xc9\xfc\xb2\xa0\x72\xe5\xbb\xbb\xcd\xe2\x60\xf5\xfe\x7a\x93\x8c\x7e\x82\xaf\xb5\x8a\xb0\x11\x2b\x82\x25\x04\x38\xfc\xce\xff\x29\x7f\xa2\x11\xa1\x0b\xe8\xaa\x6e\x1e\x63\x73\xe7\xa0\x5b\x10\x67\x60\xa4\x0c\xa4\x6d\x3c\x6f\xf2\xd4\x32\x04\x1e\xb5\x96\x77\xf2\x76\x87\x5a\xad\x09\xf5\xba\x30\x1e\xf5\x2d\x7c\xcd\x3c\x0a\xfe\x32\x0a\xe5\x11\x9b\x4e\x57\xe8\x6a\x15\xd6\x0c\x84\xbb\x07\x06\xfa\xf8\xb8\x8e\x5d\x64\x26\xe7\xa7\x28\xc3\x78\xfe\x7a\xf2\xe6\x74\xf2\xfd\x66\x31\xe6\x42\x66\x32\xff\xdf\x80\x1c\xca\xfb\x59\x3f\x71\xf4\x31\x1d\x8e\x66\x13\x1e\x7c\x98\xed\x87\x76\xf2\x84\x91\xcb\x29\xe6\xd7\xc9\x22\x1f\x25\xfc\x0e\x1d\xef\xea\x63\xae\x8f\xf7\xf2\x7a\xcb\x24\xbb\xc6\x7c\x7e\x12\x5a\xa5\xe9\x64\xb1\xc8\xd3\xe9\x68\x98\x0c\xd2\xad\xe8\x25\x73\x20\x27\x92\x03\xc1\x98\x4f\xff\x04\x00\x00\xff\xff\x23\x55\x48\x55\x7f\x03\x00\x00") +var _runtimeSyntaxShMicro = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x54\x69\x6f\xdc\x36\x13\xfe\xee\x5f\x21\xcb\x8b\x58\xb2\xdf\xf5\x9b\xb8\x76\xd0\xba\xc7\x36\x6d\xda\x22\x48\xdb\x04\xe8\x01\xa3\xab\x75\xca\x25\xa9\x15\x2b\x1e\x0a\x0f\xaf\xb7\x1e\xff\xf7\xce\x70\x65\x3b\xc0\x36\x1f\x0a\x88\xc3\x11\x67\xc8\x79\xe6\x0c\x1b\x1b\xd9\x4d\x51\x86\x4e\x6a\x5d\x16\x65\x73\x12\xba\x49\xde\x97\x2c\x74\x0f\x8c\xe7\xc8\x3e\x30\xdb\xb3\x77\x4c\x2b\x16\x64\x18\x25\x1f\xfc\x8e\xf2\x36\x59\x1e\x95\xb3\x0f\x1a\x1f\x1e\x8c\x3a\x83\x77\xad\xd2\xf2\x5e\xe3\xf1\xf7\x6d\xbf\xba\xe7\x5e\xff\xf0\xcd\x6f\xaf\x7e\x7c\x89\xec\x89\x5c\x26\xa5\x45\x43\x08\x5f\xbc\x7d\xbd\x3d\xde\xeb\x24\x13\xd2\x17\xe5\xd5\xc1\xfe\xc9\xd1\xff\x2b\x69\xaf\x8b\xe3\x7a\x56\x2d\x59\x3d\x0b\x5d\x55\xc0\xa4\x2e\xf7\xf6\x0e\x8a\x9f\x93\x59\x4a\x1f\xf6\xb8\xd3\xce\x17\x1c\x61\x44\x66\x23\x22\x59\xce\x9f\x4e\x3f\x5b\x1c\x37\xcb\xac\xf6\xad\xb3\x42\x11\x4a\xa6\x43\xc1\xac\x20\xcd\xe8\x9d\x2e\x5a\xed\xd6\xe3\x65\xbc\x19\xa5\x91\xdb\xdb\x15\x47\xb7\x41\x38\xfc\xac\x04\xa9\x55\x8b\x04\x4f\x64\x60\x1c\xe4\x8d\x8a\xd0\x2a\x68\x9d\x87\x7b\xf7\x01\x35\x94\x05\xed\x38\xd3\xe0\x11\x3c\x92\x98\xbc\x85\x20\xb5\xe4\x11\x42\xa7\xda\x08\xb1\x93\x16\xa2\x32\x12\x92\x8d\x4a\xc3\xba\xc3\x70\xd4\x04\x72\xc4\x30\x48\xae\x98\x2e\xca\xaa\xb9\x85\xe6\x0e\x9a\x0a\x9a\x1a\x9a\xcf\xa1\x59\x40\x33\x87\x3f\xa1\x69\xa0\x99\xc0\x17\xf0\x15\xec\xc3\x97\xf0\x04\x1a\xd8\xc6\xe1\x17\x4a\x35\x7a\x65\x0c\x7a\x77\x1f\x8e\xb8\x19\xe4\xd6\x19\x01\x92\x77\x0e\x81\x0f\xce\x47\xd0\x12\xf1\xe0\x4a\x86\x85\x1e\x91\x20\x5f\x3f\x04\xca\x18\x67\x0b\xad\x6c\xba\xf9\xe8\x73\xd5\x0a\xd4\xaa\x9e\xb1\x75\x0f\x94\x60\x10\x44\x5a\x65\x05\x34\xeb\xdb\xa7\xff\x3b\xbb\x5b\x79\x39\x40\xaf\xb4\xce\x84\xe1\x3e\x0a\xb4\x0c\x01\x0c\xeb\x25\x0c\x59\x1c\xa4\xc0\xc8\x40\x64\xfe\x11\x80\x97\x09\x43\x13\x3e\x6a\x1d\x4d\xca\xe7\x67\x64\x59\x5a\x86\x91\xe4\x2c\x02\xef\x30\xa1\x48\x57\x7e\x40\x6a\x9c\x40\xea\xd6\x74\xe2\x9d\x43\x71\x1f\x92\x01\x7a\x10\x38\x2a\x84\x41\x63\x02\x79\x8a\x88\x3c\x62\x96\x05\x88\x16\x84\xf2\xb4\xb2\xb1\x40\x5c\x7e\x5c\x24\xc0\xd2\xa3\xc0\x21\x14\xda\x30\xe3\x8c\x47\x4a\x3c\xa3\x7a\x68\x0d\x56\x82\xd3\x02\xa8\x5e\xa1\x73\x21\x2a\x01\xf4\x51\x21\xa2\x83\x7f\x39\x2a\x0a\x65\x7b\xd0\x54\x1c\xab\xfc\xa8\xc6\x18\x88\x73\x82\x64\x7a\x32\x6b\xfa\x56\xb5\x0e\x37\x8b\xc0\x4d\x8f\x55\x38\x80\xb9\x06\xab\xb8\x04\xab\xc1\xba\x2e\x0d\x60\xb1\x8d\x38\xd8\x64\xc8\x24\xea\x0d\x2c\x20\xf6\x81\xc5\x8e\x77\x3d\x0c\x68\x62\x03\x88\x6e\xf0\xca\x46\x82\x9c\x99\x16\x86\x78\x03\xc3\x5a\xe4\x92\xcc\x38\x90\xd1\x74\x0b\xbc\xc1\x8f\xcc\x7b\x2c\x61\x47\x85\xfa\x1e\xaa\xd0\xb1\x67\x98\x11\x76\x7a\x7a\x96\xb7\xf3\xe7\xb4\x7d\xf2\x69\xfe\x3b\x7f\x76\x5a\x13\x6a\x9c\x18\x39\x6f\xa9\x85\xa0\x25\xa6\x3a\x50\x55\x6d\xa3\x4a\x5d\x84\x44\x2c\x49\x18\xe3\x06\xf2\x85\x8d\xe5\x98\x64\x5a\x58\xf4\x51\x4a\x5c\x21\x6e\x1b\x81\x88\xc3\x54\x44\x97\x38\x56\x82\xc7\x2f\x49\x22\x96\x53\x72\x62\x7e\x9b\x1e\x4a\x39\x76\xc9\x8e\xb9\x48\x56\xbd\x47\x92\x7d\x4a\x01\x67\x00\x5c\x93\x33\x6b\x8e\x4d\xe5\x68\x31\xa3\x60\x23\x43\xbd\x3b\x02\xb0\xeb\xd9\x2a\xec\xb6\xfd\x74\x3a\x67\xd3\xbf\xa7\x8b\xe3\xf2\x5f\x46\x42\x91\x85\x24\xa3\x76\x8b\x18\xdd\xd5\xee\xd8\xc1\xbe\x6d\x4e\x60\x7e\x55\x2e\xea\xa3\xb2\xdc\x11\x1f\x8e\xe2\x43\x14\x1f\xee\xf4\x7c\xb9\x73\x72\x98\x8d\xfd\xce\xbc\x62\x4b\x6c\x9d\x51\xac\x04\x22\x52\xad\xc2\xf1\x58\xa9\x1a\xa1\x4d\x9a\xdb\x19\x8d\xbb\x17\xd3\x3f\xde\xed\x7f\x7d\x30\x39\x9a\xa1\x0f\xcd\xdd\xac\xfc\xef\x17\xc6\x11\x80\xfa\xa1\x78\x52\xfc\xfa\xe6\xe5\x9b\x47\x27\xcd\x36\x12\xd5\x15\xcc\xe7\x17\x61\x60\x5c\x5e\x2c\x16\xf5\xc1\xc9\xd1\xe4\xde\x50\x74\xc2\xa1\x02\x5d\x83\xcb\xcb\x4b\xf8\xfe\xd5\xe5\x4f\xdf\xd5\x17\xb3\xf2\x9f\x00\x00\x00\xff\xff\x9b\x4e\xdc\x62\x92\x06\x00\x00") func runtimeSyntaxShMicroBytes() ([]byte, error) { return bindataRead( @@ -1755,7 +1755,7 @@ func runtimeSyntaxShMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/syntax/sh.micro", size: 895, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/syntax/sh.micro", size: 1682, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/cmd/micro/statusline.go b/cmd/micro/statusline.go index 8c505195..af1ad973 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/statusline.go @@ -18,10 +18,6 @@ func (sline *Statusline) Display() { y := sline.view.height + sline.view.y file := sline.view.Buf.Name - // If the name is empty, use 'No name' - if file == "" { - file = "No name" - } // If the buffer is dirty (has been modified) write a little '+' if sline.view.Buf.IsModified { diff --git a/cmd/micro/tab.go b/cmd/micro/tab.go new file mode 100644 index 00000000..ddf8efd7 --- /dev/null +++ b/cmd/micro/tab.go @@ -0,0 +1,65 @@ +package main + +type Tab struct { + // This contains all the views in this tab + // There is generally only one view per tab, but you can have + // multiple views with splits + views []*View + // This is the current view for this tab + curView int + // Generally this is the name of the current view's buffer + name string +} + +func NewTabFromView(v *View) *Tab { + t := new(Tab) + t.views = append(t.views, v) + t.views[0].Num = 0 + return t +} + +func (t *Tab) SetNum(num int) { + for _, v := range t.views { + v.TabNum = num + } +} + +// CurView returns the current view +func CurView() *View { + curTab := tabs[curTab] + return curTab.views[curTab.curView] +} + +func DisplayTabs() { + str := "" + for i, t := range tabs { + if i == curTab { + str += "[" + } else { + str += " " + } + str += t.views[t.curView].Buf.Name + if i == curTab { + str += "]" + } else { + str += " " + } + str += " " + } + + tabBarStyle := defStyle.Reverse(true) + if style, ok := colorscheme["tabbar"]; ok { + tabBarStyle = style + } + + // Maybe there is a unicode filename? + fileRunes := []rune(str) + w, _ := screen.Size() + for x := 0; x < w; x++ { + if x < len(fileRunes) { + screen.SetContent(x, 0, fileRunes[x], nil, tabBarStyle) + } else { + screen.SetContent(x, 0, ' ', nil, tabBarStyle) + } + } +} diff --git a/cmd/micro/tabbar.go b/cmd/micro/tabbar.go deleted file mode 100644 index be5de108..00000000 --- a/cmd/micro/tabbar.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -func DisplayTabBar() { - str := "" - for i, v := range views { - if i == mainView { - str += "[" - } else { - str += " " - } - str += v.Buf.Name - if i == mainView { - str += "]" - } else { - str += " " - } - str += " " - } - - tabBarStyle := defStyle.Reverse(true) - if style, ok := colorscheme["tabbar"]; ok { - tabBarStyle = style - } - - // Maybe there is a unicode filename? - fileRunes := []rune(str) - w, _ := screen.Size() - for x := 0; x < w; x++ { - if x < len(fileRunes) { - screen.SetContent(x, 0, fileRunes[x], nil, tabBarStyle) - } else { - screen.SetContent(x, 0, ' ', nil, tabBarStyle) - } - } -} diff --git a/cmd/micro/view.go b/cmd/micro/view.go index 01e134a9..612dd6a4 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -45,6 +45,8 @@ type View struct { // This is the index of this view in the views array Num int + // What tab is this view stored in + TabNum int // Is this view modifiable? Modifiable bool @@ -602,9 +604,6 @@ func (v *View) DisplayView() { } } indentChar := []rune(settings["indentchar"].(string)) - if x-v.leftCol >= v.lineNumOffset { - screen.SetContent(x-v.leftCol, lineN, indentChar[0], nil, lineIndentStyle) - } if x-v.leftCol >= v.lineNumOffset { screen.SetContent(x-v.leftCol, lineN+v.y, indentChar[0], nil, lineIndentStyle) } From 57f769c9a1b02537df94a8f117af5f45ab68c7c3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 8 Jun 2016 13:29:24 -0400 Subject: [PATCH 3/6] Don't display the tab bar if only one tab is open --- cmd/micro/tab.go | 3 +++ cmd/micro/view.go | 9 ++++++--- runtime/plugins/go/go.lua | 14 +++++++------- runtime/plugins/linter/linter.lua | 14 +++++++------- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/cmd/micro/tab.go b/cmd/micro/tab.go index ddf8efd7..d4d4d498 100644 --- a/cmd/micro/tab.go +++ b/cmd/micro/tab.go @@ -31,6 +31,9 @@ func CurView() *View { } func DisplayTabs() { + if len(tabs) <= 1 { + return + } str := "" for i, t := range tabs { if i == curTab { diff --git a/cmd/micro/view.go b/cmd/micro/view.go index 612dd6a4..6ecce7c9 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -99,7 +99,7 @@ func NewView(buf *Buffer) *View { func NewViewWidthHeight(buf *Buffer, w, h int) *View { v := new(View) - v.x, v.y = 0, 1 + v.x, v.y = 0, 0 v.widthPercent = w v.heightPercent = h @@ -123,8 +123,11 @@ func NewViewWidthHeight(buf *Buffer, w, h int) *View { func (v *View) Resize(w, h int) { // Always include 1 line for the command line at the bottom h-- - // Include one line for the tab bar at the top - h-- + if len(tabs) > 1 { + // Include one line for the tab bar at the top + h-- + v.y = 1 + } v.width = int(float32(w) * float32(v.widthPercent) / 100) // We subtract 1 for the statusline v.height = int(float32(h) * float32(v.heightPercent) / 100) diff --git a/runtime/plugins/go/go.lua b/runtime/plugins/go/go.lua index 6ea14cd0..094fb653 100644 --- a/runtime/plugins/go/go.lua +++ b/runtime/plugins/go/go.lua @@ -9,7 +9,7 @@ MakeCommand("goimports", "go_goimports") MakeCommand("gofmt", "go_gofmt") function go_onSave() - if views[mainView+1].Buf.FileType == "Go" then + if CurView().Buf.FileType == "Go" then if GetOption("goimports") then go_goimports() elseif GetOption("gofmt") then @@ -19,21 +19,21 @@ function go_onSave() end function go_gofmt() - views[mainView+1]:Save() - local handle = io.popen("gofmt -w " .. views[mainView+1].Buf.Path) + CurView():Save() + local handle = io.popen("gofmt -w " .. CurView().Buf.Path) local result = handle:read("*a") handle:close() - views[mainView+1]:ReOpen() + CurView():ReOpen() end function go_goimports() - views[mainView+1]:Save() - local handle = io.popen("goimports -w " .. views[mainView+1].Buf.Path) + CurView():Save() + local handle = io.popen("goimports -w " .. CurView().Buf.Path) local result = go_split(handle:read("*a"), ":") handle:close() - views[mainView+1]:ReOpen() + CurView():ReOpen() end function go_split(str, sep) diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index 9767da5d..be7fe76f 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -4,15 +4,15 @@ end function linter_onSave() if GetOption("linter") then - local ft = views[mainView+1].Buf.FileType - local file = views[mainView+1].Buf.Path + local ft = CurView().Buf.FileType + local file = CurView().Buf.Path local devnull = "/dev/null" if OS == "windows" then devnull = "NUL" end if ft == "Go" then linter_lint("gobuild", "go build -o " .. devnull, "%f:%l: %m") - linter_lint("golint", "golint " .. views[mainView+1].Buf.Path, "%f:%l:%d+: %m") + linter_lint("golint", "golint " .. CurView().Buf.Path, "%f:%l:%d+: %m") elseif ft == "Lua" then linter_lint("luacheck", "luacheck --no-color " .. file, "%f:%l:%d+: %m") elseif ft == "Python" then @@ -27,12 +27,12 @@ function linter_onSave() linter_lint("jshint", "jshint " .. file, "%f: line %l,.+, %m") end else - views[mainView+1]:ClearAllGutterMessages() + CurView():ClearAllGutterMessages() end end function linter_lint(linter, cmd, errorformat) - views[mainView+1]:ClearGutterMessages(linter) + CurView():ClearGutterMessages(linter) local handle = io.popen("(" .. cmd .. ")" .. " 2>&1") local lines = linter_split(handle:read("*a"), "\n") @@ -44,8 +44,8 @@ function linter_lint(linter, cmd, errorformat) line = line:match("^%s*(.+)%s*$") if string.find(line, regex) then local file, line, msg = string.match(line, regex) - if linter_basename(views[mainView+1].Buf.Path) == linter_basename(file) then - views[mainView+1]:GutterMessage(linter, tonumber(line), msg, 2) + if linter_basename(CurView().Buf.Path) == linter_basename(file) then + CurView():GutterMessage(linter, tonumber(line), msg, 2) end end end From 059a5c3b89feb6eaa0201eeb973de6a7861d990b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 8 Jun 2016 14:38:15 -0400 Subject: [PATCH 4/6] Resize the view correctly when there is only one tab left --- cmd/micro/bindings.go | 4 ++++ cmd/micro/view.go | 2 ++ 2 files changed, 6 insertions(+) diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go index 28e284fb..14de9ac5 100644 --- a/cmd/micro/bindings.go +++ b/cmd/micro/bindings.go @@ -1096,6 +1096,10 @@ func (v *View) Quit() bool { if curTab >= len(tabs) { curTab-- } + if curTab == 0 { + tab := tabs[curTab] + tab.views[tab.curView].Resize(screen.Size()) + } } } else { screen.Fini() diff --git a/cmd/micro/view.go b/cmd/micro/view.go index 6ecce7c9..0694b17f 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -127,6 +127,8 @@ func (v *View) Resize(w, h int) { // Include one line for the tab bar at the top h-- v.y = 1 + } else { + v.y = 0 } v.width = int(float32(w) * float32(v.widthPercent) / 100) // We subtract 1 for the statusline From a79e964cb6fc35b95a41b8069b71a2b7c2424406 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 8 Jun 2016 17:47:48 -0400 Subject: [PATCH 5/6] Make tabs respond to mouse events --- cmd/micro/bindings.go | 15 ++++++++--- cmd/micro/micro.go | 3 +++ cmd/micro/tab.go | 60 ++++++++++++++++++++++++++++++++++++++++--- runtime/help/help.md | 1 + 4 files changed, 71 insertions(+), 8 deletions(-) diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go index 14de9ac5..ff888261 100644 --- a/cmd/micro/bindings.go +++ b/cmd/micro/bindings.go @@ -1097,8 +1097,8 @@ func (v *View) Quit() bool { curTab-- } if curTab == 0 { - tab := tabs[curTab] - tab.views[tab.curView].Resize(screen.Size()) + CurView().Resize(screen.Size()) + CurView().matches = Match(CurView()) } } } else { @@ -1114,6 +1114,13 @@ func (v *View) AddTab() bool { tab.SetNum(len(tabs)) tabs = append(tabs, tab) curTab++ + if len(tabs) == 2 { + for _, t := range tabs { + for _, v := range t.views { + v.Resize(screen.Size()) + } + } + } return true } @@ -1121,14 +1128,14 @@ func (v *View) LastTab() bool { if curTab > 0 { curTab-- } - return true + return false } func (v *View) NextTab() bool { if curTab < len(tabs)-1 { curTab++ } - return true + return false } // None is no action diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 4c9ea68f..3ff79e6d 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -257,6 +257,9 @@ func main() { // Wait for the user's action event := screen.PollEvent() + if TabbarHandleMouseEvent(event) { + continue + } if searching { // Since searching is done in real time, we need to redraw every time diff --git a/cmd/micro/tab.go b/cmd/micro/tab.go index d4d4d498..cada1b72 100644 --- a/cmd/micro/tab.go +++ b/cmd/micro/tab.go @@ -1,5 +1,11 @@ package main +import ( + "sort" + + "github.com/zyedidia/tcell" +) + type Tab struct { // This contains all the views in this tab // There is generally only one view per tab, but you can have @@ -30,11 +36,10 @@ func CurView() *View { return curTab.views[curTab.curView] } -func DisplayTabs() { - if len(tabs) <= 1 { - return - } +func TabbarString() (string, map[int]int) { str := "" + indicies := make(map[int]int) + indicies[0] = 0 for i, t := range tabs { if i == curTab { str += "[" @@ -47,8 +52,55 @@ func DisplayTabs() { } else { str += " " } + indicies[len(str)-1] = i + 1 str += " " } + return str, indicies +} + +func TabbarHandleMouseEvent(event tcell.Event) bool { + if len(tabs) <= 1 { + return false + } + + switch e := event.(type) { + case *tcell.EventMouse: + button := e.Buttons() + if button == tcell.Button1 { + x, y := e.Position() + if y != 0 { + return false + } + str, indicies := TabbarString() + if x >= len(str) { + return false + } + var tabnum int + var keys []int + for k := range indicies { + keys = append(keys, k) + } + sort.Ints(keys) + for _, k := range keys { + if x <= k { + tabnum = indicies[k] - 1 + break + } + } + curTab = tabnum + return true + } + } + + return false +} + +func DisplayTabs() { + if len(tabs) <= 1 { + return + } + + str, _ := TabbarString() tabBarStyle := defStyle.Reverse(true) if style, ok := colorscheme["tabbar"]; ok { diff --git a/runtime/help/help.md b/runtime/help/help.md index 79f017c2..02ecffca 100644 --- a/runtime/help/help.md +++ b/runtime/help/help.md @@ -63,6 +63,7 @@ you can rebind them to your liking. "CtrlD": "DuplicateLine", "CtrlV": "Paste", "CtrlA": "SelectAll", + "CtrlT": "AddTab" "Home": "Start", "End": "End", "PageUp": "CursorPageUp", From 2c73e1c043d23ab339388644ae30b84e5236b175 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 8 Jun 2016 18:48:59 -0400 Subject: [PATCH 6/6] Add default bindings for PreviousTab and NextTab --- cmd/micro/bindings.go | 6 ++++-- cmd/micro/runtime.go | 10 +++++----- runtime/help/help.md | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go index ff888261..18e2d6a1 100644 --- a/cmd/micro/bindings.go +++ b/cmd/micro/bindings.go @@ -74,7 +74,7 @@ var bindingActions = map[string]func(*View) bool{ "CommandMode": (*View).CommandMode, "Quit": (*View).Quit, "AddTab": (*View).AddTab, - "LastTab": (*View).LastTab, + "PreviousTab": (*View).PreviousTab, "NextTab": (*View).NextTab, } @@ -384,6 +384,8 @@ func DefaultBindings() map[string]string { "CtrlV": "Paste", "CtrlA": "SelectAll", "CtrlT": "AddTab", + "CtrlRightSq": "PreviousTab", + "CtrlBackslash": "NextTab", "Home": "Start", "End": "End", "PageUp": "CursorPageUp", @@ -1124,7 +1126,7 @@ func (v *View) AddTab() bool { return true } -func (v *View) LastTab() bool { +func (v *View) PreviousTab() bool { if curTab > 0 { curTab-- } diff --git a/cmd/micro/runtime.go b/cmd/micro/runtime.go index 44145d30..478128be 100644 --- a/cmd/micro/runtime.go +++ b/cmd/micro/runtime.go @@ -240,7 +240,7 @@ func runtimeColorschemesSolarizedMicro() (*asset, error) { return a, nil } -var _runtimeHelpHelpMd = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x59\x5b\x73\xe3\xb6\x15\x7e\x36\x7f\x05\x46\x9b\x99\xec\xa6\x92\x3c\x4d\xfb\xe4\x37\xc7\xf6\x5e\x92\xdd\xb5\xe3\xf5\xb6\x49\x5f\x42\x88\x04\x25\xc4\x24\xc1\x00\xa0\x6d\xa5\x97\xdf\xde\xef\x1c\x80\x14\x21\xc9\x9b\x4e\x77\x26\x13\x11\x38\x38\x37\x9c\xcb\x77\xe0\x17\xe2\x83\x2e\xac\x11\x1b\x55\x77\xc2\xab\x27\x9f\x65\x61\x41\x3b\x21\xb1\x60\x1b\xdd\xca\x7a\xb1\x92\x4e\x95\xbc\x2f\x54\xa9\xbd\xb1\xc2\x6f\xa4\x17\x52\x37\x4e\x78\x23\x56\x4a\x28\xe9\xb6\xf4\xb3\x77\x4a\xc8\xb6\x14\xba\xf5\xbd\xf6\xfa\x41\xcd\x45\xf6\xb8\xd1\x35\x56\x6b\x67\x84\x97\xf7\xba\x5d\x0b\x59\x3e\xc8\xd6\xcb\xb5\x12\xa6\x02\x2b\x25\xaa\xbe\xae\x45\x21\x3b\xb9\xd2\x35\x8e\x29\x47\x1b\x8d\x29\x95\x6d\x47\x2d\xdc\x32\xcb\x5e\xbc\x78\x21\x3e\x3b\x1c\xcc\xb2\xeb\xb6\x50\x62\x6b\x7a\xb1\x91\x0f\x4a\xac\x7a\x5d\x7b\x66\x15\x14\x9c\x0b\xa7\x9b\xae\xde\x0a\xe7\xa5\xf5\x42\x7b\xb1\xda\x0a\xdb\xb7\x2d\x89\xcf\xf2\x86\x8d\xec\xa4\xdf\x9c\x7a\x73\x5a\x41\xbf\xa5\x7f\xf2\xb9\x80\x65\xf1\x5c\x20\xc9\xc9\x26\xd3\xa9\x16\x46\x09\xd5\x74\x7e\x0b\x49\x55\xa5\xec\x72\x70\x14\x9b\xe5\xfa\xae\x33\xd6\x3b\x51\x58\x25\x3d\x89\x08\x54\x4e\x54\xd6\x34\xd0\xa1\xd4\xed\x59\x96\xe5\x79\x9e\x7d\x25\x74\x55\x98\xb6\xd2\x6b\xf1\x2f\xc1\x32\x78\x39\xfb\x19\x96\x14\x10\xd2\x18\x58\x43\x76\x14\xbd\x75\x50\x47\x5a\xd3\xc3\x9f\x8f\xda\x6f\x78\x59\x5a\x6b\x1e\xc5\xbd\xda\x3a\xf6\x73\x63\xe0\xf1\xe8\x98\x1f\xd4\x76\xa5\x5b\x88\x5a\xbb\x2c\x7b\xab\x2c\x11\x07\x5e\xa5\xaa\x64\x0f\xff\xdc\xef\x28\x70\x43\xe2\x57\x67\x5a\x51\x19\xdb\x08\x5c\x51\xb1\xe1\x4b\x27\x73\x36\xe6\x31\xdb\x46\x7d\xac\xa2\x13\xc4\xa5\x21\x5f\x60\xd9\x8a\x5a\xd3\x2d\x2e\xd9\x20\xe2\x91\xfd\x33\x13\xf8\x37\xfb\xdc\xcd\xce\xc4\xf4\xdf\xec\x82\x8d\xc0\xfa\x3c\x50\x5c\x9a\xc7\x36\xa1\x89\x14\xbc\x1e\x69\x6e\xf5\x7a\xe3\xa7\x44\x91\x26\xac\x47\xa2\xf7\xaa\xf2\xc7\x18\xf1\x7a\xa4\xf9\xb4\xd1\x95\x9f\xea\x34\xfb\xa4\x6a\x55\xf8\x9d\x3a\x4c\x31\xd5\x29\x52\x4c\xd5\x61\x9a\xa9\xb8\x48\x73\x20\x69\xaa\x77\xa4\x49\x54\x3e\xaf\x7d\xaa\xf5\xec\xef\xc6\x96\x53\x36\xa0\x48\x8d\x67\x8a\x7d\x26\xa9\xb0\x28\xe9\x59\xc2\x51\xe4\x84\x70\x2a\xf3\xc2\xdb\x3a\x51\x6b\xf6\x89\x32\xe6\xba\x7a\xaf\x5b\x35\x25\x4a\x34\x9b\x5d\xb5\xe5\x21\x49\x22\x30\xca\xbb\x33\xcf\xf0\x4b\xcc\x18\x89\x8f\xf2\x4d\xe2\x2a\x5e\x34\x73\x9d\x12\x25\xa1\x15\x89\xc0\xed\x40\xe4\xc0\x2c\xd5\xef\x80\x6c\x60\x37\xd5\x6c\x20\xba\x6a\x51\x93\x92\x08\x7d\xd7\x3a\x65\x7d\x58\x1f\x62\xa2\x93\x85\x3a\x42\x14\xd6\x23\xd1\x77\xb2\xb8\x77\x53\xc2\xc9\xca\x3e\xc9\xb7\x43\x6c\x1d\x90\xe0\xae\x17\x09\xa7\xd9\x25\x94\xf6\xea\x48\x7c\x2d\x12\x76\xcf\xd0\xdd\xc9\x55\x9a\xc8\x51\x75\x5a\x9f\xf8\xe9\x3a\xb1\xee\x1a\x55\xf2\x35\x0a\x69\xe2\xc9\x84\xe2\x13\x0a\xf5\x74\xf7\x75\xb2\xfb\x5a\xa7\x97\xf5\xf1\x60\xf7\x23\xfa\xcf\x94\xe2\xe6\x80\xe2\xc6\xaa\x07\x8d\x8a\x38\xa5\xfa\x47\x42\xf5\xb9\x2d\xcd\x74\xf7\xe7\x64\xf7\x56\xa5\xbb\x17\x69\x19\x32\xdd\x76\xba\xfb\xd3\x5e\x91\x4a\x94\xfb\x61\x7f\x73\x3f\xa8\x2f\x13\x82\xcb\xbe\xab\x75\x21\xbd\xda\x27\xfb\x5b\x42\x76\x23\x9d\x4f\xb6\xcf\x53\x0f\x73\xac\x9e\xd7\xf5\x40\xf2\xd6\x34\x2a\x2d\x93\x49\xb4\x53\x4c\xa7\x17\x3d\x89\xf2\x1b\xb4\xd9\x63\x99\x17\xd7\x27\x54\xc7\x52\x6f\x5c\x9f\x28\xfb\x26\x51\xf6\xce\xac\xd7\xb5\x7a\x0b\xe4\x91\x94\x99\x23\x34\xb7\x7d\xbd\xcb\x2b\x2e\x58\x09\xd1\xf7\x7d\xd3\x4d\xdd\x16\x82\x7a\xaa\x78\x5c\x19\xac\x76\xc5\x9e\xd5\x17\xb5\x92\x54\x51\x7c\x1a\x3a\xdf\xa5\xce\x05\x48\xaa\x3f\x00\x93\x4c\x49\x7e\x4c\x48\x7e\x04\xe6\x99\xee\x5e\xed\xc5\x4f\xd3\xa0\x67\x47\x16\x4c\x75\x7a\x2a\xae\x1a\x59\xb8\x85\xf3\x5b\x60\xa4\x49\x7f\xde\x65\x6c\x45\x89\x7a\xac\xbe\x2f\x56\xc3\xce\x7e\x92\x4b\x2e\xa9\x87\x75\x97\xf6\xc8\x31\x87\xe5\x9b\x76\xe8\xae\x0f\x3a\x36\x6d\xb4\xbb\x0d\xbe\xd2\xec\xdf\x29\x66\x21\xd0\xc7\xd8\x24\x40\x0c\x27\xfe\x14\x60\x0a\x83\x43\x06\x34\x8f\x50\x92\x10\x18\xfd\x7f\x99\x91\x6b\x44\x0d\x9d\x19\xc2\x58\x32\xeb\x00\xf7\xe0\x24\x7d\x05\xf8\x46\x64\x0a\xff\x45\xb4\x58\x43\xf1\x39\x2d\x66\x05\x71\xea\x3b\x26\x28\xa1\xda\x21\x9b\xe7\x78\x8c\x30\x6e\x30\x62\x63\xea\x52\x38\x2a\xfd\x01\x6c\x49\x20\xd2\x40\x0b\xeb\x88\x6d\xa3\x5a\x70\x29\xbc\x36\x2d\x1b\xe6\x38\xd9\x44\x40\xb7\x20\x08\x90\xe8\x8e\x78\x0f\x18\xab\x91\x5b\x02\xc7\xc0\x50\x0c\xe2\x7a\x47\xd0\x90\xa4\xe7\xff\x39\x5d\x06\x14\x78\xca\x18\xf0\x74\x38\xb2\x24\x3c\x95\x67\x8c\x48\xc5\x95\x04\x28\x83\x43\x09\x98\x05\x0e\x10\x0b\x55\x83\x12\x10\xf6\x1a\x16\xaa\x27\x09\xc0\x0a\x7f\x10\x10\x27\xa8\x96\x93\x7b\x17\x5b\x86\xae\x38\x63\xd8\xf2\xb0\xf8\x3b\x2f\x5a\x54\xb9\x39\x43\xe7\xc2\xf4\x30\xba\xeb\x19\x39\x67\x95\xa9\x6b\xf3\x48\x2a\x02\x1b\xb2\x96\xa9\x56\x82\xb5\x9a\xa2\xbe\x93\xb1\x86\x0e\x85\xf5\x64\xac\xb9\xa1\x98\x0e\xa1\x42\xf8\xf4\xc6\x38\xa7\x57\x70\x56\x11\x12\xc1\xed\x9c\xaf\x9e\x54\xd1\x7b\xc5\x28\x3b\x0c\x18\x91\x86\x82\xa6\xb3\xca\xb1\xe7\x82\x11\x0a\x8a\xb0\xa6\x8a\x77\xf9\xb2\x03\xf1\x32\x45\xbd\xdd\xbe\xbc\x30\xb5\x6c\x77\x51\x0b\x63\xbe\x11\xf9\x6f\xc8\xda\xfc\x4c\x50\xf2\xba\x00\xc9\x97\xb4\xec\xd0\xae\xb0\x4c\x5d\xcb\x0d\x21\x65\x29\x06\xc6\xd0\x01\x91\x55\x5d\x8d\x66\x2a\x66\x0e\x15\xa4\xd8\xcc\xc4\xec\x41\xd6\xbd\x9a\x89\xaa\x96\x6b\x87\xe3\x77\x1b\x5c\xde\xa3\x46\x30\x0d\xa4\x79\x20\xcd\x43\x98\xe5\x4c\x9f\x2f\x05\xa5\x1b\x05\x4f\x1e\x4e\xb2\x15\xa6\xa3\x8b\x96\xf5\x92\x36\xcf\xe9\x96\xc0\xac\x33\x18\xae\xe6\xa4\x11\x28\xf0\x6d\x5a\x8c\x2b\xa6\x55\x2c\xf2\x4c\xe4\x45\x3e\x8f\x78\x5e\xb5\x12\xe6\x3b\x2c\x6d\x54\x71\x9f\xf3\x40\xc5\x72\xc2\xb6\x74\xf7\x18\x03\x2a\x72\xc8\xd7\x25\x81\x7a\x45\xd1\xd1\x29\xcb\x23\x01\x59\x1c\x55\xe6\xc8\x57\x14\x8c\x5e\x37\x8a\x2b\xd7\x47\xe3\x55\x70\xe7\x68\x4e\xd3\x3b\x4f\xd1\x2e\x05\x4c\xd2\xc8\x6b\xb5\x56\x4f\x4b\x21\xde\x55\xac\x5d\xcc\x3b\x69\xd7\x3d\xf1\xe3\x02\x57\x1a\x68\xd7\x1a\x1f\x66\x38\xd9\x62\x5c\x23\x68\xc2\xc3\x89\xf6\x21\x46\x29\x87\x4c\xa3\xc3\x70\xf7\x5b\x0f\xb9\x2e\xb8\xde\x29\x1f\x1d\x24\x82\x0f\xcf\x90\x92\x3e\x5c\x55\x5c\x87\x39\xbc\xb5\x14\x37\xa8\xf0\xc8\x63\xa7\x42\x68\xb4\x34\xca\x3a\xc5\x79\x44\x13\x10\x29\x23\xe1\x02\x58\x00\x3d\xc3\x69\x37\x46\x0a\xd8\xc6\xdb\xee\xf1\xb1\x59\xc4\x78\x82\x40\x2c\x04\x81\x6b\x8c\xba\xb4\xa7\x68\x8e\x8d\xa1\x1b\xb3\x68\x05\xc4\xb5\xe6\x29\x6e\xc9\x17\x4c\xb2\x22\xc9\xd7\xb8\xbd\xde\x53\xfe\x71\x84\xc0\x79\xa5\x76\x70\xf9\x56\xf1\x69\x72\x1b\xd5\x3a\xdc\x97\x22\x87\x20\x01\x5b\x0d\x19\x6e\x98\x64\x83\x56\x9c\xf5\x54\x26\x42\x5d\x80\x5a\x3c\x86\x2a\x1a\xe1\x77\x1d\x25\x8c\xa2\x44\x46\x45\x24\x54\x10\xf1\x29\xfa\x23\xba\x82\x82\x89\xd4\x9b\xce\x89\x72\x45\x25\x15\x3e\x42\xf8\x50\xc0\xb5\x95\xa1\x35\xd2\x99\xae\x7f\x9c\x44\x87\xca\x48\x71\x2b\x1f\xa4\xae\x29\xf6\xe2\x64\x7a\x1d\x1c\x3a\xcc\xcc\x0e\x09\x4e\xda\x8d\x15\x96\x72\x91\x52\x9e\x0a\x62\x6f\x25\xdf\x0a\x87\x80\xdb\x5b\x2c\xb5\x85\xa6\xc6\x6e\xc7\xf9\x1b\x27\xc3\x0d\xe4\x5f\xfd\x74\xf9\xe6\x97\x8b\xeb\x8f\xaf\xdf\xbd\xf9\xe5\xed\xf5\x87\xab\xd3\x38\xc1\xcb\x98\xbd\xcf\x30\x12\xe7\x8e\x62\x3e\x23\x1a\x70\x40\x04\xaa\x62\x4e\x69\x71\xc0\x30\xa7\x6c\xa3\x68\x45\x3c\xcc\x0f\x4a\x38\xef\xf6\xf4\x4e\x02\x81\xd9\x4e\x62\xa2\x73\x52\x9f\x86\x30\x4b\xaa\x12\x78\x9f\xf1\xad\x16\xa6\x36\xd6\x21\x73\x1b\x8a\xec\xda\xc8\x72\xb0\x63\x5c\x0f\x8e\xe4\x50\xa1\x5b\xfb\xea\x65\x90\x78\xa9\xed\xab\xd3\x09\x99\x3b\xcd\x83\xa8\x7c\x19\x1e\x1c\xb2\x93\xe1\x41\x80\xb3\x03\x35\x23\x7e\xe7\xd9\xc9\x2e\xb1\xa7\x0f\x07\x53\x6e\xe2\x65\x5c\x9d\x0b\x67\x6a\x69\xf5\xef\xaa\xe4\x6e\xbc\xfb\x5c\xf8\xe2\x55\x76\x42\x76\x92\xbb\x6a\x43\xc0\x96\xd5\x1c\x15\x9c\x23\xd8\x0b\x19\x81\xc3\x96\x5d\xa2\x9a\x95\x2a\x4b\x35\xe6\x4d\x78\xa3\x41\x1c\x4a\xbb\x85\xca\x77\x7b\xb6\x93\xb3\x56\x2a\x76\x61\x9c\xe2\xf0\xa6\x90\xe2\xf7\x24\x5d\x87\x2a\x42\x1f\xd9\xc9\x7e\xb7\x4d\x9c\x33\x8d\x85\x10\x53\xc8\x4e\x9c\x46\x6f\x19\xcc\x8f\xaf\x2f\x56\xa9\xec\x64\x7a\x16\x37\x75\xf2\xcd\x40\x75\x16\xca\xb3\x76\xcf\x79\x6e\x49\xc4\xa3\x8f\x52\xf2\x71\x39\xb1\xf1\x25\xc7\x53\x34\xc3\x21\xab\x55\xeb\x36\xc6\xbf\x42\xb7\x38\x11\x82\x9a\x27\x3e\xa9\x85\x73\xfd\x3c\xc2\x47\x74\x12\xc8\xd7\x53\xda\x86\xa7\x9b\xe1\x31\x6d\x78\xab\xd3\x3e\xd5\x0a\x37\xf7\xbf\x28\x46\xe5\xc0\xdb\x3e\xde\xc8\x5c\xfc\x4a\xb5\x9f\x74\x6a\x24\xba\x88\xeb\xad\xda\x13\x37\xbe\x90\xed\x4e\xe1\xf6\x2a\xaa\x28\x01\x15\xe9\x80\xd0\xc6\xc8\x23\x66\x1f\xde\x5d\xdc\x5e\xff\x72\x77\xfb\xf9\xea\xe2\xfa\xfd\xf5\x2d\xfa\xd9\x83\xb6\xa6\xe5\x76\xf4\x00\xad\xa8\xc2\x90\x9e\xd4\x09\x60\xcf\x9f\x07\x8e\x0c\xf8\x88\x69\x6c\xe6\x9c\x4f\x5e\xae\x1c\xec\x98\x76\x09\x2c\x09\x5a\xa3\xc3\x43\x8a\x1c\x49\x8e\xbf\xe6\xcc\x00\x05\x11\x82\x8b\x8d\xb4\x53\x1e\x61\x35\x14\x15\xda\x43\x19\x44\x31\x39\x64\x22\x22\x93\x75\x0b\x0d\x0b\xf4\x22\x30\x19\x5a\x2d\x7d\x2e\x34\x46\xec\xd6\xf1\x9b\xa9\x08\x2d\x55\xb9\x23\x7c\x4c\x55\x05\x4e\x6e\x0b\xb1\x4f\xe0\xe2\x7b\x8b\x22\x12\x3e\x51\xbf\xe9\x0d\x13\x44\xc7\x8e\xb6\xf9\xe8\x09\x6f\x42\xa7\xc5\x79\x0a\x83\xb1\xed\x62\xbc\x94\x01\x23\x83\xe8\x4b\xe2\x65\xef\x4d\xb0\x1d\x2c\xb8\x3f\x8d\x6f\x9f\x12\xed\xf5\x31\x34\xae\x61\x32\x70\xb2\x49\x5d\x15\x8b\x32\x95\xad\x2e\x0e\xed\x7c\xe2\x0b\x6a\x07\x44\x4f\x44\x90\xb8\xc1\xd0\x50\xf3\xe0\x30\x0c\x04\xbb\xd0\x89\xd0\x9f\xa1\x11\x05\xbe\x44\x86\x13\x62\xa3\xb0\xe1\xc8\x23\xa9\x2f\xc7\x5a\x4a\x84\x90\x09\x16\x13\x3c\xb9\x0b\x75\x2a\xcc\x72\x08\xd3\x57\x61\x6c\x7b\xd6\x2b\x96\x26\x55\xa8\x17\xdb\x78\x50\xac\xed\x51\xd9\xec\x51\x6f\x46\xd3\x1c\x8f\x9e\xd1\xb4\xe1\x6c\x1c\x5d\x7c\xf4\x8c\x88\xd6\xad\x8c\xf7\xa8\x74\xb1\x71\x86\xa2\xf0\x25\xd6\xa8\x0c\xc1\x21\x04\x57\x60\x10\xe9\x42\x17\x66\x93\x39\xe9\x11\x17\x52\x4b\x24\x31\x21\xbc\xb1\x84\xf2\x32\x3d\x7f\x53\x57\xc3\xb8\x45\xb7\xd5\xf3\x6b\x7a\x40\x9f\x7c\xef\xe4\x20\x7e\x22\x1f\x4f\xc9\xb5\xd4\xed\x1f\x78\x8a\xf4\xa2\xe9\x64\x88\x1e\xae\x39\x11\xb6\xf1\xcd\xcd\xc3\xf0\x42\xe9\x0d\x52\xcc\x6e\x04\xb0\x64\x85\xec\x0a\xbd\xb2\x36\xf4\xa7\x06\x16\x48\x92\x9c\x89\x50\x76\xd8\xa1\xc9\x52\x85\xa7\x7b\x26\x9a\x8f\x2d\xf6\x5e\xa9\x8e\x99\xe3\x42\xff\x48\x4b\xd4\x8f\xba\x6e\x00\x5a\x35\xe1\x2a\xd9\x00\xc6\x31\x44\xa4\x1b\x09\x00\xf1\x91\x0b\xf0\x80\x9e\x09\x60\x06\xc4\xc4\xc3\x8b\xc2\x98\x32\x71\xf3\x91\x7b\xfa\xcb\x54\x10\xb0\x87\x2a\x8f\xc8\x21\xc6\x4c\xc0\x85\x97\x60\x61\xfc\x24\xa7\xf8\x23\x5c\xbf\x05\xd7\xc5\x62\x91\x65\x97\x71\xa3\xab\xfb\x35\x21\xca\x00\x39\x02\xc2\x00\x6f\xcf\xd1\x4a\x3f\x70\xfb\xed\xba\x97\x6b\xc5\x59\x43\x2e\x17\x2f\x63\xd1\x86\xf3\x77\x9b\x94\x0a\x17\x73\x71\x39\x17\x6f\x30\x44\x7e\x0f\xa4\xc7\x0f\x05\xf4\x03\x3a\xe9\x0e\xa8\xe0\x7d\x2f\xd1\xa1\x6e\x2c\x46\xe2\x72\x97\x53\x83\xb8\xa8\xca\xf2\x0b\x31\xbb\x36\xba\xe1\x6e\x01\xdd\x6e\x01\xb9\xc7\xef\x41\xb5\x23\xdc\xd7\xe6\x8b\x9c\x87\x0b\x5d\x9b\xaa\xf1\x23\x5b\xfc\xfe\xff\x59\x92\xb2\xe7\x18\x59\x62\xd0\x52\x2c\x50\x23\x8a\xdd\x3a\x8e\xb1\x03\xae\x0f\x31\x1c\x1f\x35\x38\x49\xb2\x7d\x50\x82\xc3\x7e\x1c\xb6\x11\xcf\x73\x62\xa5\x50\xb8\x8a\x30\x09\xed\x03\xe4\x90\xa0\x91\x7f\x16\x20\x7f\xc9\x01\x02\xe2\x25\x8d\x5d\xe9\x60\xe7\xa9\x35\x1f\xe1\xc3\xe0\x86\xb4\xe7\xc7\x05\x43\x99\x9d\x35\x18\xf6\xf8\x91\x25\xfe\x35\xac\x30\x5d\x2c\x48\x89\x92\xd1\x1e\x3e\x23\xe2\x99\x65\xf6\xdf\x00\x00\x00\xff\xff\xe7\x14\x76\xf8\x55\x1c\x00\x00") +var _runtimeHelpHelpMd = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x59\xdd\x73\xe3\xb6\x11\x7f\x36\xff\x0a\x8c\x2e\x33\xb9\x4b\x25\x79\x9a\xf6\xc9\x6f\x8e\xed\xfb\x48\xee\xce\x8e\xcf\xd7\x26\x7d\x09\x21\x12\x94\x10\x93\x04\x03\x80\xb6\x95\x7e\xfc\xed\xfd\xed\x02\xa4\x08\x49\xbe\x74\x7a\x33\x99\x88\xc0\x62\xbf\x77\xf1\x5b\xf8\x85\xf8\xa0\x0b\x6b\xc4\x46\xd5\x9d\xf0\xea\xc9\x67\x59\x58\xd0\x4e\x48\x2c\xd8\x46\xb7\xb2\x5e\xac\xa4\x53\x25\xef\x0b\x55\x6a\x6f\xac\xf0\x1b\xe9\x85\xd4\x8d\x13\xde\x88\x95\x12\x4a\xba\x2d\xfd\xec\x9d\x12\xb2\x2d\x85\x6e\x7d\xaf\xbd\x7e\x50\x73\x91\x3d\x6e\x74\x8d\xd5\xda\x19\xe1\xe5\xbd\x6e\xd7\x42\x96\x0f\xb2\xf5\x72\xad\x84\xa9\xc0\x4a\x89\xaa\xaf\x6b\x51\xc8\x4e\xae\x74\x8d\x63\xca\xd1\x46\x63\x4a\x65\xdb\x51\x0b\xb7\xcc\xb2\x17\x2f\x5e\x88\xcf\x0e\x07\xb3\xec\xba\x2d\x94\xd8\x9a\x5e\x6c\xe4\x83\x12\xab\x5e\xd7\x9e\x59\x05\x05\xe7\xc2\xe9\xa6\xab\xb7\xc2\x79\x69\xbd\xd0\x5e\xac\xb6\xc2\xf6\x6d\x4b\xe2\xb3\xbc\x61\x23\x3b\xe9\x37\xa7\xde\x9c\x56\xd0\x6f\xe9\x9f\x7c\x2e\x60\x59\x3c\x17\x48\x72\xb2\xc9\x74\xaa\x85\x51\x42\x35\x9d\xdf\x42\x52\x55\x29\xbb\x1c\x1c\xc5\x66\xb9\xbe\xeb\x8c\xf5\x4e\x14\x56\x49\x4f\x22\x02\x95\x13\x95\x35\x0d\x74\x28\x75\x7b\x96\x65\x79\x9e\x67\x5f\x09\x5d\x15\xa6\xad\xf4\x5a\xfc\x4b\xb0\x0c\x5e\xce\x7e\x86\x25\x05\x84\x34\x06\xd6\x90\x1d\x45\x6f\x1d\xd4\x91\xd6\xf4\xf0\xe7\xa3\xf6\x1b\x5e\x96\xd6\x9a\x47\x71\xaf\xb6\x8e\xfd\xdc\x18\x78\x3c\x3a\xe6\x07\xb5\x5d\xe9\x16\xa2\xd6\x2e\xcb\xde\x2a\x4b\xc4\x81\x57\xa9\x2a\xd9\xc3\x3f\xf7\x3b\x0a\x44\x48\xfc\xea\x4c\x2b\x2a\x63\x1b\x81\x10\x15\x1b\x0e\x3a\x99\xb3\x31\x8f\xd9\x36\xea\x63\x15\x9d\x20\x2e\x0d\xf9\x02\xcb\x56\xd4\x9a\xa2\xb8\x64\x83\x88\x47\xf6\xcf\x4c\xe0\xdf\xec\x73\x37\x3b\x13\xd3\x7f\xb3\x0b\x36\x02\xeb\xf3\x40\x71\x69\x1e\xdb\x84\x26\x52\xf0\x7a\xa4\xb9\xd5\xeb\x8d\x9f\x12\x45\x9a\xb0\x1e\x89\xde\xab\xca\x1f\x63\xc4\xeb\x91\xe6\xd3\x46\x57\x7e\xaa\xd3\xec\x93\xaa\x55\xe1\x77\xea\x30\xc5\x54\xa7\x48\x31\x55\x87\x69\xa6\xe2\x22\xcd\x81\xa4\xa9\xde\x91\x26\x51\xf9\xbc\xf6\xa9\xd6\xb3\xbf\x1b\x5b\x4e\xd9\x80\x22\x35\x9e\x29\xf6\x99\xa4\xc2\xa2\xa4\x67\x09\x47\x91\x13\xc2\xa9\xcc\x0b\x6f\xeb\x44\xad\xd9\x27\xaa\x98\xeb\xea\xbd\x6e\xd5\x94\x28\xd1\x6c\x76\xd5\x96\x87\x24\x89\xc0\x28\xef\xce\x3c\xc3\x2f\x31\x63\x24\x3e\xca\x37\xc9\xab\x18\x68\xe6\x3a\x25\x4a\x52\x2b\x12\x81\xdb\x81\xc8\x81\x59\xaa\xdf\x01\xd9\xc0\x6e\xaa\xd9\x40\x74\xd5\xa2\x27\x25\x19\xfa\xae\x75\xca\xfa\xb0\x3e\xe4\x44\x27\x0b\x75\x84\x28\xac\x47\xa2\xef\x64\x71\xef\xa6\x84\x93\x95\x7d\x92\x6f\x87\xdc\x3a\x20\x41\xac\x17\x09\xa7\xd9\x25\x94\xf6\xea\x48\x7e\x2d\x12\x76\xcf\xd0\xdd\xc9\x55\x5a\xc8\x51\x75\x5a\x9f\xf8\xe9\x3a\xb1\xee\x1a\x5d\xf2\x35\x1a\x69\xe2\xc9\x84\xe2\x13\x1a\xf5\x74\xf7\x75\xb2\xfb\x5a\xa7\xc1\xfa\x78\xb0\xfb\x11\xf7\xcf\x94\xe2\xe6\x80\xe2\xc6\xaa\x07\x8d\x8e\x38\xa5\xfa\x47\x42\xf5\xb9\x2d\xcd\x74\xf7\xe7\x64\xf7\x56\xa5\xbb\x17\x69\x1b\x32\xdd\x76\xba\xfb\xd3\x5e\x93\x4a\x94\xfb\x61\x7f\x73\x3f\xa9\x2f\x13\x82\xcb\xbe\xab\x75\x21\xbd\xda\x27\xfb\x5b\x42\x76\x23\x9d\x4f\xb6\xcf\x53\x0f\x73\xae\x9e\xd7\xf5\x94\xe4\x2e\x21\x39\x2f\x4b\x0a\xe3\x5e\x5d\x7f\xfa\x2d\x16\xc5\xe0\xc1\xbd\x50\x73\xd6\xd4\xd2\x6d\x38\xbb\x28\x10\x13\x82\xb7\xa6\x51\x69\x2f\x4e\x4a\x8a\x0a\x27\xcd\xa6\x49\x29\xdd\xe0\x2e\x3f\x56\xde\x71\x7d\x42\x75\xac\xbe\xc7\xf5\x89\xaa\x6f\x12\x73\xef\xcc\x7a\x5d\xab\xb7\x80\x37\x49\x2f\x3b\x42\x73\xdb\xd7\xbb\xe2\xe5\xae\x98\x10\x7d\xdf\x37\xdd\x34\x36\xa1\x72\xa6\x8a\xc7\x95\xc1\x6a\x57\xec\x59\x7d\x51\x2b\x49\x6d\xcb\xa7\xf9\xf9\x5d\x1a\x41\x20\xb1\xfa\x03\x80\xcf\x94\xe4\xc7\x84\xe4\x47\x00\xab\xe9\xee\xd5\x5e\x92\x36\x0d\x80\x41\x64\xc1\x54\xa7\xa7\xe2\xaa\x91\x85\x5b\x38\xbf\x05\x10\x9b\x80\x80\x5d\x5b\xa8\xa8\x1b\x1c\xbb\x44\x16\xab\x61\x67\xbf\x93\x48\xee\xdb\x87\xcd\x9d\xf6\xc8\x31\x87\x77\x04\xed\x50\xac\x0f\x60\x01\x6d\xb4\xbb\x0d\x0e\x69\xf6\xef\x14\x18\x11\xb2\x64\x00\x14\x70\x8c\x13\x7f\x0a\x58\x88\x11\x28\xa3\xa6\x47\x28\x49\x30\x8f\xfe\xbf\xcc\xc8\x35\xa2\x86\xce\x8c\x93\x2c\x99\x75\x00\xae\x70\x92\xbe\x02\x46\x24\x32\x85\xff\x22\x24\xad\xa1\xf8\x9c\x16\xb3\x82\x38\xf5\x1d\x13\x94\x50\xed\x90\xcd\x73\x3c\x46\xac\x38\x18\xb1\x31\x75\x29\x1c\xdd\x2f\x01\xd1\x49\xc0\xde\x40\x0b\xeb\x88\x6d\xa3\x5a\x70\x29\xbc\x36\x2d\x1b\xe6\xb8\xa2\x45\x80\xd0\x20\x08\xb8\xeb\x8e\x78\x0f\x40\xae\x91\x5b\x42\xe0\x00\x6a\x8c\x14\x7b\x47\xf8\x93\xa4\xe7\xff\x39\x5d\x06\xa8\x79\xca\x40\xf3\x74\x38\xb2\x24\xd0\x96\x67\x0c\x7b\xc5\x95\x04\xf2\x83\x43\x09\xfd\x05\x0e\x10\x0b\x55\x83\x12\x10\xf6\x1a\x16\xaa\x27\x09\x54\x0c\x7f\x10\xda\x27\x3c\x98\x93\x7b\x17\x5b\xc6\xc7\x38\x63\xd8\xf2\xb0\xf8\x3b\x2f\x5a\xb4\xd2\x39\xe3\xf3\xc2\xf4\x30\xba\xeb\x19\x9e\x67\x95\xa9\x6b\xf3\x48\x2a\x02\x80\xb2\x96\xa9\x56\x82\xb5\x9a\x42\xcb\x93\xb1\x51\x0f\xdd\xfb\x64\x6c\xec\xa1\x63\x0f\xa9\x42\x20\xf8\xc6\x38\xa7\x57\x70\x56\x11\x0a\xc1\xed\x9c\xaf\x9e\x54\xd1\x7b\xc5\x50\x3e\x4c\x31\x91\x86\x92\xa6\xb3\xca\xb1\xe7\x82\x11\x0a\x8a\xb0\xa6\x8a\x77\x39\xd8\x81\x78\x99\x42\xeb\x6e\x5f\x5e\x18\x8d\xb6\xbb\xac\x85\x31\xdf\x88\xfc\x37\x54\x6d\x7e\x26\xa8\x78\x5d\xc0\xfd\x4b\x5a\x76\xb8\x13\xb1\x4c\x57\xa3\x1b\x52\xca\x52\x0e\x8c\xa9\x03\x22\xab\xba\x1a\x37\xb6\x98\x39\x74\x90\x62\x33\x13\xb3\x07\x59\xf7\x6a\x26\xaa\x5a\xae\x1d\x8e\xdf\x6d\x10\xbc\x47\x8d\x64\x1a\x48\xf3\x40\x9a\x87\x34\xcb\x99\x3e\x5f\x0a\x2a\x37\x4a\x9e\x3c\x9c\x64\x2b\x4c\x47\x81\x96\xf5\x92\x36\xcf\x29\x4a\x60\xd6\x19\x4c\x70\x73\xd2\x08\x14\xf8\x36\x2d\x66\x22\xd3\x2a\x16\x79\x26\xf2\x22\x9f\xc7\xa1\x41\xb5\x12\xe6\x3b\x2c\x6d\x54\x71\x9f\xf3\xd4\xc6\x72\xc2\xb6\x74\xf7\x98\x35\x2a\x72\xc8\xd7\x25\x4d\x0e\x8a\xb2\xa3\x53\x96\xe7\x0e\xb2\x38\xaa\xcc\x99\xaf\x28\x19\xbd\x6e\x14\x77\xae\x8f\xc6\xab\xe0\xce\xd1\x9c\xa6\x77\x9e\xb2\x5d\x0a\x98\xa4\x51\xd7\x6a\xad\x9e\x96\x42\xbc\xab\x58\xbb\x58\x77\xd2\xae\x7b\xe2\xc7\x0d\xae\x34\xd0\xae\x35\x3e\x0c\x8a\xb2\xc5\x4c\x48\xf8\x87\x27\x20\xed\x43\x8e\x52\x0d\x99\x46\x87\x09\xf2\xb7\x1e\x72\x5d\x70\xbd\x53\x3e\x3a\x48\x04\x1f\x9e\xa1\x24\x7d\x08\x55\x5c\x87\x39\xbc\xb5\x14\x37\xe8\xf0\xa8\x63\xa7\x42\x6a\xb4\x34\x2f\x3b\xc5\x75\x44\x63\x16\x29\x23\xe1\x02\x58\x00\x3d\xc3\x69\x37\x66\x0a\xd8\xc6\x68\xf7\xf8\xd8\x2c\x62\x3e\x41\x20\x16\x82\xc0\x35\xe6\x69\xda\x53\x34\x2c\xc7\xd4\x8d\x55\xb4\xc2\x05\xbd\xe6\x51\x71\xc9\x01\x26\x59\x91\xe4\x6b\x44\xaf\xf7\x54\x7f\x9c\x21\x70\x5e\xa9\x1d\x5c\xbe\x55\x7c\x9a\xdc\x46\xbd\x0e\xf1\x52\xe4\x10\x14\x60\xab\x21\xc3\x0d\xe3\x72\xd0\x8a\xab\x9e\xda\x44\xe8\x0b\x50\x8b\x67\x5d\x45\xef\x04\xbb\x1b\x25\xcc\xbb\x44\x46\x4d\x24\x74\x10\xf1\x29\xfa\x23\xba\x82\x92\x89\xd4\x9b\x0e\xa3\x72\x45\x2d\x15\x3e\x42\xfa\x50\xc2\xb5\x95\xa1\x35\xd2\x99\xc2\x3f\x8e\xbb\x43\x67\xa4\xbc\x95\x0f\x52\xd7\x94\x7b\x71\xfc\xbd\x0e\x0e\x1d\x06\x73\x87\x02\x27\xed\xc6\x0e\x4b\xb5\x48\x25\x4f\x0d\xb1\xb7\x92\xa3\xc2\x29\xe0\xf6\x16\x4b\x6d\xa1\xa9\xb1\xdb\x71\xc8\xc7\xc9\x10\x81\xfc\xab\x9f\x2e\xdf\xfc\x72\x71\xfd\xf1\xf5\xbb\x37\xbf\xbc\xbd\xfe\x70\x75\x1a\x9f\x09\x64\xac\xde\x67\x18\x89\x73\x47\x39\x9f\x11\x0d\x38\x20\x03\x55\x31\xa7\xb2\x38\x60\x98\x53\xb5\x51\xb6\x22\x1f\xe6\x07\x2d\x9c\x77\x7b\x7a\x8c\x81\xc0\x6c\x27\x31\xd1\x39\xe9\x4f\x43\x9a\x25\x5d\x09\xbc\xcf\x38\xaa\x85\xa9\x8d\x75\xa8\xdc\x86\x32\xbb\x36\xb2\x1c\xec\x18\xd7\x83\x23\x39\x55\x28\x6a\x5f\xbd\x0c\x12\x2f\xb5\x7d\x75\x3a\x21\x73\xa7\x79\x10\x95\x2f\xc3\xab\x46\x76\x32\xbc\x3a\x70\x75\xa0\x67\xc4\xef\x3c\x3b\xd9\x15\xf6\xf4\x75\x62\xca\x4d\xbc\x8c\xab\x73\xe1\x4c\x2d\xad\xfe\x5d\x95\x7c\x1b\xef\x3e\x17\xbe\x78\x95\x9d\x90\x9d\xe4\xae\xda\x10\x7a\x66\x35\x47\x05\xe7\x48\xf6\x42\x46\xe0\xb0\x65\x97\xa8\x66\xa5\xca\x52\x8d\x75\x13\x1e\x82\x90\x87\xd2\x6e\xa1\xf2\xdd\x9e\xed\xe4\xac\x95\x8a\xb7\x30\x4e\x71\x7a\x53\x4a\xf1\xa3\x95\xae\x43\x17\xa1\x8f\xec\x64\xff\xb6\x4d\x9c\x33\xcd\x85\x90\x53\xa8\x4e\x9c\xc6\xdd\x32\x98\x1f\x9f\x78\xac\x52\xd9\xc9\xf4\x2c\x22\x75\xf2\xcd\x40\x75\x16\xda\xb3\x76\xcf\x79\x6e\x49\xc4\xa3\x8f\x52\xf2\x71\x39\xb1\xf1\x25\xe7\x53\x34\xc3\xa1\xaa\x55\xeb\x36\xc6\xbf\xc2\x6d\x71\x22\x04\x5d\x9e\xf8\xa4\x2b\x9c\xfb\xe7\x11\x3e\xa2\x93\x40\xbe\x9e\xca\x36\xbc\x0f\x0d\x2f\x76\xc3\x83\xa0\xf6\xa9\x56\x88\xdc\xff\xa2\x18\xb5\x03\x6f\xfb\x18\x91\xb9\xf8\x95\x7a\x3f\xe9\xd4\x48\xdc\x22\xae\xb7\x6a\x4f\xdc\xf8\x0c\xb7\x3b\x85\xe8\x55\xd4\x51\x02\x2a\xd2\x01\xa1\x8d\x99\x47\xcc\x3e\xbc\xbb\xb8\xbd\xfe\xe5\xee\xf6\xf3\xd5\xc5\xf5\xfb\xeb\x5b\xdc\x67\x0f\xda\x9a\x96\xaf\xa3\x07\x68\x45\x1d\x86\xf4\xa4\x9b\x00\xf6\xfc\x79\xe0\xc8\x80\x8f\x98\xc6\xcb\x9c\xeb\xc9\xcb\x95\x83\x1d\xd3\x5b\x02\x4b\x82\xd6\xe8\xf0\x50\x22\x47\x8a\xe3\xaf\x39\x33\x40\x43\x84\xe0\x62\x23\xed\x94\x47\x58\x0d\x4d\x85\xf6\xd0\x06\xd1\x4c\x0e\x99\x88\xc8\x64\xdd\x42\xc3\x02\x77\x11\x98\x0c\x57\x2d\x7d\x2e\x34\xe6\xf8\xd6\xf1\xc3\xac\x08\x57\xaa\x72\x47\xf8\x98\xaa\x0a\x9c\xdc\x16\x62\x9f\xc0\xc5\xf7\x16\x4d\x24\x7c\xa2\x7f\xd3\x43\x29\x88\x8e\x1d\x6d\xf3\xd1\x13\xde\x84\x9b\x16\xe7\x29\x0d\xc6\x6b\x17\x33\xac\x0c\x18\x19\x44\x5f\x12\x2f\x7b\x6f\x82\xed\x60\xc1\xf7\xd3\xf8\xc0\x2a\x71\xbd\x3e\x86\x8b\x6b\x98\x0c\x9c\x6c\x52\x57\xc5\xa6\x4c\x6d\xab\x8b\x73\x2d\x9f\xf8\x82\xda\x01\xd1\x13\x11\x24\x6e\x30\x34\xd4\x3c\x38\x0c\x03\xc1\x2e\x75\x22\xf4\x67\x68\x44\x89\x2f\x51\xe1\x84\xd8\x28\x6d\x38\xf3\x48\xea\xcb\xb1\x97\x12\x21\x64\x82\xc5\x04\x4f\xee\x52\x9d\x1a\xb3\x1c\xd2\xf4\x55\x18\xdb\x9e\xf5\x8a\xa5\x49\x15\xea\xc5\x6b\x3c\x28\xd6\xf6\xe8\x6c\xf6\xa8\x37\xa3\x69\x8e\x47\xcf\x68\xda\x70\x36\x8e\x2e\x3e\x7a\x46\x44\xeb\x56\xc6\x7b\x74\xba\x78\x71\x86\xa6\xf0\x25\xd6\xe8\x0c\xc1\x21\x04\x57\x60\x10\xe9\x42\x01\xb3\xc9\x9c\xf4\x88\x80\xd4\x12\x45\x4c\x08\x6f\x6c\xa1\xbc\x4c\x6f\xec\x74\xab\x61\xdc\xa2\x68\xf5\xfc\x64\x1f\xd0\x27\xc7\x9d\x1c\xc4\xef\xf0\xe3\x29\xb9\x96\xba\xfd\x03\x4f\x91\x5e\x34\x9d\x0c\xd9\xc3\x3d\x27\xc2\x36\x8e\xdc\x3c\x0c\x2f\x54\xde\x20\xc5\xec\x46\x00\x4b\x56\xa8\xae\x70\x57\xd6\x86\xfe\x9e\xc1\x02\x49\x92\x33\x11\xca\x0e\x3b\x34\x59\xaa\xf0\xf7\x01\x26\x9a\x8f\x57\xec\xbd\x52\x1d\x33\x47\x40\xff\x48\x4b\xf4\x8f\xba\x6e\x00\x5a\x35\xe1\x2a\xd9\x00\xc6\x31\x44\xa4\x88\x04\x80\xf8\xc8\x0d\x78\x40\xcf\x04\x30\x03\x62\xe2\xe1\x45\x61\x4c\x99\xb8\xf9\x48\x9c\xfe\x32\x15\x04\xec\xa1\xca\x23\x72\x88\x31\x13\x70\xe3\x25\x58\x18\x3f\xc9\x29\xfe\x08\xd7\x6f\xc1\x75\xb1\x58\x64\xd9\x65\xdc\xe8\xea\x7e\x4d\x88\x32\x40\x8e\x80\x30\xc0\xdb\x73\xb6\xd2\x0f\x44\xbf\x5d\xf7\x72\xad\xb8\x6a\xc8\xe5\xe2\x65\x6c\xda\x70\xfe\x6e\x93\x4a\xe1\x62\x2e\x2e\xe7\xe2\x0d\x86\xc8\xef\x81\xf4\xf8\xa1\x80\x7e\x40\x27\xdd\x01\x15\xbc\xef\x25\x6e\xa8\x1b\x8b\x91\xb8\xdc\xd5\xd4\x20\x2e\xaa\xb2\xfc\x42\xce\xae\x8d\x6e\xf8\xb6\x80\x6e\xb7\x80\xdc\xe3\xf7\xa0\xda\x11\xee\x6b\xf3\x45\xce\x43\x40\xd7\xa6\x6a\xfc\xc8\x16\xbf\xff\x7f\x96\xa4\xec\x39\x46\x96\x98\xb4\x94\x0b\x74\x11\xc5\xdb\x3a\x8e\xb1\x03\xae\x0f\x39\x1c\x1f\x35\xb8\x48\xb2\x7d\x50\x82\xc3\x7e\x1c\xb6\x91\xcf\x73\x62\xa5\xd0\xb8\x8a\x30\x09\xed\x03\xe4\x50\xa0\x91\x7f\x16\x20\x7f\xc9\x09\x02\xe2\x25\x8d\x5d\xe9\x60\xe7\xe9\x6a\x3e\xc2\x87\xc1\x0d\x69\xcf\x8f\x0b\x86\x2a\x3b\x6b\x30\xec\xf1\x23\x4b\xfc\x93\x5b\x61\xba\xd8\x90\x12\x25\xa3\x3d\x7c\x46\xc4\x33\xcb\xec\xbf\x01\x00\x00\xff\xff\x30\x23\x18\xa6\xba\x1c\x00\x00") func runtimeHelpHelpMdBytes() ([]byte, error) { return bindataRead( @@ -255,7 +255,7 @@ func runtimeHelpHelpMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/help/help.md", size: 7253, mode: os.FileMode(420), modTime: time.Unix(1465309572, 0)} + info := bindataFileInfo{name: "runtime/help/help.md", size: 7354, mode: os.FileMode(420), modTime: time.Unix(1465426120, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -275,7 +275,7 @@ func runtimePluginsGoGoLua() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/plugins/go/go.lua", size: 1032, mode: os.FileMode(420), modTime: time.Unix(1465403835, 0)} + info := bindataFileInfo{name: "runtime/plugins/go/go.lua", size: 1032, mode: os.FileMode(420), modTime: time.Unix(1465409773, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -295,7 +295,7 @@ func runtimePluginsLinterLinterLua() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/plugins/linter/linter.lua", size: 2287, mode: os.FileMode(420), modTime: time.Unix(1465403847, 0)} + info := bindataFileInfo{name: "runtime/plugins/linter/linter.lua", size: 2287, mode: os.FileMode(420), modTime: time.Unix(1465409773, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -635,7 +635,7 @@ func runtimeSyntaxCssMicro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime/syntax/css.micro", size: 335, mode: os.FileMode(420), modTime: time.Unix(1464645544, 0)} + info := bindataFileInfo{name: "runtime/syntax/css.micro", size: 335, mode: os.FileMode(420), modTime: time.Unix(1465409773, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/runtime/help/help.md b/runtime/help/help.md index 02ecffca..f06f717b 100644 --- a/runtime/help/help.md +++ b/runtime/help/help.md @@ -64,6 +64,8 @@ you can rebind them to your liking. "CtrlV": "Paste", "CtrlA": "SelectAll", "CtrlT": "AddTab" + "CtrlRightSq": "PreviousTab", + "CtrlBackslash": "NextTab", "Home": "Start", "End": "End", "PageUp": "CursorPageUp",