uicker.em可以在sourceinsight 3.5中很好使用;也很方便;先多谢大牛。
但是,将quicker.em添加到sourceinsight 4中,绑定快捷键,根本就找不到autoExpand的宏。
可能主要原因是:souceinsight 4对宏解析的规范有些变动;所以quicker.em某些地方产生了冲突(代码的注释)。
具体办法:
1、修改GetFunctionDef函数里的注释 如果是{表示函数参数头结束了 改为 //如果是'{'表示函数参数头结束了
行数大概在
具体函数内容为:
macro GetFunctionDef(hbuf,symbol)
{
ln = symbol.lnName
szFunc = ""
if(strlen(symbol) == 0)
{
return szFunc
}
fIsEnd = 1
// msg(symbol)
while(ln < symbol.lnLim)
{
szLine = GetBufLine (hbuf, ln)
//去掉被注释掉的内容
RetVal = SkipCommentFromString(szLine,fIsEnd)
szLine = RetVal.szContent
szLine = TrimString(szLine)
fIsEnd = RetVal.fIsEnd
//如果是{表示函数参数头结束了 //2018.11.19修改前
//如果是'{'表示函数参数头结束了 //2018.11.19修改后
ret = strstr(szLine,"{")
if(ret != 0xffffffff)
{
szLine = strmid(szLine,0,ret)
szFunc = cat(szFunc,szLine)
break
}
szFunc = cat(szFunc,szLine)
ln = ln + 1
}
return szFunc
}
2、修改函数GetWordLeftOfIch 里的注释 //只提取字符和# { / *作为命令 改为 //只提取字符和'#', '{', '/', '*'作为命令
具体行数大概在
具体函数为;
macro GetWordLeftOfIch(ich, sz)
{
wordinfo = "" // create a "wordinfo" structure
chTab = CharFromAscii(9)
// scan backwords over white space, if any
ich = ich - 1;
if (ich >= 0)
while (sz[ich] == " " || sz[ich] == chTab)
{
ich = ich - 1;
if (ich < 0)
break;
}
// scan backwords to start of word
ichLim = ich + 1;
asciiA = AsciiFromChar("A")
asciiZ = AsciiFromChar("Z")
while (ich >= 0)
{
ch = toupper(sz[ich])
asciiCh = AsciiFromChar(ch)
/* if ((asciiCh < asciiA || asciiCh > asciiZ)
&& !IsNumber(ch)
&& (ch != "#") )
break // stop at first non-identifier character
*/
//只提取字符和# { / *作为命令 //2018.11.19修改前
//只提取字符和'#', '{', '/', '*'作为命令 //2018.11.19修改后测试通过
if ((asciiCh < asciiA || asciiCh > asciiZ)
&& !IsNumber(ch)
&& ( ch != "#" && ch != "{" && ch != "/" && ch != "*"))
break;
ich = ich - 1;
}
ich = ich + 1
wordinfo.szWord = strmid(sz, ich, ichLim)
wordinfo.ich = ich
wordinfo.ichLim = ichLim;
return wordinfo
}