⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexnsis.cxx

📁 robocup rcssserver 运行防真机器人足球比赛所用的服务器端
💻 CXX
📖 第 1 页 / 共 2 页
字号:
				if( cCurrChar == '$' || isNsisChar(cCurrChar) || cCurrChar == '!' )				{					styler.ColourTo(i-1,state);				  state = SCE_NSIS_FUNCTION;          // If it is a number, we must check and set style here first...          if( isNsisNumber(cCurrChar) && (cNextChar == '\t' || cNextChar == ' ' || cNextChar == '\r' || cNextChar == '\n' ) )              styler.ColourTo( i, SCE_NSIS_NUMBER);					break;				}        if( cCurrChar == '/' && cNextChar == '*' )        {          styler.ColourTo(i-1,state);          state = SCE_NSIS_COMMENTBOX;          break;        }				break;			case SCE_NSIS_COMMENT:				if( cNextChar == '\n' || cNextChar == '\r' )        {          // Special case:          if( cCurrChar == '\\' )          {            styler.ColourTo(i-2,state);            styler.ColourTo(i,SCE_NSIS_DEFAULT);          }          else          {				    styler.ColourTo(i,state);            state = SCE_NSIS_DEFAULT;          }        }				break;			case SCE_NSIS_STRINGDQ:      case SCE_NSIS_STRINGLQ:      case SCE_NSIS_STRINGRQ:        if( styler.SafeGetCharAt(i-1) == '\\' && styler.SafeGetCharAt(i-2) == '$' )          break; // Ignore the next character, even if it is a quote of some sort        if( cCurrChar == '"' && state == SCE_NSIS_STRINGDQ )				{					styler.ColourTo(i,state);				  state = SCE_NSIS_DEFAULT;          break;				}        if( cCurrChar == '`' && state == SCE_NSIS_STRINGLQ )        {					styler.ColourTo(i,state);				  state = SCE_NSIS_DEFAULT;          break;				}        if( cCurrChar == '\'' && state == SCE_NSIS_STRINGRQ )				{					styler.ColourTo(i,state);				  state = SCE_NSIS_DEFAULT;          break;				}        if( cNextChar == '\r' || cNextChar == '\n' )        {          int nCurLine = styler.GetLine(i+1);          int nBack = i;          // We need to check if the previous line has a \ in it...          bool bNextLine = false;          while( nBack > 0 )          {            if( styler.GetLine(nBack) != nCurLine )              break;            char cTemp = styler.SafeGetCharAt(nBack, 'a'); // Letter 'a' is safe here            if( cTemp == '\\' )            {              bNextLine = true;              break;            }            if( cTemp != '\r' && cTemp != '\n' && cTemp != '\t' && cTemp != ' ' )              break;            nBack--;          }          if( bNextLine )          {            styler.ColourTo(i+1,state);          }          if( bNextLine == false )          {            styler.ColourTo(i,state);				    state = SCE_NSIS_DEFAULT;          }        }				break;			case SCE_NSIS_FUNCTION:				// NSIS KeyWord:        if( cCurrChar == '$' )          state = SCE_NSIS_DEFAULT;        else if( cCurrChar == '\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' ) )          state = SCE_NSIS_DEFAULT;				else if( (isNsisChar(cCurrChar) && !isNsisChar( cNextChar) && cNextChar != '}') || cCurrChar == '}' )				{					state = classifyWordNsis( styler.GetStartSegment(), i, keywordLists, styler );					styler.ColourTo( i, state);					state = SCE_NSIS_DEFAULT;				}				else if( !isNsisChar( cCurrChar ) && cCurrChar != '{' && cCurrChar != '}' )				{          if( classifyWordNsis( styler.GetStartSegment(), i-1, keywordLists, styler) == SCE_NSIS_NUMBER )             styler.ColourTo( i-1, SCE_NSIS_NUMBER );					state = SCE_NSIS_DEFAULT;					if( cCurrChar == '"' )					{						state = SCE_NSIS_STRINGDQ;						bVarInString = false;            bClassicVarInString = false;					}					else if( cCurrChar == '`' )					{						state = SCE_NSIS_STRINGLQ;						bVarInString = false;            bClassicVarInString = false;					}					else if( cCurrChar == '\'' )					{						state = SCE_NSIS_STRINGRQ;						bVarInString = false;            bClassicVarInString = false;					}					else if( cCurrChar == '#' || cCurrChar == ';' )          {						state = SCE_NSIS_COMMENT;          }				}				break;      case SCE_NSIS_COMMENTBOX:        if( styler.SafeGetCharAt(i-1) == '*' && cCurrChar == '/' )        {          styler.ColourTo(i,state);          state = SCE_NSIS_DEFAULT;        }        break;		}		if( state == SCE_NSIS_COMMENT || state == SCE_NSIS_COMMENTBOX )		{			styler.ColourTo(i,state);		}		else if( state == SCE_NSIS_STRINGDQ || state == SCE_NSIS_STRINGLQ || state == SCE_NSIS_STRINGRQ )		{      bool bIngoreNextDollarSign = false;      bool bUserVars = false;      if( styler.GetPropertyInt("nsis.uservars") == 1 )        bUserVars = true;      if( bVarInString && cCurrChar == '$' )      {        bVarInString = false;        bIngoreNextDollarSign = true;      }      else if( bVarInString && cCurrChar == '\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' || cNextChar == '"' || cNextChar == '`' || cNextChar == '\'' ) )      {        styler.ColourTo( i+1, SCE_NSIS_STRINGVAR);        bVarInString = false;        bIngoreNextDollarSign = false;      }      // Covers "$INSTDIR and user vars like $MYVAR"      else if( bVarInString && !isNsisChar(cNextChar) )      {        int nWordState = classifyWordNsis( styler.GetStartSegment(), i, keywordLists, styler);				if( nWordState == SCE_NSIS_VARIABLE )					styler.ColourTo( i, SCE_NSIS_STRINGVAR);        else if( bUserVars )          styler.ColourTo( i, SCE_NSIS_STRINGVAR);        bVarInString = false;      }      // Covers "${TEST}..."      else if( bClassicVarInString && cNextChar == '}' )      {        styler.ColourTo( i+1, SCE_NSIS_STRINGVAR);				bClassicVarInString = false;      }      // Start of var in string			if( !bIngoreNextDollarSign && cCurrChar == '$' && cNextChar == '{' )			{				styler.ColourTo( i-1, state);				bClassicVarInString = true;        bVarInString = false;			}      else if( !bIngoreNextDollarSign && cCurrChar == '$' )      {        styler.ColourTo( i-1, state);        bVarInString = true;        bClassicVarInString = false;      }		}	}  // Colourise remaining document	styler.ColourTo(nLengthDoc-1,state);}static void FoldNsisDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler){	// No folding enabled, no reason to continue...	if( styler.GetPropertyInt("fold") == 0 )		return;  bool foldAtElse = styler.GetPropertyInt("fold.at.else", 0) == 1;  bool foldUtilityCmd = styler.GetPropertyInt("nsis.foldutilcmd", 1) == 1;  bool blockComment = false;  int lineCurrent = styler.GetLine(startPos);  unsigned int safeStartPos = styler.LineStart( lineCurrent );  bool bArg1 = true;  int nWordStart = -1;  int levelCurrent = SC_FOLDLEVELBASE;	if (lineCurrent > 0)		levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;	int levelNext = levelCurrent;  int style = styler.StyleAt(safeStartPos);  if( style == SCE_NSIS_COMMENTBOX )  {    if( styler.SafeGetCharAt(safeStartPos) == '/' && styler.SafeGetCharAt(safeStartPos+1) == '*' )      levelNext++;    blockComment = true;  }  for (unsigned int i = safeStartPos; i < startPos + length; i++)	{    char chCurr = styler.SafeGetCharAt(i);    style = styler.StyleAt(i);    if( blockComment && style != SCE_NSIS_COMMENTBOX )    {      levelNext--;      blockComment = false;    }    else if( !blockComment && style == SCE_NSIS_COMMENTBOX )    {      levelNext++;      blockComment = true;    }    if( bArg1 && !blockComment)    {      if( nWordStart == -1 && (isNsisLetter(chCurr) || chCurr == '!') )      {        nWordStart = i;      }      else if( isNsisLetter(chCurr) == false && nWordStart > -1 )      {        int newLevel = calculateFoldNsis( nWordStart, i-1, levelNext, styler, foldAtElse, foldUtilityCmd );        if( newLevel == levelNext )        {          if( foldAtElse && foldUtilityCmd )          {            if( NsisNextLineHasElse(i, startPos + length, styler) )              levelNext--;          }        }        else          levelNext = newLevel;        bArg1 = false;      }    }    if( chCurr == '\n' )    {      if( bArg1 && foldAtElse && foldUtilityCmd && !blockComment )      {        if( NsisNextLineHasElse(i, startPos + length, styler) )          levelNext--;      }      // If we are on a new line...      int levelUse = levelCurrent;			int lev = levelUse | levelNext << 16;      if (levelUse < levelNext )				lev |= SC_FOLDLEVELHEADERFLAG;			if (lev != styler.LevelAt(lineCurrent))				styler.SetLevel(lineCurrent, lev);			lineCurrent++;			levelCurrent = levelNext;      bArg1 = true; // New line, lets look at first argument again      nWordStart = -1;    }  }	int levelUse = levelCurrent;	int lev = levelUse | levelNext << 16;	if (levelUse < levelNext)		lev |= SC_FOLDLEVELHEADERFLAG;	if (lev != styler.LevelAt(lineCurrent))		styler.SetLevel(lineCurrent, lev);}static const char * const nsisWordLists[] = {	"Functions",	"Variables",	"Lables",	"UserDefined",	0, };LexerModule lmNsis(SCLEX_NSIS, ColouriseNsisDoc, "nsis", FoldNsisDoc, nsisWordLists);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -