From c310c7d875c8aa871180de130e820ed19a2489f5 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 12 Dec 2014 16:39:46 +0100 Subject: implemented automatic EOL translation support * activated via bit 4 of the ED flag (enabled by default) * automatic EOL guessing on file loading and translation to LFs. * works with files that have inconsistent EOL sequences. * automatic translation to original EOL sequences on file saving * works with inconsistent EOL sequences in the buffer. This should usually not happen if the file was read in with automatic EOL translation enabled. * also works with the EC and EG commands * performance is OK, depending on the file being translated. When reading files with UNIX EOLs, the overhead is minimal typically-sized files. For DOS EOLs the overhead is larger but still acceptable. * Return (line feed) is now an immediate editing command. This centralizes EOL sequence insertion. Later, other features like auto-indent could be added to the editing command. * get_eol() has been moved to main.cpp (now called get_eol_seq() * Warn if file ownership could not be preserved when saving files. * IOView has been almost completely rewritten based on GIOChannels. The EOL translation code is also in IOView. --- src/cmdline.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'src/cmdline.cpp') diff --git a/src/cmdline.cpp b/src/cmdline.cpp index 84d09c3..e7ce066 100644 --- a/src/cmdline.cpp +++ b/src/cmdline.cpp @@ -258,6 +258,15 @@ void Cmdline::process_edit_cmd(gchar key) { switch (key) { + case '\n': /* insert EOL sequence */ + interface.popup_clear(); + + if (Flags::ed & Flags::ED_AUTOEOL) + insert("\n"); + else + insert(get_eol_seq(interface.ssm(SCI_GETEOLMODE))); + break; + case CTL_KEY('G'): /* toggle immediate editing modifier */ interface.popup_clear(); @@ -507,20 +516,6 @@ Cmdline::fnmacro(const gchar *name) } } -const gchar * -get_eol(void) -{ - switch (interface.ssm(SCI_GETEOLMODE)) { - case SC_EOL_CR: - return "\r"; - case SC_EOL_CRLF: - return "\r\n"; - case SC_EOL_LF: - default: - return "\n"; - } -} - static gchar * filename_complete(const gchar *filename, gchar completed) { -- cgit v1.2.3