diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-01-12 21:13:44 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-01-12 22:09:47 +0100 |
commit | 790a796de93c6f9868ce78f4aea9262461e2b8c9 (patch) | |
tree | 86baf48ec97c513a68746d66a5ba35059bc877c5 /buffer.cpp | |
parent | 2275e9ab7cb53dbb40887028544e80dd39597402 (diff) |
Buffer dirty marking
Diffstat (limited to 'buffer.cpp')
-rw-r--r-- | buffer.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -34,6 +34,7 @@ void Buffer::handleCommand(const Command &cmd){ cursor.line=0; cursor.x=0; screen.clear(); + dirty=false; manager->receive({"info","Opened, read "+to_string(nread)+" characters"}); } else if(cmd[0]=="save_file"){ if(filename.size()==0){ @@ -46,11 +47,13 @@ void Buffer::handleCommand(const Command &cmd){ return; } i64 nwritten=tb.write(file); + dirty=false; manager->receive({"info","Saved, written "+to_string(nwritten)+" characters"}); } else if(cmd[0]=="insert_char"){ char c=cmd[1][0]; assert(c!='\n'); tb.insert(cursor.line,cursor.x,cmd[1][0]); + dirty=true; cursor.x++; relayoutScreen(); if(findCursorInScreen().x==-1){ @@ -59,6 +62,7 @@ void Buffer::handleCommand(const Command &cmd){ } } else if(cmd[0]=="insert_newline"){ tb.insert(cursor.line,cursor.x,'\n'); + dirty=true; cursor.x=0; cursor.line++; relayoutScreen(); @@ -79,6 +83,7 @@ void Buffer::handleCommand(const Command &cmd){ cursor.x=tb.lineLen(cursor.line); tb.erase(cursor.line,cursor.x); } + dirty=true; relayoutScreen(); if(findCursorInScreen().x==-1){ scrollUp(); @@ -91,6 +96,7 @@ void Buffer::handleCommand(const Command &cmd){ return; } tb.erase(cursor.line,cursor.x); + dirty=true; relayoutScreen(); } else if(cmd[0]=="move_forward"){ if(cursor.line==tb.numLines()-1&&cursor.x==tb.lineLen(cursor.line)){ @@ -476,3 +482,7 @@ string Buffer::getText() const { return tb.fullText(); } } + +bool Buffer::isDirty() const { + return dirty; +} |