|
发表于 2021-3-17 20:27:28
|
显示全部楼层
居然出正式版了。刚刚去下载了
Jos 立即发布了Common.lua的修复版本并打包安装文件
Common.lua 修复的部分:
function Common:FirstWord(line)
以下是添加的修复代码:
if editor:LineLength(line) == 0 then
return ""
end
这段代码并不能解决问题。
犯的错误和我开始一样,感觉新行肯定是0字节长度。但是实际情况是 最后一行可以是任意字节长度。
因为用户很可能在行首或者中间敲回车。
查看 FirstWord 函数中的内容发现:
function Common:FirstWord(line)
local word_pos = editor.LineIndentPosition[line] + 1
;返回行缩进末尾的位置+1
local word_start = editor:WordStartPosition(word_pos)
;向前搜索单词边界的位置,这行代码执行结果永远都是 word_pos -1。
;所以不需要使用editor:WordStartPosition查询位置。直接赋值新的位置就好了。
local word_end = editor:WordEndPosition(word_pos)
;向后搜索单词边界的位置
local word_found = editor:textrange(word_start, word_end)
;提取字符串
word_found = word_found:gsub("^%s*", "") -- remove leading white space
word_found = word_found:gsub("[\r\n]", "") -- remove newlines
return string.lower(word_found)
end -- WordAtStart()
|
|