Advertisement
Guest User

Geany Latex Folder

a guest
Nov 27th, 2013
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.78 KB | None | 0 0
  1. static void FoldLatexDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
  2.  
  3.     unsigned int endPos = startPos + length;
  4.     int curLine = styler.GetLine(startPos);
  5.     int curLevel = curLine > 0 ? styler.LevelAt(styler.GetLine(startPos-0)) : SC_FOLDLEVELBASE;
  6.     int nextLevel = curLevel;
  7.     char chNext;
  8.  
  9.     bool verbose = false;
  10.  
  11.     if(verbose) printf("entered function, set curLevel to %d\n", curLevel);
  12.  
  13.     for (unsigned int i = startPos; i < endPos; i++) {
  14.  
  15.         curLine = styler.GetLine(i);
  16.  
  17.         char ch = chNext;
  18.         chNext = styler.SafeGetCharAt(i + 1);
  19.  
  20.         if ((ch == '%') && (chNext == '%')) {
  21.             if(verbose) printf("pattern match! \tcurLine: %d, startPos: %d, i: %d curLevel:%d\n", curLine, startPos, i, curLevel);
  22.             char chNext2 = styler.SafeGetCharAt(i + 2);
  23.             if (chNext2 == '{') {
  24.                 nextLevel++;
  25.                 if(verbose) printf("\tline %d, level up to %d \n", curLine, nextLevel);
  26.             } else if (chNext2 == '}') {
  27.                 nextLevel--;
  28.                 if(verbose) printf("\tline %d, level down to %d\n", curLine, nextLevel);
  29.             }
  30.         }
  31.  
  32.         bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
  33.         if(atEOL){
  34.             if(nextLevel!=styler.LevelAt(curLine) || curLevel!=nextLevel){
  35.                 if(verbose) printf("setting level on line %d from %d to %d (curLevel: %d)\n", curLine, styler.LevelAt(curLine), nextLevel, curLevel);
  36.  
  37.                 if(nextLevel>curLevel){
  38.                     if(verbose) printf("\tthis is the header!! setting to %d\n",curLevel | SC_FOLDLEVELHEADERFLAG);
  39.                     styler.SetLevel(curLine, curLevel | SC_FOLDLEVELHEADERFLAG);
  40.                 }
  41.                 else if(nextLevel<curLevel){
  42.                     if(verbose) printf("\t this is the end of the fold, setting to %d\n", curLevel);
  43.                     styler.SetLevel(curLine, curLevel);
  44.                 }
  45.                 else{
  46.                     styler.SetLevel(curLine, nextLevel);
  47.                 }
  48.  
  49.                 curLevel=nextLevel;
  50.             }
  51.  
  52.  
  53.         }
  54.     }
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement