summaryrefslogtreecommitdiff
path: root/buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'buffer.cpp')
-rw-r--r--buffer.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/buffer.cpp b/buffer.cpp
index e79b4fb..1366862 100644
--- a/buffer.cpp
+++ b/buffer.cpp
@@ -30,10 +30,23 @@ void Buffer::handleCommand(const Command &cmd){
manager->receive({"error","Cannot open file '"+fname+"'"});
return;
}
- tb.read(file);
+ i64 nread=tb.read(file);
cursor.line=0;
cursor.x=0;
screen.clear();
+ manager->receive({"info","Opened, read "+to_string(nread)+" characters"});
+ } else if(cmd[0]=="save_file"){
+ if(filename.size()==0){
+ manager->receive({"save_prompt"});
+ return;
+ }
+ ofstream file(filename);
+ if(!file){
+ manager->receive({"error","Cannot open file '"+filename+"' for writing"});
+ return;
+ }
+ i64 nwritten=tb.write(file);
+ manager->receive({"info","Saved, written "+to_string(nwritten)+" characters"});
} else if(cmd[0]=="insert_char"){
char c=cmd[1][0];
assert(c!='\n');
@@ -455,5 +468,11 @@ void Buffer::show(i64 atx,i64 aty,i64 width,i64 height){
}
string Buffer::getText() const {
- return tb.fullText();
+ if(singleLineMode){
+ string line=tb.fullText();
+ line.pop_back();
+ return line;
+ } else {
+ return tb.fullText();
+ }
}