Commit Graph

64 Commits

Author SHA1 Message Date
John Hood fb23168ed9 Always use std::min, std::max. 2018-08-15 19:26:27 -04:00
John Hood 4aff80b872 Fix more inappropriate const_iterator usage. 2018-08-03 19:39:08 -04:00
John Hood 8ac80db419 C++03 bound functions are not available in C++17; remove
This makes me a little sad, it's time to move to C++11 or greater.
2018-08-03 16:13:47 -04:00
John Hood ce7ba37ad4 Overlays were getting set to the wrong colors. Fix. 2017-11-06 09:30:57 -05:00
John Hood cf493da7b4 Make Terminal::Renditions smaller, and its members private. 2017-11-04 14:37:11 -04:00
John Hood b11d524bb7 Restore asserts and error handling
A couple of them got improved out of existence.
2017-08-23 15:09:43 -04:00
John Hood a40b67691a Remove various assert(constant) calls
These cause warnings from static checkers, and seem to lead to spurious
GCC7 -Wmaybe-uninitialized.
2017-08-06 23:12:05 -04:00
John Hood 1ae23b4dcc Prefer early exit/break to large conditional blocks.
Some of these are large and contain smaller unrelated refactors.
2017-08-06 22:22:09 -04:00
John Hood b1a6f7c144 Eliminate unnecessary, trailing else conditional blocks. 2017-08-06 22:22:05 -04:00
John Hood 43785eb820 Collapse nested conditionals. 2017-08-06 22:21:56 -04:00
John Hood 2b724d5868 Simplify some conditionals in terminaloverlay.cc. 2017-08-02 22:56:19 -04:00
John Hood 42d2b5d029 Use shared_ptr and references for Actions.
This slows terminal emulation slightly.
2017-08-02 22:07:02 -04:00
John Hood c49c67cecf --predict-overwrite was still inserting one column sometimes. Fix. 2017-08-02 21:56:32 -04:00
John Hood 8aac3cc927 Allow non-inserting prediction.
This may be useful for users who find prediction's activity right of
the cursor distracting.

Prediction underscoring is still a little weird sometimes, it replays
a history of known/unknown changes as acks come in from the server.
2017-08-02 00:31:37 -04:00
John Hood a993c83632 Handle GCC 7's new -Wimplicit-fallthrough. 2017-01-31 22:12:27 -05:00
John Hood 24eb5a7544 Remove a Network::Exception that isn't one.
Code smell pointed out by Coverity.
2016-11-19 21:11:04 -05:00
John Hood 302c7deb41 Describe Cell width as a narrow/wide boolean.
A character cell can only be either narrow or wide.  It's more
convenient to represent that as an int containing 1 or 2, but slightly
more correct to represent it as a "boolean" single-bit integer.
2016-11-17 00:56:31 -05:00
John Hood 2ac3bbeb9b Fix prediction unicode bug. Make all Cell members private.
Fixes #702.
2015-12-24 22:27:17 -05:00
John Hood 32afa96111 Change Framebuffer's containers/methods to improve performance.
* Reduce the size of Terminal::Cell.
* Change colors and attributes in Terminal::Rendition to bitfields/bitmask.
* Change Cells to use UTF-8 strings instead of vector<wchar_t>.  Store Rows in a vector instead of a deque.
* Add various Framebuffer::append() methods for more efficient passing of single and repeated characters.
* Change title/icon strings from deques to a vector typedef-- this is more for tidiness than any real performance.
2015-12-06 17:42:34 -05:00
John Hood 8fdcdc88cd Isolated algorithmic improvements.
* Fix inefficient STL use around Parser::UTF8Parser.
* Reduce typeid() usage, change some of it to a virtual method
* Do multiple-line scrolls as a single move
2015-12-06 17:42:34 -05:00
Anders Kaseorg 10dd74c016 NotificationEngine: Fix -Weffc++ warning
Fixes warning: ‘Overlay::NotificationEngine::escape_key_string’ should
be initialized in the member initialization list.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-06-11 01:16:52 -04:00
John Hood fc80eaaecf Show the escape key properly when server unavailable.
Fixes #624.

