summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-01-09 14:26:55 +0100
committertomsmeding <tom.smeding@gmail.com>2017-01-09 14:27:01 +0100
commitc772fd46fb1902807b5908245c80492078706477 (patch)
treef933f15862514f8e28ed9c3fa9db02fa93d13412
parentdb38a3bad5d0ce24caea0e647481f14d369d737d (diff)
Fix tab display and entry
-rw-r--r--buffer.cpp11
-rw-r--r--config.cpp3
2 files changed, 11 insertions, 3 deletions
diff --git a/buffer.cpp b/buffer.cpp
index cc93e00..f077bbb 100644
--- a/buffer.cpp
+++ b/buffer.cpp
@@ -86,7 +86,14 @@ vector<Buffer::ScreenLine> Buffer::layoutLine(const string &line,i64 linenum,i64
i64 linepart=0,fromx=0;
for(i64 i=0;i<(i64)line.size();i++){
char c=line[i];
- string repr=showChar(c);
+ string repr;
+ bool special=false;
+ if(c=='\t'){
+ repr=string(4-cur.size()%4,' ');
+ } else {
+ repr=showChar(c);
+ special=repr.size()>1;
+ }
assert(repr.size()>0);
if(x+(i64)repr.size()>=width){
layout.push_back({linenum,linepart,fromx,move(cur)});
@@ -95,7 +102,7 @@ vector<Buffer::ScreenLine> Buffer::layoutLine(const string &line,i64 linenum,i64
fromx=i;
x=0;
}
- Cell cell={'\0',repr.size()!=1,i};
+ Cell cell={'\0',special,i};
for(char rc : repr){
cell.c=rc;
cur.push_back(cell);
diff --git a/config.cpp b/config.cpp
index 4fe5de9..4d59f55 100644
--- a/config.cpp
+++ b/config.cpp
@@ -8,9 +8,10 @@ using namespace std;
Keybindings global_keybindings={
{KEY_CTRL+'Q',{"quit_app"}},
- {'\n',{"insert_newline"}},
{KEY_BACKSPACE,{"delete_backward"}},
{KEY_DELETE,{"delete_forward"}},
+ {'\n',{"insert_newline"}},
+ {'\t',{"insert_char","\t"}},
};
class Init{public: Init(){