From a3d950b6bcea113fce081c04bdd60fd67d47409d Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 7 Sep 2015 18:57:51 +0200 Subject: [PATCH] Improved fix for #51. Now only replaces stand-alone carriage returns with newlines. --- src/source.cc | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/source.cc b/src/source.cc index c8fa338..92186b9 100644 --- a/src/source.cc +++ b/src/source.cc @@ -405,24 +405,16 @@ void Source::View::replace_all(const std::string &replacement) { void Source::View::paste() { auto text=Gtk::Clipboard::get()->wait_for_text(); - //remove carriage returns (which makes clang return wrong line index) - for(auto it=text.begin();it!=text.end();) { + //replace stand-alone carriage returns (which makes clang return wrong line index) with newlines + for(auto it=text.begin();it!=text.end();it++) { if(*it=='\r') { auto it2=it; it2++; - if(it2!=text.end()) { - if(*it2=='\n') - it=text.erase(it); - else { + if(it2!=text.end() && *it2!='\n') text.replace(it, it2, "\n"); - it++; - } - } else - it=text.erase(it); + text.replace(it, it2, "\n"); } - else - it++; } auto line=get_line_before();