utils.em
上传用户:jnxxjx
上传日期:2015-03-08
资源大小:3388k
文件大小:5k
- /* Utils.em - a small collection of useful editing macros */
- /*-------------------------------------------------------------------------
- I N S E R T H E A D E R
- Inserts a comment header block at the top of the current function.
- This actually works on any type of symbol, not just functions.
- To use this, define an environment variable "MYNAME" and set it
- to your email name. eg. set MYNAME=raygr
- -------------------------------------------------------------------------*/
- macro InsertHeader()
- {
- // Get the owner's name from the environment variable: MYNAME.
- // If the variable doesn't exist, then the owner field is skipped.
- szMyName = getenv(MYNAME)
-
- // Get a handle to the current file buffer and the name
- // and location of the current symbol where the cursor is.
- hbuf = GetCurrentBuf()
- szFunc = GetCurSymbol()
- ln = GetSymbolLine(szFunc)
- // begin assembling the title string
- sz = "/* "
-
- /* convert symbol name to T E X T L I K E T H I S */
- cch = strlen(szFunc)
- ich = 0
- while (ich < cch)
- {
- ch = szFunc[ich]
- if (ich > 0)
- if (isupper(ch))
- sz = cat(sz, " ")
- else
- sz = cat(sz, " ")
- sz = Cat(sz, toupper(ch))
- ich = ich + 1
- }
-
- sz = Cat(sz, " */")
- InsBufLine(hbuf, ln, sz)
- InsBufLine(hbuf, ln+1, "/*-------------------------------------------------------------------------")
-
- /* if owner variable exists, insert Owner: name */
- if (strlen(szMyName) > 0)
- {
- InsBufLine(hbuf, ln+2, " Owner: @szMyName@")
- InsBufLine(hbuf, ln+3, " ")
- ln = ln + 4
- }
- else
- ln = ln + 2
-
- InsBufLine(hbuf, ln, " ") // provide an indent already
- InsBufLine(hbuf, ln+1, "-------------------------------------------------------------------------*/")
-
- // put the insertion point inside the header comment
- SetBufIns(hbuf, ln, 4)
- }
- /* InsertFileHeader:
- Inserts a comment header block at the top of the current function.
- This actually works on any type of symbol, not just functions.
- To use this, define an environment variable "MYNAME" and set it
- to your email name. eg. set MYNAME=raygr
- */
- macro InsertFileHeader()
- {
- szMyName = getenv(MYNAME)
-
- hbuf = GetCurrentBuf()
- InsBufLine(hbuf, 0, "/*-------------------------------------------------------------------------")
-
- /* if owner variable exists, insert Owner: name */
- InsBufLine(hbuf, 1, " ")
- if (strlen(szMyName) > 0)
- {
- sz = " Owner: @szMyName@"
- InsBufLine(hbuf, 2, " ")
- InsBufLine(hbuf, 3, sz)
- ln = 4
- }
- else
- ln = 2
-
- InsBufLine(hbuf, ln, "-------------------------------------------------------------------------*/")
- }
- // Inserts "Returns True .. or False..." at the current line
- macro ReturnTrueOrFalse()
- {
- hbuf = GetCurrentBuf()
- ln = GetBufLineCur(hbuf)
- InsBufLine(hbuf, ln, " Returns True if successful or False if errors.")
- }
- /* Inserts ifdef REVIEW around the selection */
- macro IfdefReview()
- {
- IfdefSz("REVIEW");
- }
- /* Inserts ifdef BOGUS around the selection */
- macro IfdefBogus()
- {
- IfdefSz("BOGUS");
- }
- /* Inserts ifdef NEVER around the selection */
- macro IfdefNever()
- {
- IfdefSz("NEVER");
- }
- // Ask user for ifdef condition and wrap it around current
- // selection.
- macro InsertIfdef()
- {
- sz = Ask("Enter ifdef condition:")
- if (sz != "")
- IfdefSz(sz);
- }
- macro InsertCPlusPlus()
- {
- IfdefSz("__cplusplus");
- }
- // Wrap ifdef <sz> .. endif around the current selection
- macro IfdefSz(sz)
- {
- hwnd = GetCurrentWnd()
- lnFirst = GetWndSelLnFirst(hwnd)
- lnLast = GetWndSelLnLast(hwnd)
-
- hbuf = GetCurrentBuf()
- InsBufLine(hbuf, lnFirst, "#ifdef @sz@")
- InsBufLine(hbuf, lnLast+2, "#endif /* @sz@ */")
- }
- // Delete the current line and appends it to the clipboard buffer
- macro KillLine()
- {
- hbufCur = GetCurrentBuf();
- lnCur = GetBufLnCur(hbufCur)
- hbufClip = GetBufHandle("Clipboard")
- AppendBufLine(hbufClip, GetBufLine(hbufCur, lnCur))
- DelBufLine(hbufCur, lnCur)
- }
- // Paste lines killed with KillLine (clipboard is emptied)
- macro PasteKillLine()
- {
- Paste
- EmptyBuf(GetBufHandle("Clipboard"))
- }
- // delete all lines in the buffer
- macro EmptyBuf(hbuf)
- {
- lnMax = GetBufLineCount(hbuf)
- while (lnMax > 0)
- {
- DelBufLine(hbuf, 0)
- lnMax = lnMax - 1
- }
- }
- // Ask the user for a symbol name, then jump to its declaration
- macro JumpAnywhere()
- {
- symbol = Ask("What declaration would you like to see?")
- JumpToSymbolDef(symbol)
- }
-
- // list all siblings of a user specified symbol
- // A sibling is any other symbol declared in the same file.
- macro OutputSiblingSymbols()
- {
- symbol = Ask("What symbol would you like to list siblings for?")
- hbuf = ListAllSiblings(symbol)
- SetCurrentBuf(hbuf)
- }
- // Given a symbol name, open the file its declared in and
- // create a new output buffer listing all of the symbols declared
- // in that file. Returns the new buffer handle.
- macro ListAllSiblings(symbol)
- {
- loc = GetSymbolLocation(symbol)
- if (loc == "")
- {
- msg ("@symbol@ not found.")
- stop
- }
-
- hbufOutput = NewBuf("Results")
-
- hbuf = OpenBuf(loc.file)
- if (hbuf == 0)
- {
- msg ("Can't open file.")
- stop
- }
-
- isymMax = GetBufSymCount(hbuf)
- isym = 0;
- while (isym < isymMax)
- {
- AppendBufLine(hbufOutput, GetBufSymName(hbuf, isym))
- isym = isym + 1
- }
- CloseBuf(hbuf)
-
- return hbufOutput
- }