找回密码
 加入
搜索
楼主: 131738

[原创] 更新 AutoIt v3.3.14.5 (2) 中文安装包

  [复制链接]
发表于 2021-10-6 10:47:03 | 显示全部楼层
   学习 学习 谢谢分享
发表于 2021-10-1 20:50:14 | 显示全部楼层
又花了20金币,打开链接一看,原来我百度网盘上已经有了
发表于 2021-7-25 15:24:22 | 显示全部楼层
好多年没更新了啊
发表于 2021-3-31 14:38:25 | 显示全部楼层
重新回来使用AU3
 楼主| 发表于 2021-3-19 11:14:01 | 显示全部楼层
afan 发表于 2021-3-19 11:06
是指新建的最佳方案吗?那应该是了~
如果是回车停止响应的问题,那还得修改lua文件,因为虽然新建文件没 ...

我的 AutoIt v3.3.14.5 + 4.1.0 这样设置后没有修改任何 lua 文件,
测试也没有回车挂起. "新建"空脚本能被 SciTE 正确识别.

关于 " 但用户一定有以前创建的ANSI格式文件,或者习惯是ANSI文件格式,如果对其编辑依旧会有崩溃隐患 "
可以加以提示,由用户自由选择.
发表于 2021-3-19 11:06:43 | 显示全部楼层
131738 发表于 2021-3-19 10:10
刚测试, 我看这是最佳解决方案了.难怪 JSO 问我在 SciTE 中使用的标准文件编码是什么格式, 我一头雾水,  ...

是指新建的最佳方案吗?那应该是了~
如果是回车停止响应的问题,那还得修改lua文件,因为虽然新建文件没问题,但用户一定有以前创建的ANSI格式文件,或者习惯是ANSI文件格式,如果对其编辑依旧会有崩溃隐患。
 楼主| 发表于 2021-3-19 10:10:39 | 显示全部楼层
本帖最后由 131738 于 2021-3-19 10:25 编辑
afan 发表于 2021-3-17 17:27
改变菜单或按钮新建编码,在 SciTEGlobal.properties 属性文件里修改就行了,如新建改为 UTF-8 (BOM)
Ne ...

刚测试, 我看这是最佳解决方案了.难怪 JSO 问我在 SciTE 中使用的标准文件编码是什么格式, 我一头雾水, 不明不白, 也没有回答这个问题,现在看来就是这个了.
发表于 2021-3-18 10:05:23 | 显示全部楼层
好东西感谢分享
发表于 2021-3-17 20:27:28 | 显示全部楼层
131738 发表于 2021-3-17 11:44
OK.
官方已昨以发布正式 4.4.6 版 SciTE4AutoIt3.exe,
你能否做一个 4.4.6 版 & 3.3.14.5 的中文安装 ...

居然出正式版了。刚刚去下载了
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()
发表于 2021-3-17 17:27:14 | 显示全部楼层
131738 发表于 2021-3-17 12:19
这个关联到 SciTE 源码(这就是询问你是否会 VS c++ 的原因).
而这个源码不是 AutoIt3 团队编写的,解决这 ...

改变菜单或按钮新建编码,在 SciTEGlobal.properties 属性文件里修改就行了,如新建改为 UTF-8 (BOM)
NewFileEncoding=UTF8BOM
发表于 2021-3-17 14:33:53 | 显示全部楼层
本帖最后由 afan 于 2021-3-17 14:37 编辑
关于 " 因此就简单添加了 if line + 3 >= editor.LineCount then 的修复方式 ",
这个JSO 认为会停用某些功能,但没有详细描述停用那些功能.

就是我说的,仅最末两行不处理而已…


" 当然也可以直接修改 FirstWord 之类的函数(我已完成) " 未见发布啊.

很简单,先还原所有文件(AutoItIndentFix.lua 和 Common.lua) 到原始状态。再修改 Common.lua 中的以下位置中的一个字符即可,1 改为 0:
function Common:FirstWord(line)
        local word_pos = editor.LineIndentPosition[line] + 0

当然去掉 + 1 也是一样的。
发表于 2021-3-17 13:07:35 | 显示全部楼层
131738 发表于 2021-3-17 12:29
关于  "发现是 FirstWord 函数中的 WordStartPosition 造成的 (定义在 Common.lua)",
JSO 也给了解决 ...

我测试了下。Common.lua中

function Common:FirstWord(line)
        local word_pos = editor.LineIndentPosition[line] + 1
        --local word_start = editor:WordStartPosition(word_pos) 修改这句
        local word_start = word_pos -1
        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()

修改后不会出现无响应的问题。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 17:48 , Processed in 0.075262 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表