diff options
Diffstat (limited to 'buffer.cpp')
-rw-r--r-- | buffer.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -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(); + } } |