From 7612f22fb2b644a3a62e01ebbe4d67270a54cb90 Mon Sep 17 00:00:00 2001 From: ben Date: Sat, 4 Aug 2007 19:16:46 +0000 Subject: [PATCH] "CR implies LF" patch, based on one from Paul Coldrey. git-svn-id: svn://svn.tartarus.org/sgt/putty@7669 cda61777-01e9-0310-a592-d414129be87e --- config.c | 3 +++ doc/config.but | 13 +++++++++++++ putty.h | 1 + settings.c | 2 ++ terminal.c | 7 +++++++ windows/winhelp.h | 1 + 6 files changed, 27 insertions(+) diff --git a/config.c b/config.c index 1fedd284..d5b50dd1 100644 --- a/config.c +++ b/config.c @@ -1310,6 +1310,9 @@ void setup_config_box(struct controlbox *b, int midsession, ctrl_checkbox(s, "Implicit CR in every LF", 'r', HELPCTX(terminal_lfhascr), dlg_stdcheckbox_handler, I(offsetof(Config,lfhascr))); + ctrl_checkbox(s, "Implicit LF in every CR", 'f', + HELPCTX(terminal_crhaslf), + dlg_stdcheckbox_handler, I(offsetof(Config,crhaslf))); ctrl_checkbox(s, "Use background colour to erase screen", 'e', HELPCTX(terminal_bce), dlg_stdcheckbox_handler, I(offsetof(Config,bce))); diff --git a/doc/config.but b/doc/config.but index c573bc0a..ac76be8b 100644 --- a/doc/config.but +++ b/doc/config.but @@ -368,6 +368,19 @@ option, and things might go back to normal: \c Second line \c Third line +\S{config-lfcr} \q{Implicit LF in every CR} + +\cfg{winhelp-topic}{terminal.crhaslf} + +Most servers send two control characters, \i{CR} and \i{LF}, to start a +\i{new line} of the screen. The CR character makes the cursor return to the +left-hand side of the screen. The LF character makes the cursor move +one line down (and might make the screen scroll). + +Some servers only send CR, and so the newly +written line is overwritten by the following line. This option causes +a line feed so that all lines are displayed. + \S{config-erase} \q{Use \i{background colour} to erase screen} \cfg{winhelp-topic}{terminal.bce} diff --git a/putty.h b/putty.h index 30b23bf5..26f4b40e 100644 --- a/putty.h +++ b/putty.h @@ -597,6 +597,7 @@ struct config_tag { FontSpec widefont; FontSpec wideboldfont; int shadowboldoffset; + int crhaslf; }; /* diff --git a/settings.c b/settings.c index 44b02cba..09666f4e 100644 --- a/settings.c +++ b/settings.c @@ -388,6 +388,7 @@ void save_open_settings(void *sesskey, Config *cfg) write_setting_i(sesskey, "DECOriginMode", cfg->dec_om); write_setting_i(sesskey, "AutoWrapMode", cfg->wrap_mode); write_setting_i(sesskey, "LFImpliesCR", cfg->lfhascr); + write_setting_i(sesskey, "CRImpliesLF", cfg->crhaslf); write_setting_i(sesskey, "DisableArabicShaping", cfg->arabicshaping); write_setting_i(sesskey, "DisableBidi", cfg->bidi); write_setting_i(sesskey, "WinNameAlways", cfg->win_name_always); @@ -681,6 +682,7 @@ void load_open_settings(void *sesskey, Config *cfg) gppi(sesskey, "DECOriginMode", 0, &cfg->dec_om); gppi(sesskey, "AutoWrapMode", 1, &cfg->wrap_mode); gppi(sesskey, "LFImpliesCR", 0, &cfg->lfhascr); + gppi(sesskey, "CRImpliesLF", 0, &cfg->crhaslf); gppi(sesskey, "DisableArabicShaping", 0, &cfg->arabicshaping); gppi(sesskey, "DisableBidi", 0, &cfg->bidi); gppi(sesskey, "WinNameAlways", 1, &cfg->win_name_always); diff --git a/terminal.c b/terminal.c index f58941fa..def573c8 100644 --- a/terminal.c +++ b/terminal.c @@ -2850,6 +2850,13 @@ static void term_out(Terminal *term) term->wrapnext = FALSE; seen_disp_event(term); term->paste_hold = 0; + + if (term->cfg.crhaslf) { + if (term->curs.y == term->marg_b) + scroll(term, term->marg_t, term->marg_b, 1, TRUE); + else if (term->curs.y < term->rows - 1) + term->curs.y++; + } if (term->logctx) logtraffic(term->logctx, (unsigned char) c, LGTYP_ASCII); break; diff --git a/windows/winhelp.h b/windows/winhelp.h index 5d63e5e5..ce7881c7 100644 --- a/windows/winhelp.h +++ b/windows/winhelp.h @@ -42,6 +42,7 @@ #define WINHELP_CTX_terminal_autowrap "terminal.autowrap:config-autowrap" #define WINHELP_CTX_terminal_decom "terminal.decom:config-decom" #define WINHELP_CTX_terminal_lfhascr "terminal.lfhascr:config-crlf" +#define WINHELP_CTX_terminal_crhaslf "terminal.crhaslf:config-lfcr" #define WINHELP_CTX_terminal_bce "terminal.bce:config-erase" #define WINHELP_CTX_terminal_blink "terminal.blink:config-blink" #define WINHELP_CTX_terminal_answerback "terminal.answerback:config-answerback" -- 2.11.0