该宏脚本使用的是 sourceinsight 4.00.0095, 逻辑上, 应该所有的4.0版本都能用, 但未测试
1. 涉及的功能有:
alt1 alt2切换标签 绑定的键位是: alt+1 alt+2 alt+3... alt+0
.h与.cpp切换 绑定的键位是: alt+F12
删除光标右边的所有的东西 绑定的键位是: ctl+k
删除光标左面的字符 绑定的键位是: ctl+backspace
删除光标右边的字符 绑定的键位是: ctl+delete
插入#ifndef *** #define **** #endif **** 绑定的键位是: ctl+shift+=
注释 绑定的键位是: alt+;
2. 具体的源码如下:
// 给所选择的行添加注释
// 使用行注释, 若已经存在的注释, 则取消注释
// 添加的注释与字符之间无空格
macro CommentBlock()
{
hbuf = GetCurrentBuf();
hwnd = GetCurrentWnd();
if (!hbuf || !hwnd) return 0
sel = GetWndSel(hwnd);
allcnt = GetBufLineCount(hbuf)
chTab = CharFromAscii(9)
chSpace = CharFromAscii(32)
chComment = CharFromAscii(47)
// 循环所有选择的行
iLine = sel.lnFirst;
while (iLine <= sel.lnLast)
{
newLine = "" //备用的新行
curLine = GetBufLine(hbuf, iLine);
col1 = 0
col2 = strlen(curLine)
has1 = 0
if (col2 > 0) {
while (col1 <= col2) {
ch = curLine[col1]
if (ch == chSpace || ch == chTab) {
newLine = newLine # ch
}
else {
if (ch == chComment && col1 < col2) {
tch = curLine[col1+1]
if (tch == chComment) {
remain = strmid(curLine, col1+2, col2)
newLine = newLine # remain
break
}
}
remain = strmid(curLine, col1, col2)
newLine = newLine # "//" # remain
break
}
col1++
}
// 把已经添加注释的行, 替换
PutBufLine(hbuf, iLine, newLine);
}
iLine = iLine + 1;
}
}
// alt + 1 switch tab, windows tab options中tab sorting使用Tab name
macro alt1() { setCurWindow(0)}
macro alt2() { setCurWindow(1)}
macro alt3() { setCurWindow(2)}
macro alt4() { setCurWindow(3)}
macro alt5() { setCurWindow(4)}
macro alt6() { setCurWindow(5)}
macro alt7() { setCurWindow(6)}
macro alt8() { setCurWindow(7)}
macro alt9() { setCurWindow(8)}
macro alt0() { setCurWindow(9)}
macro curtableft() { CurWindowSide(-1)}
macro curtabright() { CurWindowSide(1) }
// 1. 创建一个buf(si中只能用buf来保存array)
// 2. 循环取所有的窗口的文件名, 按字母序插入创建的buf中
// 3. buf中保存的文件名格式是: "文件件"+","+"id", 其中id是该文件的窗口id
// 4. 根据alt的id取buf中保存的文件名, 取出窗口id, 切换到该窗口id
function setCurWindow(idx) {
if (idx > 9 || idx < 0) {
msg("cur function parameter should [0,9], but cur is" # idx)
return
}
// 1. 打开nbuf
nbuf = GetnBuf()
// 2.取idx中所对应的buf的文件名, 并设置为当前窗口
if (idx >= 0 && idx <= 9 && idx < GetBufLineCount (nbuf)) {
cln = GetBu