]> git.lizzy.rs Git - micro.git/blobdiff - internal/util/lua.go
Implement word wrapping
[micro.git] / internal / util / lua.go
index 3f0393d410e861dd2feb6b2b6e1006dfe6b608fa..eda14981f1c31b344953a26ea702fa061b40d87c 100644 (file)
@@ -1,13 +1,11 @@
 package util
 
-import (
-       "unicode/utf8"
-)
-
+// LuaRuneAt is a helper function for lua plugins to return the rune
+// at an index within a string
 func LuaRuneAt(str string, runeidx int) string {
        i := 0
        for len(str) > 0 {
-               r, size := utf8.DecodeRuneInString(str)
+               r, _, size := DecodeCharacterInString(str)
 
                str = str[size:]
 
@@ -20,10 +18,11 @@ func LuaRuneAt(str string, runeidx int) string {
        return ""
 }
 
+// LuaGetLeadingWhitespace returns the leading whitespace of a string (used by lua plugins)
 func LuaGetLeadingWhitespace(s string) string {
        ws := []byte{}
        for len(s) > 0 {
-               r, size := utf8.DecodeRuneInString(s)
+               r, _, size := DecodeCharacterInString(s)
                if r == ' ' || r == '\t' {
                        ws = append(ws, byte(r))
                } else {
@@ -35,7 +34,8 @@ func LuaGetLeadingWhitespace(s string) string {
        return string(ws)
 }
 
+// LuaIsWordChar returns true if the first rune in a string is a word character
 func LuaIsWordChar(s string) bool {
-       r, _ := utf8.DecodeRuneInString(s)
+       r, _, _ := DecodeCharacterInString(s)
        return IsWordChar(r)
 }