CVS: setedit/mainsrc ceditor.cc,1.98,1.99 deedidia.cc,1.14,1.15
Brought to you by:
set
From: Salvador E. T. <se...@us...> - 2003-10-20 20:39:50
|
Update of /cvsroot/setedit/setedit/mainsrc In directory sc8-pr-cvs1:/tmp/cvs-serv25206/mainsrc Modified Files: ceditor.cc deedidia.cc Log Message: * Modified: "Do not purge spaces" option to be "Keep trailing whitespace" that's more descriptive. Suggested by Oswald. * Fixed: No match pair after deleting some text and the cursor goes to a symbol. Reported by Oswald. * Modified: To lock the screen while doing a search & replace operation to avoid "flashing" when doing a lot of S&R operations. Suggested by Oswald. * Fixed: Wrong match pair when the cursor was in the middle of a tab and the next character matched a pair (highlight in the middle of the tab). Reported by Oswald. * Fixed: Undo error when a character replaced a tab (overwrite enabled) and the cursor was inside the tab (not at the beggining). Reported by Oswald. * Added: History to the "arbitrary indent" and "run command" input lines. Suggested by Oswald. Index: ceditor.cc =================================================================== RCS file: /cvsroot/setedit/setedit/mainsrc/ceditor.cc,v retrieving revision 1.98 retrieving revision 1.99 diff -C2 -d -r1.98 -r1.99 *** ceditor.cc 16 Oct 2003 19:42:48 -0000 1.98 --- ceditor.cc 20 Oct 2003 15:31:17 -0000 1.99 *************** *** 766,770 **** int i; int oldPromptOnReplace=editorFlags & efPromptOnReplace; ! Boolean ret=False; do { --- 766,772 ---- int i; int oldPromptOnReplace=editorFlags & efPromptOnReplace; ! Boolean ret=False, needsUnlock=True; ! ! lock(); do { *************** *** 772,775 **** --- 774,779 ---- if (!search(findStr,editorFlags)) { + needsUnlock=False; + unlock(); if (!(editorFlags & efNoFindFailMsg) && (editorFlags & (efReplaceAll | efDoReplace))!=(efReplaceAll | efDoReplace)) *************** *** 785,789 **** --- 789,795 ---- { TPoint c=makeGlobal(cursor); + unlock(); i=editorDialog(edReplacePrompt,&c); + lock(); } if (i==cmOK) *************** *** 794,798 **** if (i==cmYes) { - lock(); lockUndo(); int mustDelete; --- 800,803 ---- *************** *** 810,814 **** StartOfSearch=selStartF+l; unlockUndo(); - unlock(); ret=True; } --- 815,818 ---- *************** *** 822,825 **** --- 826,831 ---- while(i!=cmCancel && (editorFlags & efReplaceAll)!=0); + if (needsUnlock) + unlock(); // Restore it in case the ALL changed the value editorFlags|=oldPromptOnReplace; *************** *** 2468,2471 **** --- 2474,2478 ---- if (isReadOnly) break; + showMatchPairFlyCache=NULL; if (!PersistentBlocks && hasSelection()) { *************** *** 3885,3894 **** { static int oldX,oldY; - static TCEditor *old; ! // Don't do it again ! if (/*IsHLCOn && */old==this && curPos.x==oldX && curPos.y==oldY) return False; ! old=this; oldX=curPos.x; oldY=curPos.y; --- 3892,3900 ---- { static int oldX,oldY; ! // Don't do it again /*IsHLCOn && */ ! if (showMatchPairFlyCache==this && curPos.x==oldX && curPos.y==oldY) return False; ! showMatchPairFlyCache=this; oldX=curPos.x; oldY=curPos.y; *************** *** 3904,3909 **** wasInEdition=1; } ! int Pos; ! char *s=ColToPointer(); switch (*s) { // Note: s+1 because the routines are designed assuming the cursor is passing the char --- 3910,3918 ---- wasInEdition=1; } ! int Pos, dif; ! char *s=ColToPointer(dif); ! // Outside the line or inside a tab ! if (dif) ! return False; switch (*s) { // Note: s+1 because the routines are designed assuming the cursor is passing the char *************** *** 5645,5649 **** return; // Tab in indent mode ! if (cVal=='\t' && !UseTabs) { int X; --- 5654,5659 ---- return; // Tab in indent mode ! // Note: If we are in undo mode (!allowUndo) tabs are realtabs ! if (cVal=='\t' && !UseTabs && allowUndo) { int X; *************** *** 5686,5695 **** if (overwrite) { if (allowUndo) { - char vals[2]; vals[0]=cVal; vals[1]=*inEditPtr; ! addToUndo(undoOvrPutChar,(void *)&vals[0]); } --- 5696,5706 ---- if (overwrite) { + char vals[2]; if (allowUndo) { vals[0]=cVal; vals[1]=*inEditPtr; ! // Don't add to the undo yet, we could need a move ! lockUndo(); } *************** *** 5697,5701 **** --- 5708,5716 ---- { if (*inEditPtr=='\t') // Is over a Tab? + { + if (allowUndo) + addToUndo(undoInMov); curPos.x=LineWidth(bufEdit,inEditPtr); + } *inEditPtr++=cVal; restCharsInLine--; // Why?!, if we advance a char we have one less in the line *************** *** 5709,5712 **** --- 5724,5732 ---- *inEditPtr=0; } + if (allowUndo) + { + addToUndo(undoOvrPutChar,(void *)&vals[0]); + unlockUndo(); + } } else *************** *** 7254,7257 **** --- 7274,7278 ---- return; CacheSyntaxHLData(GenericSHL); + showMatchPairFlyCache=NULL; // Fix to pointer if that's outside the buffer *************** *** 12178,12182 **** switch (st) // Grouped things { ! case undoInMov: // The cursor mov is grouped return; // The chars inserted one by one are stored in one cell --- 12199,12203 ---- switch (st) // Grouped things { ! case undoInMov: // The cursor movement is grouped return; // The chars inserted one by one are stored in one cell *************** *** 13556,13559 **** --- 13577,13581 ---- int TCEditor::DontPurge=0; int TCEditor::DontLoadFile=0; + TCEditor *TCEditor::showMatchPairFlyCache=NULL; TSubMenu *TCEditor::RightClickMenu=0; TPMCollection *TCEditor::PMColl=NULL; Index: deedidia.cc =================================================================== RCS file: /cvsroot/setedit/setedit/mainsrc/deedidia.cc,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** deedidia.cc 12 May 2003 13:43:37 -0000 1.14 --- deedidia.cc 20 Oct 2003 15:31:17 -0000 1.15 *************** *** 255,259 **** __("S~e~e tabs"),__("Don't move inside ta~b~s"), __("Tab ~s~mart indents"),__("Use in~d~ent size"), ! __("Don't pur~g~e spaces"),__("Backspace unindents ~2~"), __("Column markers ~4~"),0); --- 255,259 ---- __("S~e~e tabs"),__("Don't move inside ta~b~s"), __("Tab ~s~mart indents"),__("Use in~d~ent size"), ! __("Keep trailin~g~ whitespace"),__("Backspace unindents ~2~"), __("Column markers ~4~"),0); *************** *** 400,404 **** TSViewCol *col=new TSViewCol(__("Arbitrary indent")); ! TSLabel *label=new TSLabel(__("Indentation text"),new TSInputLinePiped(len,GetDeskTopCols()-20)); col->insert(xTSCenter,yTSUp,label); EasyInsertOKCancel(col); --- 400,405 ---- TSViewCol *col=new TSViewCol(__("Arbitrary indent")); ! TSLabel *label=new TSLabel(__("Indentation text"), ! new TSInputLinePiped(len,1,hID_ArbitraryIndent,GetDeskTopCols()-20)); col->insert(xTSCenter,yTSUp,label); EasyInsertOKCancel(col); |