aardio 代码格式化工具
https://gitee.com/pengchenggang/aardio---code-formatting-tool
1 代码进行了一定的修改,默认ctrl+t 改成了 ctrl+s
2 原先是通过选择进行格式化,全部保存的时候,会自动全选再保存。逻辑都删除了,改成直接全部格式化保存。这样就不闪了,代码如下。
import ide;
import gdi;
import winex;
import win.ui;
import win.inputBox;
import web.script.json
import web.script2;
import fonts.fontAwesome;
var hwndStatusBar = winex.findEx(ide.getMainHwnd(), , "Afx\:RibbonStatusBar", "");
var hwnd = winex.findEx(hwndStatusBar, , , "aardio代码格式化");
if (hwnd) return;
win.modifyStyle(hwndStatusBar, , 0x2000000 );
winform = win.form(text="aardio代码格式化";right=19;bottom=20;border="none";exmode="none";max=false;min=false;mode="child";parent=hwndStatusBar)
winform.add(
plus={cls="plus";left=0;top=0;right=20;bottom=23;bgcolor=-28642;color=16777215;font=LOGFONT(h=-16);iconStyle={font=LOGFONT(h=-20;name='FontAwesome')};iconText='\uF121';notify=1;z=1}
)
winform.plus.skin({
background = {
active = 0xFF0081FF;
default = 0xFF1E90FF;
hover = 0xFF339AFF
};
color = {
default = 0xFFFFFFFF
}
})
var ws = web.script2();
ws.addCode("window=this;");
jsCode = $ "\beautifier.min.js"
ws.addCode(jsCode);
var opt = {
indent_char = " ";
indent_size = "4";
space_before_conditional = true;
brace_style = "end-expand";
keep_array_indentation = true;
end_with_newline = true;
comma_first = false;
break_chained_methods = false;
indent_scripts = "keep";
e4x = false;
unescape_strings = false;
indent_inner_html = false;
jslint_happy = false;
indent_empty_lines = true;
preserve_newlines = true;
max_preserve_newlines = "2";
wrap_line_length = "0";
}
import fsys.table
var fTab = fsys.table("/key.table")
winform.plus.oncommand = function(id, event) {
var codeEditor = ide.getActiveCodeEditor()
if (!codeEditor) return;
var code = ide.getActiveCode()
if (!code) return;
var text = codeEditor.selText
var formatCode
var sSel, eSel = codeEditor.getsel()
if (#text) {
formatCode = ws.json.beautifier.aardio(text, opt);
}
else {
formatCode = ws.json.beautifier.aardio(code, opt);
}
codeEditor.text = formatCode;
codeEditor.setFocus(eSel: sSel);
ide.save()
}
var intervalId = winform.setInterval(
100,
function(hwnd, msg, id, tick) {
var chwnd = winex.findEx(hwndStatusBar, , "@msctls_updown32")
if (chwnd) {
var x, y = win.getPos(chwnd)
if (x != winform.xtmp) {
winform.setPos(x - winform.width - (85 * gdi.getDpiScale()), 2)
winform.xtmp = x;
winform.redraw();
}
}
})
winform.onClose = function(hwnd, message, wParam, lParam) {
winform.clearInterval(intervalId);
}
import win.ui.menu;
winform.plus.wndproc = function(hwnd, message, wParam, lParam) {
select (message) {
case 0x205 {
var x, y = win.getMessagePos(lParam);
var menu = win.ui.popmenu(winform);
menu.add("退出", function() {
winform.close()
})
menu.popup(x, y);
return true;
}
}
}
import win.ui.tooltip;
var tooltipCtrl = win.ui.tooltip(winform);
var toolInfoPlus = tooltipCtrl.addTool(winform.plus, "格式化代码")
if (io.exist("/key.table")) {
fTab.load()
hkid = winform.reghotkey(function(id, mod, vk) {
winform.plus.oncommand();
}, fTab.k, fTab.v);
}
else {
inputbox = win.inputBox(winform.hwnd)
inputbox.input.close()
inputbox.add({
hotkey = {
cls = "hotkey";
left = 20;
top = 46;
right = 423;
bottom = 71;
dl = 1;
dt = 1;
edge = 1;
password = password;
z = 3
}
})
inputbox.text = "格式化代码快捷键设置"
inputbox.info.text = "请在下面输入快捷键:"
inputbox.hotkey.sethotkey(2, 84)
inputbox.btnOk.oncommand = function(id, event) {
if (inputbox.hotkey.gethotkey()) {
var k1, v1 = inputbox.hotkey.gethotkey()
hkid = winform.reghotkey(function(id, mod, vk) {
winform.plus.oncommand();
}, k1, v1);
fTab.mixin(
k = k1; v = v1;);
}
else {
hkid = winform.reghotkey(function(id, mod, vk) {
winform.plus.oncommand();
}, 0x2 , 84);
fTab.mixin(
k = 2; v = 84;);
}
inputbox.endModal();
};
inputbox.doModal()
}
winform.show()
win.loopMessage();
__EOF__
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2019-05-05 dinner 后台 nodemon 部署 Koa (关闭everything 安装或排除node_modules) # mysql 没开192.168.x.x 需要设置一下 #Navicat Premium,mysql 数据库版本有要求:mysql-5.7.17.msi 对??的支持