1.套用网上对SI的评价:
Windows下开发人员的至爱,功能强大,界面友好。支持语法高亮、符号跳转,还支持函数调用关系图显示。这是一个专业的编程环境,很多大公司都是使用它的。这个编辑器支持完善的自定义功能外,几乎所有配置都能做个性化配置。除此之外,它本身带有一套功能强大的宏语言(Macro Language),借助这种语言可以很方便的编程实现各种特殊功能,非一般编辑器所能比拟。查找功能支持得也很不错。虽然在工程较大时,查找起来有点慢。但是它除了一般编辑器所支持的普通字符串查找,正则表达式查找外,还能支持关键字查找。这种方式比前两者快得多,也算是一个弥补。不足之处是列模式较弱,对中文支持有缺陷。
2.字体修改是Options-Document中Font Options中的Screen Fonts字体,强烈建议使用等宽字体,Courier、New Courier和宋体
3.Quicker宏添加到SI中的配置方法:
a.运行SI,打开Base工程,如果没有该工程,则生成它,将 Quicker.em加入到工程中
b.安装触发热键和菜单,打开SI中的Options的KeyAssignments菜单,在Command窗口中选择Macro,赋一个热键
4.参见http://blog.csdn.net/sweet_life/article/details/7638930
注:使用时,Quicker的后缀名需要改为.em
Quicker.c (137.56 KB)
macro AutoInsertTraceInfoInBuf()
{
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
sel = GetWndSel(hwnd)
hbuf = GetWndBuf(hwnd)
isymMax = GetBufSymCount(hbuf)
isym = 0
while (isym < isymMax)
{
symbol = GetBufSymLocation(hbuf, isym)
isCodeBegin = 0
fIsEnd = 1
isBlandLine = 0
if(strlen(symbol) > 0)
{
if(symbol.Type == "Class Placeholder")
{
hsyml = SymbolChildren(symbol)
cchild = SymListCount(hsyml)
ichild = 0
while (ichild < cchild)
{
symbol = GetBufSymLocation(hbuf, isym)
hsyml = SymbolChildren(symbol)
childsym = SymListItem(hsyml, ichild)
ln = childsym.lnName
isCodeBegin = 0
fIsEnd = 1
isBlandLine = 0
while( ln < childsym.lnLim )
{
szLine = GetBufLine (hbuf, ln)
//去掉注释的干扰
RetVal = SkipCommentFromString(szLine,fIsEnd)
szNew = RetVal.szContent
fIsEnd = RetVal.fIsEnd
if(isCodeBegin == 1)
{
szNew = TrimLeft(szNew)
//检测是否是可执行代码开始
iRet = CheckIsCodeBegin(szNew)
if(iRet == 1)
{
if( isBlandLine != 0 )
{
ln = isBlandLine
}
InsBufLine(hbuf,ln,"")
childsym.lnLim = childsym.lnLim + 1
SetBufIns(hbuf, ln+1 , 0)
InsertTraceInCurFunction(hbuf,childsym)
break
}
if(strlen(szNew) == 0)
{
if( isBlandLine == 0 )
{
isBlandLine = ln;
}
}
else
{
isBlandLine = 0
}
}
//查找到函数的开始
if(isCodeBegin == 0)
{
iRet = strstr(szNew,"{")
if(iRet != 0xffffffff)
{
isCodeBegin = 1
}
}
ln = ln + 1
}
ichild = ichild + 1
}
SymListFree(hsyml)
}
else if( ( symbol.Type == "Function") || (symbol.Type == "Method") )
{
ln = symbol.lnName
while( ln < symbol.lnLim )
{
szLine = GetBufLine (hbuf, ln)
//去掉注释的干扰
RetVal = SkipCommentFromString(szLine,fIsEnd)
szNew = RetVal.szContent
fIsEnd = RetVal.fIsEnd
if(isCodeBegin == 1)
{
szNew = TrimLeft(szNew)
//检测是否是可执行代码开始
iRet = CheckIsCodeBegin(szNew)
if(iRet == 1)
{
if( isBlandLine != 0 )
{
ln = isBlandLine
}
SetBufIns(hbuf, ln , 0)
InsertTraceInCurFunction(hbuf,symbol)
InsBufLine(hbuf,ln,"")
break
}
if(strlen(szNew) == 0)
{
if( isBlandLine == 0 )
{
isBlandLine = ln;
}
}
else
{
isBlandLine = 0
}
}
//查找到函数的开始
if(isCodeBegin == 0)
{
iRet = strstr(szNew,"{")
if(iRet != 0xffffffff)
{
isCodeBegin = 1
}
}
ln = ln + 1
}
}
}
isym = isym + 1
}
}
macro ComentLine()
{
hwnd = GetCurrentWnd()
hbuf = GetCurrentBuf()
lnFirst = GetWndSelLnFirst( hwnd )
lnCurrent = lnFirst
lnLast = GetWndSelLnLast( hwnd )
lnOld = 0
while ( lnCurrent <= lnLast )
{
szLine = GetBufLine(hbuf,lnCurrent)
DelBufLine(hbuf,lnCurrent)
nLeft = GetLeftBlank(szLine)
szLeft = strmid(szLine,0,nLeft);
szLine = TrimString(szLine)
ilen = strlen(szLine)
if(iLen == 0)
{
continue
}
nIdx = 0
//去掉期间的/* 和 */注释符以免出现注释嵌套错误
while ( nIdx < ilen -1 )
{
if( (( szLine[nIdx] == "/" ) && (szLine[nIdx+1] == "*")||
( szLine[nIdx] == "*" ) && (szLine[nIdx+1] == "/") )
{
szLine[nIdx] = " "
szLine[nIdx+1] = " "
}
nIdx = nIdx + 1
}
szLine = cat("/* ",szLine)
lnOld = lnCurrent
lnCurrent = CommentContent(hbuf,lnCurrent,szLeft,szLine,1)
lnLast = lnCurrent - lnOld + lnLast
lnCurrent = lnCurrent + 1
}
}
macro CreateNewHeaderFile()
{
hbuf = GetCurrentBuf()
language = getreg(LANGUAGE)
if(language != 1)
{
language = 0
}
szName = getreg(MYNAME)
if(strlen( szName ) == 0)
{
szMyName = Ask("Enter your name:")
setreg(MYNAME, szMyName)
}
isymMax = GetBufSymCount(hbuf)
isym = 0
ln = 0
//获得当前没有后缀的文件名
sz = ask("Please input header file name")
szFileName = GetFileNameNoExt(sz)
szExt = GetFileNameExt(sz)
szPreH = toupper (szFileName)
szPreH = cat("__",szPreH)
szExt = toupper(szExt)
szPreH = cat(szPreH,"_@szExt@__")
hOutbuf = NewBuf(sz) // create output buffer
if (hOutbuf == 0)
stop
SetCurrentBuf(hOutbuf)
InsertCPP(hOutbuf,0)
HeadIfdefStr(szPreH)
szContent = GetFileName(GetBufName (hbuf))
if(language == 0)
{
szContent = cat(szContent," 的头文件")
//插入文件头说明
InsertFileHeaderCN(hOutbuf,0,szName,szContent)
}
else
{
szContent = cat(szContent," header file")
//插入文件头说明
InsertFileHeaderEN(hOutbuf,0,szName,szContent)
}
lnMax = GetBufLineCount(hOutbuf)
if(lnMax > 9)
{
ln = lnMax - 9
}
else
{
return
}
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
sel = GetWndSel(hwnd)
sel.lnFirst = ln
sel.ichFirst = 0
sel.ichLim = 0
SetBufIns(hOutbuf,ln,0)
szType = Ask ("Please prototype type : extern or static")
//搜索符号表取得函数名
while (isym < isymMax)
{
isLastLine = 0
symbol = GetBufSymLocation(hbuf, isym)
fIsEnd = 1
if(strlen(symbol) > 0)
{
if(symbol.Type == "Class Placeholder")
{
hsyml = SymbolChildren(symbol)
cchild = SymListCount(hsyml)
ichild = 0
szClassName = symbol.Symbol
InsBufLine(hOutbuf, ln, "}")
InsBufLine(hOutbuf, ln, "{")
InsBufLine(hOutbuf, ln, "class @szClassName@")
ln = ln + 2
while (ichild < cchild)
{
childsym = SymListItem(hsyml, ichild)
childsym.Symbol = szClassName
ln = CreateClassPrototype(hbuf,ln,childsym)
ichild = ichild + 1
}
SymListFree(hsyml)
InsBufLine(hOutbuf, ln + 1, "")
ln = ln + 2
}
else if( symbol.Type == "Function" )
{
ln = CreateFuncPrototype(hbuf,ln,szType,symbol)
}
else if( symbol.Type == "Method" )
{
szLine = GetBufline(hbuf,symbol.lnName)
szClassName = GetLeftWord(szLine,symbol.ichName)
symbol.Symbol = szClassName
ln = CreateClassPrototype(hbuf,ln,symbol)
}
}
isym = isym + 1
}
sel.lnLast = ln
SetWndSel(hwnd,sel)
}
macro ExpandBraceLarge()
{
hwnd = GetCurrentWnd()
sel = GetWndSel(hwnd)
hbuf = GetCurrentBuf()
ln = sel.lnFirst
nlineCount = 0
retVal = ""
szLine = GetBufLine( hbuf, ln )
nLeft = GetLeftBlank(szLine)
szLeft = strmid(szLine,0,nLeft);
szRight = ""
szMid = ""
if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim)
{
//对于没有块选择的情况,直接插入{}即可
if( nLeft == strlen(szLine) )
{
SetBufSelText (hbuf, "{")
}
else
{
ln = ln + 1
InsBufLine(hbuf, ln, "@szLeft@{")
nlineCount = nlineCount + 1
}
InsBufLine(hbuf, ln + 1, "@szLeft@ ")
InsBufLine(hbuf, ln + 2, "@szLeft@}")
nlineCount = nlineCount + 2
SetBufIns (hbuf, ln + 1, strlen(szLeft)+4)
}
else
{
//对于有块选择的情况还得考虑将块选择区分开了
//检查选择区内是否大括号配对,如果嫌太慢则注释掉下面的判断
RetVal= CheckBlockBrace(hbuf)
if(RetVal.iCount != 0)
{
msg("Invalidated brace number")
stop
}
//取出选中区前的内容
szOld = strmid(szLine,0,sel.ichFirst)
if(sel.lnFirst != sel.lnLast)
{
//对于多行的情况
//第一行的选中部分
szMid = strmid(szLine,sel.ichFirst,strlen(szLine))
szMid = TrimString(szMid)
szLast = GetBufLine(hbuf,sel.lnLast)
if( sel.ichLim > strlen(szLast) )
{
//如果选择区长度大于改行的长度,最大取该行的长度
szLineselichLim = strlen(szLast)
}
else
{
szLineselichLim = sel.ichLim
}
//得到最后一行选择区为的字符
szRight = strmid(szLast,szLineselichLim,strlen(szLast))
szRight = TrimString(szRight)
}
else
{
//对于选择只有一行的情况
if(sel.ichLim >= strlen(szLine))
{
sel.ichLim = strlen(szLine)
}
//获得选中区的内容
szMid = strmid(szLine,sel.ichFirst,sel.ichLim)
szMid = TrimString(szMid)
if( sel.ichLim > strlen(szLine) )
{
szLineselichLim = strlen(szLine)
}
else
{
szLineselichLim = sel.ichLim
}
//同样得到选中区后的内容
szRight = strmid(szLine,szLineselichLim,strlen(szLine))
szRight = TrimString(szRight)
}
nIdx = sel.lnFirst
while( nIdx < sel.lnLast)
{
szCurLine = GetBufLine(hbuf,nIdx+1)
if( sel.ichLim > strlen(szCurLine) )
{
szLineselichLim = strlen(szCurLine)
}
else
{
szLineselichLim = sel.ichLim
}
szCurLine = cat(" ",szCurLine)
if(nIdx == sel.lnLast - 1)
{
//对于最后一行应该是选中区内的内容后移四位
szCurLine = strmid(szCurLine,0,szLineselichLim + 4)
PutBufLine(hbuf,nIdx+1,szCurLine)
}
else
{
//其它情况是整行的内容后移四位
PutBufLine(hbuf,nIdx+1,szCurLine)
}
nIdx = nIdx + 1
}
if(strlen(szRight) != 0)
{
//最后插入最后一行没有被选择的内容
InsBufLine(hbuf, sel.lnLast + 1, "@szLeft@@szRight@")
}
InsBufLine(hbuf, sel.lnLast + 1, "@szLeft@}")
nlineCount = nlineCount + 1
if(nLeft < sel.ichFirst)
{
//如果选中区前的内容不是空格,则要保留该部分内容
PutBufLine(hbuf,ln,szOld)
InsBufLine(hbuf, ln+1, "@szLeft@{")
nlineCount = nlineCount + 1
ln = ln + 1
}
else
{
//如果选中区前没有内容直接删除该行
DelBufLine(hbuf,ln)
InsBufLine(hbuf, ln, "@szLeft@{")
}
if(strlen(szMid) > 0)
{
//插入第一行选择区的内容
InsBufLine(hbuf, ln+1, "@szLeft@ @szMid@")
nlineCount = nlineCount + 1
ln = ln + 1
}
}
retVal.szLeft = szLeft
retVal.nLineCount = nlineCount
//返回行数和左边的空白
return retVal
}
macro ExpandBraceLittle()
{
hwnd = GetCurrentWnd()
sel = GetWndSel(hwnd)
hbuf = GetCurrentBuf()
if( (sel.lnFirst == sel.lnLast)
&& (sel.ichFirst == sel.ichLim) )
{
SetBufSelText (hbuf, "( )")
SetBufIns (hbuf, sel.lnFirst, sel.ichFirst + 2)
}
else
{
SetBufIns (hbuf, sel.lnFirst, sel.ichFirst)
SetBufSelText (hbuf, "( ")
SetBufIns (hbuf, sel.lnLast, sel.ichLim + 2)
SetBufSelText (hbuf, " )")
}
}
macro ExpandBraceMid()
{
hwnd = GetCurrentWnd()
sel = GetWndSel(hwnd)
hbuf = GetCurrentBuf()
if( (sel.lnFirst == sel.lnLast)
&& (sel.ichFirst == sel.ichLim) )
{
SetBufSelText (hbuf, "[]")
SetBufIns (hbuf, sel.lnFirst, sel.ichFirst + 1)
}
else
{
SetBufIns (hbuf, sel.lnFirst, sel.ichFirst)
SetBufSelText (hbuf, "[")
SetBufIns (hbuf, sel.lnLast, sel.ichLim + 1)
SetBufSelText (hbuf, "]")
}
}
macro FileHeaderCreate()
{
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
ln = 0
hbuf = GetWndBuf(hwnd)
language = getreg(LANGUAGE)
if(language != 1)
{
language = 0
}
szMyName = getreg(MYNAME)
if(strlen( szMyName ) == 0)
{
szMyName = Ask("Enter your name:")
setreg(MYNAME, szMyName)
}
SetBufIns (hbuf, 0, 0)
if(language == 0)
{
InsertFileHeaderCN( hbuf,ln, szMyName,"" )
}
else
{
InsertFileHeaderEN( hbuf,ln, szMyName,"" )
}
}
macro FormatLine()
{
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
sel = GetWndSel(hwnd)
if(sel.ichFirst > 70)
{
Msg("选择太靠右了")
stop
}
hbuf = GetWndBuf(hwnd)
// get line the selection (insertion point) is on
szCurLine = GetBufLine(hbuf, sel.lnFirst);
lineLen = strlen(szCurLine)
szLeft = strmid(szCurLine,0,sel.ichFirst)
szContent = strmid(szCurLine,sel.ichFirst,lineLen)
DelBufLine(hbuf, sel.lnFirst)
CommentContent(hbuf,sel.lnFirst,szLeft,szContent,0)
}
macro FunctionHeaderCreate()
{
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
sel = GetWndSel(hwnd)
ln = sel.lnFirst
hbuf = GetWndBuf(hwnd)
language = getreg(LANGUAGE)
if(language != 1)
{
language = 0
}
szMyName = getreg(MYNAME)
if(strlen( szMyName ) == 0)
{
szMyName = Ask("Enter your name:")
setreg(MYNAME, szMyName)
}
nVer = GetVersion()
lnMax = GetBufLineCount(hbuf)
if(ln != lnMax)
{
szNextLine = GetBufLine(hbuf,ln)
if( (strstr(szNextLine,"(") != 0xffffffff) || (nVer != 2 ))
{
symbol = GetCurSymbol()
if(strlen(symbol) != 0)
{
if(language == 0)
{
FuncHeadCommentCN(hbuf, ln, symbol, szMyName,0)
}
else
{
FuncHeadCommentEN(hbuf, ln, symbol, szMyName,0)
}
return
}
}
}
if(language == 0 )
{
szFuncName = Ask("请输入函数名称:")
FuncHeadCommentCN(hbuf, ln, szFuncName, szMyName, 1)
}
else
{
szFuncName = Ask("Please input function name")
FuncHeadCommentEN(hbuf, ln, szFuncName, szMyName, 1)
}
}
macro HeaderFileCreate()
{
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
sel = GetWndSel(hwnd)
hbuf = GetWndBuf(hwnd)
language = getreg(LANGUAGE)
if(language != 1)
{
language = 0
}
szMyName = getreg(MYNAME)
if(strlen( szMyName ) == 0)
{
szMyName = Ask("Enter your name:")
setreg(MYNAME, szMyName)
}
CreateFunctionDef(hbuf,szMyName,language)
}
macro InsertCase()
{
hwnd = GetCurrentWnd()
sel = GetWndSel(hwnd)
hbuf = GetCurrentBuf()
ln = sel.lnFirst
szLine = GetBufLine( hbuf, ln )
nLeft = GetLeftBlank(szLine)
szLeft = strmid(szLine,0,nLeft);
InsBufLine(hbuf, ln, "@szLeft@" # "case # :")
InsBufLine(hbuf, ln + 1, "@szLeft@" # " " # "#")
InsBufLine(hbuf, ln + 2, "@szLeft@" # " " # "break;")
SearchForward()
}
macro InsertDo()
{
hwnd = GetCurrentWnd()
sel = GetWndSel(hwnd)
hbuf = GetCurrentBuf()
ln = sel.lnFirst
if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim)
{
szLeft = CreateBlankString(sel.ichFirst)
InsBufLine(hbuf, ln,szLeft)
SetWndSel(hwnd,sel)
}
val = ExpandBraceLarge()
szLeft = val.szLeft
if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim)
{
PutBufLine(hbuf,ln+1, "@szLeft@ #")
}
PutBufLine(hbuf, sel.lnLast + val.nLineCount, "@szLeft@}while ( # );")
// SetBufIns (hbuf, sel.lnLast + val.nLineCount, strlen(szLeft)+8)
InsBufLine(hbuf, ln, "@szLeft@do")
SearchForward()
}
macro InsertFileHeaderEN(hbuf, ln,szName,szContent)
{
hnewbuf = newbuf("")
if(hnewbuf == hNil)
{
stop
}
GetFunctionList(hbuf,hnewbuf)
InsBufLine(hbuf, ln + 0, "/******************************************************************************")
InsBufLine(hbuf, ln + 1, "")
InsBufLine(hbuf, ln + 2, " Copyright (C), 2001-2011, DCN Co., Ltd.")
InsBufLine(hbuf, ln + 3, "")
InsBufLine(hbuf, ln + 4, " ******************************************************************************")
sz = GetFileName(GetBufName (hbuf))
InsBufLine(hbuf, ln + 5, " File Name : @sz@")
InsBufLine(hbuf, ln + 6, " Version : Initial Draft")
InsBufLine(hbuf, ln + 7, " Author : @szName@")
SysTime = GetSysTime(1)
sz=SysTime.Year
sz1=SysTime.month
sz3=SysTime.day
InsBufLine(hbuf, ln + 8, " Created : @sz@/@sz1@/@sz3@")
InsBufLine(hbuf, ln + 9, " Last Modified :")
szTmp = " Description : "
nlnDesc = ln
iLen = strlen (szContent)
InsBufLine(hbuf, ln + 10, " Description : @szContent@")
InsBufLine(hbuf, ln + 11, " Function List :")
//插入函数列表
ln = InsertFileList(hbuf,hnewbuf,ln + 12) - 12
closebuf(hnewbuf)
InsBufLine(hbuf, ln + 12, " History :")
InsBufLine(hbuf, ln + 13, " 1.Date : @sz@/@sz1@/@sz3@")
InsBufLine(hbuf, ln + 14, " Author : @szName@")
InsBufLine(hbuf, ln + 15, " Modification: Created file")
InsBufLine(hbuf, ln + 16, "")
InsBufLine(hbuf, ln + 17, "******************************************************************************/")
InsBufLine(hbuf, ln + 18, "")
InsBufLine(hbuf, ln + 19, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 20, " * external variables *")
InsBufLine(hbuf, ln + 21, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 22, "")
InsBufLine(hbuf, ln + 23, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 24, " * external routine prototypes *")
InsBufLine(hbuf, ln + 25, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 26, "")
InsBufLine(hbuf, ln + 27, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 28, " * internal routine prototypes *")
InsBufLine(hbuf, ln + 29, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 30, "")
InsBufLine(hbuf, ln + 31, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 32, " * project-wide global variables *")
InsBufLine(hbuf, ln + 33, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 34, "")
InsBufLine(hbuf, ln + 35, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 36, " * module-wide global variables *")
InsBufLine(hbuf, ln + 37, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 38, "")
InsBufLine(hbuf, ln + 39, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 40, " * constants *")
InsBufLine(hbuf, ln + 41, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 42, "")
InsBufLine(hbuf, ln + 43, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 44, " * macros *")
InsBufLine(hbuf, ln + 45, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 46, "")
InsBufLine(hbuf, ln + 47, "/*----------------------------------------------*")
InsBufLine(hbuf, ln + 48, " * routines' implementations *")
InsBufLine(hbuf, ln + 49, " *----------------------------------------------*/")
InsBufLine(hbuf, ln + 50, "")
if(iLen != 0)
{
return
}
//如果没有功能描述内容则提示输入
szContent = Ask("Description")
SetBufIns(hbuf,nlnDesc + 14,0)
DelBufLine(hbuf,nlnDesc +10)
//注释输出处理,自动换行
CommentContent(hbuf,nlnDesc + 10," Description : ",szContent,0)
}
macro UpdateFunctionList()
{
hnewbuf = newbuf("")
if(hnewbuf == hNil)
{
stop
}
hwnd = GetCurrentWnd()
if (hwnd == 0)
stop
sel = GetWndSel(hwnd)
hbuf = GetWndBuf(hwnd)
GetFunctionList(hbuf,hnewbuf)
ln = sel.lnFirst
iHistoryCount = 1
isLastLine = ln
iTotalLn = GetBufLineCount (hbuf)
while(ln < iTotalLn)
{
szCurLine = GetBufLine(hbuf, ln);
iLen = strlen(szCurLine)
j = 0;
while(j < iLen)
{
if(szCurLine[j] != " ")
break
j = j + 1
}
//以文件头说明中前有大于10个空格的为函数列表记录
if(j > 10)
{
DelBufLine(hbuf, ln)
}
else
{
break
}
iTotalLn = GetBufLineCount (hbuf)
}
//插入函数列表
InsertFileList( hbuf,hnewbuf,ln )
closebuf(hnewbuf)
}
补充:
5.Macro: AutoInsertTraceInfoInBuf: 自动插入追踪信息缓存
6.Macro: ComentLine: 注释行
7.Macro: CreateNewHeaderFile: 创造新的头文件
8.Macro: ExpandBraceLarge: 大括号
9.Macro: ExpandBraceLittle: 小括号
10.Macro: ExpandBraceMid: 中括号
11.Macro: FileHeaderCreate: 文件开头
12.Macro: FormatLine: 格式行#
13.Macro: FunctionHeaderCreate: 函数体
14.Macro: HeaderFileCreate: 根据文件生成头文件
15.Macro: InsertCase: case
16.Macro: InsertDo: do while
17.Macro: InsertFileHeader : /————————————————–/
18.Macro: InsertNote: 注释
19.Macro: JumpAnywhere: 跳转到任何关键位置
20.Macro: KillLine : 删除行
21.Macro: OutputSiblingSymbols: 类似JumpAnywhere
22.Macro: UpdateFunctionList: 打印出函数列表