Signed-off-by: John Hood <cgull@glup.org>
2015-06-11 00:49:06 -04:00
Alexander Chernyakhovsky 172b1e5cef Cast time_elapsed to int before calling human_readable_duration
When attempting to build againt EPEL 5, it was noticed that
human_readable_duration expects an int, but time_elapsed is an
integer.  Explicitly static_cast<int>( time_elapsed ) to appease older
compilers.
2013-03-27 02:15:25 -04:00
Anders Kaseorg d0eeabb51e human_readable_duration, Terminal::appendstring: Pass strings by reference
Found by cppcheck.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2013-03-10 15:48:08 -04:00
Keith Winstein e2b40fcaa7 Show infobar when Ctrl-^ is typed. 2012-11-26 04:03:04 -05:00
Keith Winstein b018e3a1ab Make "elapsed time" human readable even when other error is displayed 2012-11-05 22:02:46 -05:00
Keith Winstein cdd00fee42 Simplify implementation of human_readable_duration() 2012-11-05 21:57:02 -05:00
Kevin Ballard efbe9b2bab Make the 'lost contact' string more human-readable
Teach the 'lost contact' warning string about time units larger than
seconds. After 60 esconds it will switch over to using a time display
that looks like 1:23, or 1:02:34.

Fixes #321.

Signed-off-by: Kevin Ballard <kevin@sb.org>
2012-11-05 18:39:09 -08:00
Keith Winstein bf8a29f783 Improve rendition-matching prediction heuristic. 2012-08-14 07:40:50 -04:00
Keith Winstein 63e66e9855 Add heuristic to match predicted rendition based on char to the left 2012-08-13 10:56:50 -04:00
Keith Winstein 92ecb99b71 Add OpenSSL licensing exception 2012-07-20 16:46:00 -04:00
Keith Winstein 2df9e07926 Add "experimental" mode to local echo (always predict even when incorrect) 2012-06-11 13:21:44 -04:00
Keegan McAllister dee09fb8fc Update notification less often when disconnected for at least 60 s
Saves battery power.  Closes #243.
2012-05-09 14:19:46 -04:00
Keegan McAllister 24d2b6e185 Calculate wait_time separately for {Notification,Prediction}Engine
Simplifies access to private data, including the next commit.

git renders this diff poorly.  It's a bit better with --patience.
2012-05-09 14:19:46 -04:00
Keegan McAllister 02c04fbdaa Display sendto() exception until a successful send 2012-05-09 14:19:46 -04:00
Keith Winstein 0901cd8431 Don't flag blank->blank predictions. 2012-05-05 11:21:01 -04:00
Keith Winstein 2ea3f3a347 Warn when server has not heard from us (even if we have heard from server) 2012-04-30 22:43:45 -04:00
Keith Winstein 24d48f37a4 Don't try to predict scroll until we have versioned cell predictions.
Closes #6
2012-04-19 01:11:16 -04:00
Keith Winstein b127a92617 Back off overlay frame rate when all timing tests have fired (saves CPU)
Closes #225 github issue (Jay Freeman).
2012-04-19 00:07:51 -04:00
Keith Winstein cca925e020 Reset prediction engine after size has changed (i.e. after Resize is applied) 2012-04-16 03:06:11 -04:00
Keegan McAllister cd2d482484 Don't use *_t for our own typedefs
It's reserved by POSIX.

(closes #158 pull request)
2012-04-15 13:50:18 -04:00
Keegan McAllister 280400152d Replace one find_if with a loop
g++/libstdc++ 4.1.2 is unhappy with this use of bind2nd, possibly because the
argument is a reference.  This is a problem for EL5.
2012-04-15 13:49:15 -04:00
Keegan McAllister 2675f13676 Remove boost::lambda remaining instances from terminaloverlay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 06fa8eaedb Remove boost::lambda from PredictionEngine::get_or_make_row 2012-04-15 13:49:15 -04:00
Keegan McAllister 5f1bc88ed8 Remove boost::lambda with for_each in terminaloverlay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 8f099cafbb Remove boost::lambda from ConditionalOverlayCell::get_validity 2012-04-15 13:49:15 -04:00
Keegan McAllister 4152af9c8e Remove BOOST_AUTO from terminaloverlay.cc 2012-04-15 13:49:15 -04:00
Keith Winstein 45487f6623 Handle crazy cursor more gracefully (closes #168) 2012-04-13 14:03:16 -04:00
Keith Winstein bc3297aa75 Small cleanup to generated output when predictions active 2012-03-10 06:42:21 -05:00
Keith Winstein dc1c49975f Underline when empirical delay gets >500ms, even if SRTT hasn't (fixes #35) 2012-03-07 04:09:40 -05:00