From 16e9068cb97f7dc1027e3277e97600ead90fb50b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 17 Jan 2018 19:09:50 -0500 Subject: [PATCH] Support line:col in JumpLine Closes #1000 --- cmd/micro/actions.go | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/cmd/micro/actions.go b/cmd/micro/actions.go index 3a8b89dc..a9a34aa0 100644 --- a/cmd/micro/actions.go +++ b/cmd/micro/actions.go @@ -1623,21 +1623,38 @@ func (v *View) JumpLine(usePlugin bool) bool { } // Prompt for line number - message := fmt.Sprintf("Jump to line (1 - %v) # ", v.Buf.NumLines) - linestring, canceled := messenger.Prompt(message, "", "LineNumber", NoCompletion) + message := fmt.Sprintf("Jump to line:col (1 - %v) # ", v.Buf.NumLines) + input, canceled := messenger.Prompt(message, "", "LineNumber", NoCompletion) if canceled { return false } - lineint, err := strconv.Atoi(linestring) - lineint = lineint - 1 // fix offset - if err != nil { - messenger.Error(err) // return errors - return false + var lineInt int + var colInt int + var err error + if strings.Contains(input, ":") { + split := strings.Split(input, ":") + lineInt, err = strconv.Atoi(split[0]) + if err != nil { + messenger.Message("Invalid line number") + return false + } + colInt, err = strconv.Atoi(split[1]) + if err != nil { + messenger.Message("Invalid column number") + return false + } + } else { + lineInt, err = strconv.Atoi(input) + if err != nil { + messenger.Message("Invalid line number") + return false + } } + lineInt-- // Move cursor and view if possible. - if lineint < v.Buf.NumLines && lineint >= 0 { - v.Cursor.X = 0 - v.Cursor.Y = lineint + if lineInt < v.Buf.NumLines && lineInt >= 0 { + v.Cursor.X = colInt + v.Cursor.Y = lineInt if usePlugin { return PostActionCall("JumpLine", v)