diff options
author | Anders Kaseorg <andersk@mit.edu> | 2013-01-27 20:38:30 -0500 |
---|---|---|
committer | Keith Winstein <keithw@mit.edu> | 2013-03-10 15:46:39 -0400 |
commit | ed42d31bda8b6d1e111142640728e34ec4f2309f (patch) | |
tree | be7b1f405dbd29dca76abeb746698e315af1b61c | |
parent | 2ae960f7f0ec5b620915ee788da71516a6290ba2 (diff) |
Put the real terminal in alternate screen mode
Closes #2
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
-rw-r--r-- | src/terminal/terminaldisplay.cc | 4 | ||||
-rw-r--r-- | src/terminal/terminaldisplay.h | 2 | ||||
-rw-r--r-- | src/terminal/terminaldisplayinit.cc | 5 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/terminal/terminaldisplay.cc b/src/terminal/terminaldisplay.cc index e801b8c..3df7491 100644 --- a/src/terminal/terminaldisplay.cc +++ b/src/terminal/terminaldisplay.cc @@ -46,12 +46,12 @@ static const Renditions & initial_rendition( void ) std::string Display::open() const { - return std::string( "\033[?1h" ); + return std::string( smcup ? smcup : "" ) + std::string( "\033[?1h" ); } std::string Display::close() const { - return std::string( "\033[?1l\033[0m\033[?25h" ); + return std::string( "\033[?1l\033[0m\033[?25h" ) + std::string( rmcup ? rmcup : "" ); } std::string Display::new_frame( bool initialized, const Framebuffer &last, const Framebuffer &f ) const diff --git a/src/terminal/terminaldisplay.h b/src/terminal/terminaldisplay.h index 25c2b83..acd0fc4 100644 --- a/src/terminal/terminaldisplay.h +++ b/src/terminal/terminaldisplay.h @@ -78,6 +78,8 @@ namespace Terminal { int posterize_colors; /* downsample input colors >8 to [0..7] */ + const char *smcup, *rmcup; /* enter and exit alternate screen mode */ + void put_cell( bool initialized, FrameState &frame, const Framebuffer &f ) const; public: diff --git a/src/terminal/terminaldisplayinit.cc b/src/terminal/terminaldisplayinit.cc index 27b8f93..4744628 100644 --- a/src/terminal/terminaldisplayinit.cc +++ b/src/terminal/terminaldisplayinit.cc @@ -89,7 +89,7 @@ const char *Display::ti_str( const char *capname ) const } Display::Display( bool use_environment ) - : has_ech( true ), has_bce( true ), has_title( true ), posterize_colors( false ) + : has_ech( true ), has_bce( true ), has_title( true ), posterize_colors( false ), smcup( NULL ), rmcup( NULL ) { if ( use_environment ) { int errret = -2; @@ -145,5 +145,8 @@ Display::Display( bool use_environment ) /* posterize_colors = ti_num( "colors" ) < 256; */ + + smcup = ti_str("smcup"); + rmcup = ti_str("rmcup"); } } |