You need to modify lexilla's code, to get the () and [] code folding support for PHP: geany-2.0/scintilla/lexilla/lexers/LexHTML.cxx `case eScriptPHP: if ( (state != SCE_HPHP_COMMENT) && (state != SCE_HPHP_COMMENTLINE) && (state != SCE_HJ_COMMENT) && (state != SCE_HJ_COMMENTLINE) && (state != SCE_HJ_COMMENTDOC) && (!isStringState(state)) ) { if (ch == '#') { Sci_Position j = i + 1; while ((j < lengthDoc) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { j++; } if (styler.Match(j, "region") || styler.Match(j, "if")) { levelCurrent++; } else if (styler.Match(j, "end")) { levelCurrent--; } } // Modify here //else if ((ch == '{') || (ch == '}') || (foldComment && (ch == '/') && (chNext == '*'))) { //levelCurrent += (((ch == '{') || (ch == '/')) ? 1 : -1); //} else if ((ch == '{') || (ch == '}') || (ch == '[') || (ch == ']') || (ch == '(') || (ch == ')') || (foldComment && (ch == '/') && (chNext == '*'))) { levelCurrent += (((ch == '{') || (ch == '[') || (ch == '(') || (ch == '/')) ? 1 : -1); } } else if (((state == SCE_HPHP_COMMENT) || (state == SCE_HJ_COMMENT || state == SCE_HJ_COMMENTDOC)) && foldComment && (ch == '*') && (chNext == '/')) { levelCurrent--; } break;`
So I think you should get a feedback to Scintilla project.