Add support CBT and CHT (backward tab and forward tab)

svn path=/trunk/kdebase/konsole/; revision=174983
wilder-portage
Waldo Bastian 24 years ago
parent 2acb79c40c
commit 1d738cd9c5
  1. 20
      konsole/TEScreen.cpp
  2. 3
      konsole/TEScreen.h
  3. 16
      konsole/TEmuVt102.cpp

@ -650,10 +650,26 @@ void TEScreen::BackSpace()
/*!
*/
void TEScreen::Tabulate()
void TEScreen::Tabulate(int n)
{
// note that TAB is a format effector (does not write ' ');
cursorRight(1); while(cuX < columns-1 && !tabstops[cuX]) cursorRight(1);
if (n == 0) n = 1;
while((n > 0) && (cuX < columns-1))
{
cursorRight(1); while((cuX < columns-1) && !tabstops[cuX]) cursorRight(1);
n--;
}
}
void TEScreen::backTabulate(int n)
{
// note that TAB is a format effector (does not write ' ');
if (n == 0) n = 1;
while((n > 0) && (cuX > 0))
{
cursorLeft(1); while((cuX > 0) && !tabstops[cuX]) cursorLeft(1);
n--;
}
}
void TEScreen::clearTabStops()

@ -65,7 +65,8 @@ public: // these are all `Screen' operations
//
void Return ();
void BackSpace ();
void Tabulate ();
void Tabulate (int n = 1);
void backTabulate(int n);
//
// Editing
//

@ -257,13 +257,13 @@ void TEmuVt102::pushToToken(int cc)
void TEmuVt102::initTokenizer()
{ int i; UINT8* s;
for(i = 0; i < 256; i++) tbl[ i] = 0;
for(i = 0; i < 32; i++) tbl[ i] |= CTL;
for(i = 32; i < 256; i++) tbl[ i] |= CHR;
for(s = (UINT8*)"@ABCDGHLMPXcdfry"; *s; s++) tbl[*s] |= CPN;
for(s = (UINT8*)"0123456789" ; *s; s++) tbl[*s] |= DIG;
for(s = (UINT8*)"()+*%" ; *s; s++) tbl[*s] |= SCS;
for(s = (UINT8*)"()+*#[]%" ; *s; s++) tbl[*s] |= GRP;
for(i = 0; i < 256; i++) tbl[ i] = 0;
for(i = 0; i < 32; i++) tbl[ i] |= CTL;
for(i = 32; i < 256; i++) tbl[ i] |= CHR;
for(s = (UINT8*)"@ABCDGHILMPXZcdfry"; *s; s++) tbl[*s] |= CPN;
for(s = (UINT8*)"0123456789" ; *s; s++) tbl[*s] |= DIG;
for(s = (UINT8*)"()+*%" ; *s; s++) tbl[*s] |= SCS;
for(s = (UINT8*)"()+*#[]%" ; *s; s++) tbl[*s] |= GRP;
resetToken();
}
@ -559,10 +559,12 @@ void TEmuVt102::tau( int token, int p, int q )
case TY_CSI_PN('D' ) : scr->cursorLeft (p ); break; //VT100
case TY_CSI_PN('G' ) : scr->setCursorX (p ); break; //LINUX
case TY_CSI_PN('H' ) : scr->setCursorYX (p, q); break; //VT100
case TY_CSI_PN('I' ) : scr->Tabulate (p ); break;
case TY_CSI_PN('L' ) : scr->insertLines (p ); break;
case TY_CSI_PN('M' ) : scr->deleteLines (p ); break;
case TY_CSI_PN('P' ) : scr->deleteChars (p ); break;
case TY_CSI_PN('X' ) : scr->eraseChars (p ); break;
case TY_CSI_PN('Z' ) : scr->backTabulate (p ); break;
case TY_CSI_PN('c' ) : reportTerminalType ( ); break; //VT100
case TY_CSI_PN('d' ) : scr->setCursorY (p ); break; //LINUX
case TY_CSI_PN('f' ) : scr->setCursorYX (p, q); break; //VT100

Loading…
Cancel
Save