Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void FoldLatexDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
- unsigned int endPos = startPos + length;
- int curLine = styler.GetLine(startPos);
- int curLevel = curLine > 0 ? styler.LevelAt(styler.GetLine(startPos-0)) : SC_FOLDLEVELBASE;
- int nextLevel = curLevel;
- char chNext;
- bool verbose = false;
- if(verbose) printf("entered function, set curLevel to %d\n", curLevel);
- for (unsigned int i = startPos; i < endPos; i++) {
- curLine = styler.GetLine(i);
- char ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- if ((ch == '%') && (chNext == '%')) {
- if(verbose) printf("pattern match! \tcurLine: %d, startPos: %d, i: %d curLevel:%d\n", curLine, startPos, i, curLevel);
- char chNext2 = styler.SafeGetCharAt(i + 2);
- if (chNext2 == '{') {
- nextLevel++;
- if(verbose) printf("\tline %d, level up to %d \n", curLine, nextLevel);
- } else if (chNext2 == '}') {
- nextLevel--;
- if(verbose) printf("\tline %d, level down to %d\n", curLine, nextLevel);
- }
- }
- bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
- if(atEOL){
- if(nextLevel!=styler.LevelAt(curLine) || curLevel!=nextLevel){
- if(verbose) printf("setting level on line %d from %d to %d (curLevel: %d)\n", curLine, styler.LevelAt(curLine), nextLevel, curLevel);
- if(nextLevel>curLevel){
- if(verbose) printf("\tthis is the header!! setting to %d\n",curLevel | SC_FOLDLEVELHEADERFLAG);
- styler.SetLevel(curLine, curLevel | SC_FOLDLEVELHEADERFLAG);
- }
- else if(nextLevel<curLevel){
- if(verbose) printf("\t this is the end of the fold, setting to %d\n", curLevel);
- styler.SetLevel(curLine, curLevel);
- }
- else{
- styler.SetLevel(curLine, nextLevel);
- }
- curLevel=nextLevel;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement