hrev50662 adds 1 changeset to branch 'master'
old head: fe8f306c499859d45006d3684b19ac133ece069f
new head: ecfaa77a23c1f7861f28ba1de7625226d7a7217c
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=ecfaa77a23c1+%5Efe8f306c4998
----------------------------------------------------------------------------
ecfaa77a23c1: Terminal: Implement a few cursor CSI commands.
* Cursor back tab, cursor forward tab.
* Cursor next line, cursor previous line.
* also add size 13 to the list of font sizes.
[ Jérôme Duval <jerome.duval@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev50662
Commit: ecfaa77a23c1f7861f28ba1de7625226d7a7217c
URL: http://cgit.haiku-os.org/haiku/commit/?id=ecfaa77a23c1
Author: Jérôme Duval <jerome.duval@xxxxxxxxx>
Date: Thu Nov 3 15:44:19 2016 UTC
----------------------------------------------------------------------------
6 files changed, 61 insertions(+), 5 deletions(-)
src/apps/terminal/AppearPrefView.cpp | 2 +-
src/apps/terminal/BasicTerminalBuffer.cpp | 21 +++++++++++++++++++
src/apps/terminal/BasicTerminalBuffer.h | 1 +
src/apps/terminal/TermParse.cpp | 30 +++++++++++++++++++++++++++
src/apps/terminal/VTPrsTbl.c | 8 +++----
src/apps/terminal/VTparse.h | 4 ++++
----------------------------------------------------------------------------
diff --git a/src/apps/terminal/AppearPrefView.cpp
b/src/apps/terminal/AppearPrefView.cpp
index ca74a5e..cb4d926 100644
--- a/src/apps/terminal/AppearPrefView.cpp
+++ b/src/apps/terminal/AppearPrefView.cpp
@@ -522,7 +522,7 @@ AppearancePrefView::_MakeFontSizeMenu(const char* label,
uint32 command,
menu->SetLabelFromMarked(false);
int32 sizes[] = {
- 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 0
+ 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24, 28, 32, 36, 0
};
bool found = false;
diff --git a/src/apps/terminal/BasicTerminalBuffer.cpp
b/src/apps/terminal/BasicTerminalBuffer.cpp
index e5f6c9b..7d4dd2a 100644
--- a/src/apps/terminal/BasicTerminalBuffer.cpp
+++ b/src/apps/terminal/BasicTerminalBuffer.cpp
@@ -759,6 +759,27 @@ BasicTerminalBuffer::InsertTab()
void
+BasicTerminalBuffer::InsertCursorBackTab(int32 numTabs)
+{
+ int32 x = fCursor.x - 1;
+
+ fSoftWrappedCursor = false;
+
+ // Find the next tab stop
+ while (numTabs-- > 0)
+ for (; x >=0 && !fTabStops[x]; x--)
+ ;
+ // Ensure x stays within the line bounds
+ x = restrict_value(x, 0, fWidth - 1);
+
+ if (x != fCursor.x) {
+ fCursor.x = x;
+ _CursorChanged();
+ }
+}
+
+
+void
BasicTerminalBuffer::InsertLines(int32 numLines)
{
if (fCursor.y >= fScrollTop && fCursor.y < fScrollBottom) {
diff --git a/src/apps/terminal/BasicTerminalBuffer.h
b/src/apps/terminal/BasicTerminalBuffer.h
index 757984f..eccdef9 100644
--- a/src/apps/terminal/BasicTerminalBuffer.h
+++ b/src/apps/terminal/BasicTerminalBuffer.h
@@ -137,6 +137,7 @@ public:
void InsertLF();
void InsertRI();
void InsertTab();
+ void
InsertCursorBackTab(int32 numTabs);
void SetInsertMode(int flag);
void InsertSpace(int32 num);
void InsertLines(int32
numLines);
diff --git a/src/apps/terminal/TermParse.cpp b/src/apps/terminal/TermParse.cpp
index 25d0a43..5b4188c 100644
--- a/src/apps/terminal/TermParse.cpp
+++ b/src/apps/terminal/TermParse.cpp
@@ -1172,6 +1172,36 @@ TermParse::EscParse()
parsestate = groundtable;
break;
+ case CASE_CBT: // cursor back tab
+ if ((column = param[0]) < 1)
+ column = 1;
+ fBuffer->InsertCursorBackTab(column);
+ parsestate = groundtable;
+ break;
+
+ case CASE_CFT: // cursor forward tab
+ if ((column= param[0]) < 1)
+ column = 1;
+ for (int32 i = 0; i < column; ++i)
+ fBuffer->InsertTab();
+ parsestate = groundtable;
+ break;
+
+ case CASE_CNL: // cursor next line
+ if ((row= param[0]) < 1)
+ row = 1;
+ fBuffer->SetCursorX(0);
+ fBuffer->MoveCursorDown(row);
+ parsestate = groundtable;
+ break;
+
+ case CASE_CPL: // cursor previous line
+ if ((row= param[0]) < 1)
+ row = 1;
+ fBuffer->SetCursorX(0);
+ fBuffer->MoveCursorUp(row);
+ parsestate = groundtable;
+ break;
default:
break;
}
diff --git a/src/apps/terminal/VTPrsTbl.c b/src/apps/terminal/VTPrsTbl.c
index db8d479..0b6260a 100644
--- a/src/apps/terminal/VTPrsTbl.c
+++ b/src/apps/terminal/VTPrsTbl.c
@@ -1083,12 +1083,12 @@ CASE_CUD,
CASE_CUF,
/* D E F G */
CASE_CUB,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
+CASE_CNL,
+CASE_CPL,
CASE_HPA,
/* H I J K */
CASE_CUP,
-CASE_GROUND_STATE,
+CASE_CFT,
CASE_ED,
CASE_EL,
/* L M N O */
@@ -1109,7 +1109,7 @@ CASE_GROUND_STATE,
/* X Y Z [ */
CASE_ECH,
CASE_GROUND_STATE,
-CASE_GROUND_STATE,
+CASE_CBT,
CASE_GROUND_STATE,
/* \ ] ^ _ */
CASE_GROUND_STATE,
diff --git a/src/apps/terminal/VTparse.h b/src/apps/terminal/VTparse.h
index 58d9e8f..b336d31 100644
--- a/src/apps/terminal/VTparse.h
+++ b/src/apps/terminal/VTparse.h
@@ -95,3 +95,7 @@
#define CASE_DECSCUSR_ETC 93
#define CASE_CSI_SP 94
+#define CASE_CBT 95
+#define CASE_CNL 96
+#define CASE_CPL 97
+#define CASE_CFT 98