]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/util.go
Slight improvements to included region highlighting
[micro.git] / cmd / micro / util.go
index 1577866d2ec53961d710499a171d6f82da6312d0..24a331844feb5b657c73836ae9d38878f9688d98 100644 (file)
@@ -23,7 +23,7 @@ func Count(s string) int {
        return utf8.RuneCountInString(s)
 }
 
-// NumOccurrences counts the number of occurences of a byte in a string
+// NumOccurrences counts the number of occurrences of a byte in a string
 func NumOccurrences(s string, c byte) int {
        var n int
        for i := 0; i < len(s); i++ {
@@ -91,6 +91,18 @@ func Insert(str string, pos int, value string) string {
        return string([]rune(str)[:pos]) + value + string([]rune(str)[pos:])
 }
 
+// MakeRelative will attempt to make a relative path between path and base
+func MakeRelative(path, base string) (string, error) {
+       if len(path) > 0 {
+               rel, err := filepath.Rel(base, path)
+               if err != nil {
+                       return path, err
+               }
+               return rel, nil
+       }
+       return path, nil
+}
+
 // GetLeadingWhitespace returns the leading whitespace of the given string
 func GetLeadingWhitespace(str string) string {
        ws := ""
@@ -162,7 +174,7 @@ func StringWidth(str string, tabsize int) int {
                switch ch {
                case '\t':
                        ts := tabsize - (lineIdx % tabsize)
-                       sw += ts - 1
+                       sw += ts
                        lineIdx += ts
                case '\n':
                        lineIdx = 0
@@ -244,11 +256,11 @@ func FuncName(i interface{}) string {
        return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name()
 }
 
-// SplitCommandArgs seperates multiple command arguments which may be quoted.
+// SplitCommandArgs separates multiple command arguments which may be quoted.
 // The returned slice contains at least one string
 func SplitCommandArgs(input string) []string {
        var result []string
-       var curQuote *bytes.Buffer = nil
+       var curQuote *bytes.Buffer
 
        curArg := new(bytes.Buffer)
        escape := false