daily pastebin goal
33%
SHARE
TWEET

Geany Latex Folder

a guest Nov 27th, 2013 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top