Use TERM env var / terminfo to decide whether to send ECH. Fixes tmux bug.

Closes #28 github issue.
This commit is contained in:
Keith Winstein
2012-03-10 05:41:03 -05:00
parent ac16f9127c
commit b8457dd308
13 changed files with 114 additions and 23 deletions
+2
View File
@@ -89,6 +89,8 @@ int main( int argc, char *argv[] )
} catch ( Crypto::CryptoException e ) {
fprintf( stderr, "Crypto exception: %s\r\n",
e.text.c_str() );
} catch ( std::string s ) {
fprintf( stderr, "Error: %s\r\n", s.c_str() );
}
printf( "\n[mosh is exiting.]\n" );
+5 -5
View File
@@ -130,7 +130,7 @@ void STMClient::main_init( void )
local_framebuffer = new Terminal::Framebuffer( window_size.ws_col, window_size.ws_row );
/* initialize screen */
string init = Terminal::Display::new_frame( false, *local_framebuffer, *local_framebuffer );
string init = display.new_frame( false, *local_framebuffer, *local_framebuffer );
swrite( STDOUT_FILENO, init.data(), init.size() );
/* open network */
@@ -158,11 +158,11 @@ void STMClient::output_new_frame( void )
overlays.apply( new_state );
/* calculate minimal difference from where we are */
const string diff( Terminal::Display::new_frame( !repaint_requested,
*local_framebuffer,
new_state ) );
const string diff( display.new_frame( !repaint_requested,
*local_framebuffer,
new_state ) );
swrite( STDOUT_FILENO, diff.data(), diff.size() );
*local_framebuffer = new_state;
*local_framebuffer = new_state;
repaint_requested = false;
}
+2
View File
@@ -42,6 +42,7 @@ private:
Terminal::Framebuffer *local_framebuffer;
Overlay::OverlayManager overlays;
Network::Transport< Network::UserStream, Terminal::Complete > *network;
Terminal::Display display;
bool repaint_requested, quit_sequence_started;
@@ -61,6 +62,7 @@ public:
local_framebuffer( NULL ),
overlays(),
network( NULL ),
display( true ), /* use TERM environment var to initialize display */
repaint_requested( false ),
quit_sequence_started( false )
{