summaryrefslogtreecommitdiff
path: root/buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'buffer.cpp')
-rw-r--r--buffer.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/buffer.cpp b/buffer.cpp
index 1366862..b185b99 100644
--- a/buffer.cpp
+++ b/buffer.cpp
@@ -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;
+}