3737#include < stdio.h>
3838#include < stdlib.h>
3939#include < string.h>
40+ #include < sys/ioctl.h>
4041#include < sys/stat.h>
4142#include < sys/time.h>
4243#include < sys/wait.h>
@@ -1483,8 +1484,7 @@ VALUES ('org.lnav.mouse-support', -1, DATETIME('now', '+1 minute'),
14831484
14841485 lnav_data.ld_views [LNV_LOG].get_highlights ()[{
14851486 highlight_source_t ::CONFIGURATION,
1486- format->get_name ().to_string () + " -" + hl.h_name }]
1487- = hl;
1487+ format->get_name ().to_string () + " -" + hl.h_name }] = hl;
14881488 }
14891489 }
14901490 }
@@ -1519,7 +1519,9 @@ VALUES ('org.lnav.mouse-support', -1, DATETIME('now', '+1 minute'),
15191519 = bind_mem (&lnav::prompt::rl_external_edit, &prompt);
15201520 }
15211521
1522- lnav_data.ld_view_stack .push_back (&lnav_data.ld_views [LNV_LOG]);
1522+ if (lnav_data.ld_view_stack .empty ()) {
1523+ lnav_data.ld_view_stack .push_back (&lnav_data.ld_views [LNV_LOG]);
1524+ }
15231525
15241526 sb.push_back (clear_last_user_mark);
15251527 sb.push_back (update_view_position);
@@ -1727,23 +1729,20 @@ VALUES ('org.lnav.mouse-support', -1, DATETIME('now', '+1 minute'),
17271729 .on_click
17281730 = [](status_field&) { ensure_view (&lnav_data.ld_views [LNV_HELP]); };
17291731 lnav_data.ld_bottom_source .get_field (bottom_status_source::BSF_LINE_NUMBER)
1730- .on_click
1731- = [](status_field&) {
1732- auto cmd = fmt::format (
1733- FMT_STRING (" prompt command : 'goto {}'" ),
1734- (int ) lnav_data.ld_view_stack .top ().value ()->get_top ());
1732+ .on_click = [](status_field&) {
1733+ auto cmd = fmt::format (
1734+ FMT_STRING (" prompt command : 'goto {}'" ),
1735+ (int ) lnav_data.ld_view_stack .top ().value ()->get_top ());
17351736
1736- execute_command (lnav_data.ld_exec_context , cmd);
1737- };
1737+ execute_command (lnav_data.ld_exec_context , cmd);
1738+ };
17381739 lnav_data.ld_bottom_source .get_field (bottom_status_source::BSF_SEARCH_TERM)
1739- .on_click
1740- = [](status_field&) {
1741- auto term
1742- = lnav_data.ld_view_stack .top ().value ()->get_current_search ();
1743- auto cmd = fmt::format (FMT_STRING (" prompt search / '{}'" ), term);
1740+ .on_click = [](status_field&) {
1741+ auto term = lnav_data.ld_view_stack .top ().value ()->get_current_search ();
1742+ auto cmd = fmt::format (FMT_STRING (" prompt search / '{}'" ), term);
17441743
1745- execute_command (lnav_data.ld_exec_context , cmd);
1746- };
1744+ execute_command (lnav_data.ld_exec_context , cmd);
1745+ };
17471746
17481747 lnav_data.ld_status [LNS_TOP].set_title (" top" );
17491748 lnav_data.ld_status [LNS_TOP].set_y (0 );
@@ -1768,12 +1767,11 @@ VALUES ('org.lnav.mouse-support', -1, DATETIME('now', '+1 minute'),
17681767 &lnav_data.ld_doc_status_source );
17691768 lnav_data.ld_preview_status_source [0 ]
17701769 .statusview_value_for_field (preview_status_source::TSF_TOGGLE)
1771- .on_click
1772- = [](status_field&) {
1773- lnav_data.ld_preview_status_source ->update_toggle_msg (
1774- lnav_data.ld_preview_hidden );
1775- lnav_data.ld_preview_hidden = !lnav_data.ld_preview_hidden ;
1776- };
1770+ .on_click = [](status_field&) {
1771+ lnav_data.ld_preview_status_source ->update_toggle_msg (
1772+ lnav_data.ld_preview_hidden );
1773+ lnav_data.ld_preview_hidden = !lnav_data.ld_preview_hidden ;
1774+ };
17771775 lnav_data.ld_status [LNS_PREVIEW0].set_title (" preview0" );
17781776 lnav_data.ld_status [LNS_PREVIEW0].set_data_source (
17791777 &lnav_data.ld_preview_status_source [0 ]);
@@ -2751,6 +2749,12 @@ main(int argc, char* argv[])
27512749 std::string since_time;
27522750 std::string until_time;
27532751 const char * LANG = getenv (" LANG" );
2752+ winsize term_size{};
2753+
2754+ if (ioctl (STDOUT_FILENO, TIOCGWINSZ, &term_size) != 0 ) {
2755+ term_size.ws_col = 80 ;
2756+ term_size.ws_row = 24 ;
2757+ }
27542758
27552759 if (LANG == nullptr || strcmp (LANG, " C" ) == 0 ) {
27562760 setenv (" LANG" , " en_US.UTF-8" , 1 );
@@ -2828,15 +2832,14 @@ main(int argc, char* argv[])
28282832 auto_mem<char > var_path;
28292833
28302834 var_path = realpath (" /var/log" , nullptr );
2831- options_coll.foc_pattern_to_options [fmt::format (FMT_STRING (" {}/*" ),
2832- var_path.in ())]
2833- = lnav::file_options{
2834- {
2835- intern_string_t {},
2836- source_location{},
2837- curr_tz,
2838- },
2839- };
2835+ options_coll.foc_pattern_to_options [fmt::format (
2836+ FMT_STRING (" {}/*" ), var_path.in ())] = lnav::file_options{
2837+ {
2838+ intern_string_t {},
2839+ source_location{},
2840+ curr_tz,
2841+ },
2842+ };
28402843 options_hier->foh_path_to_collection .emplace (std::filesystem::path (" /" ),
28412844 options_coll);
28422845 } catch (const std::runtime_error& e) {
@@ -4152,7 +4155,7 @@ SELECT tbl_name FROM sqlite_master WHERE sql LIKE 'CREATE VIRTUAL TABLE%'
41524155 }
41534156
41544157 if (!lnav_data.ld_flags .is_set <lnav_flags::headless>()
4155- && verbosity == verbosity_t ::quiet && load_stdin
4158+ && verbosity == verbosity_t ::quiet
41564159 && lnav_data.ld_active_files .fc_file_names .size () == 1 )
41574160 {
41584161 log_info (" pager mode, waiting for input to be consumed" );
@@ -4170,7 +4173,8 @@ SELECT tbl_name FROM sqlite_master WHERE sql LIKE 'CREATE VIRTUAL TABLE%'
41704173 log_info (" input fully consumed" );
41714174 rebuild_indexes_repeatedly ();
41724175 if (lnav_data.ld_active_files .fc_files .empty ()
4173- || lnav_data.ld_active_files .fc_files [0 ]->size () < 24 )
4176+ || lnav_data.ld_active_files .fc_files [0 ]->size ()
4177+ < term_size.ws_row - 3 )
41744178 {
41754179 log_info (" input is smaller than screen, not paging" );
41764180 lnav_data.ld_flags .set <lnav_flags::headless>();
0 commit comments