diff --git a/AUTHORS b/AUTHORS index 34b611df..3f219c12 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,3 +3,10 @@ Primary Author -------------- Timothy Stack (timothyshanestack@gmail.com) + +Contributors +------------ + +Suresh Sundriyal (sureshsundriyal@gmail.com) +Matt Dordal (matt@dordal.org) +Henrietta Stack diff --git a/NEWS b/NEWS index 0b07ed24..5ff1e3c1 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,29 @@ lnav v0.6.3: Features: - * Add the '.schema' SQL command. + * Add the '.schema' SQL command to open a view that displays the schema + for the internal tables and any attached databases. If lnav was only + executed with a SQLite database and no text files, this view will open + by default. + * The scroll bar now indicates the location of errors/warnings, search + hits, and bookmarks. + * The xterm title is update to reflect the file name for the top line + in the view. + * When doing a search or SQL query, any text that is currently being + displayed can be tab-completed. + * The '-H' option was added so you can view the internal help text. + * Added the 'g/G' hotkeys to move to the top/bottom of the file. + + Fixes: + * Performance improvements. + * Multi-line filtering has been fixed. + * A collator has been added to the log_level column in the log tables + so that you can write expressions like "log_level > 'warning'". + * The log_time datetime format now matches what is returned by + "datetime('now')" so that collating works correctly. + * Static-linking has been cleaned up. + * OpenSSL is no longer a requirement. + * Alpha support for Windows/cygwin. lnav v0.6.2: Features: diff --git a/configure b/configure index 6f1bf55c..8e0b0f5e 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for lnav 0.6.2. +# Generated by GNU Autoconf 2.69 for lnav 0.6.3. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lnav' PACKAGE_TARNAME='lnav' -PACKAGE_VERSION='0.6.2' -PACKAGE_STRING='lnav 0.6.2' +PACKAGE_VERSION='0.6.3' +PACKAGE_STRING='lnav 0.6.3' PACKAGE_BUGREPORT='lnav@googlegroups.com' PACKAGE_URL='' @@ -1317,7 +1317,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures lnav 0.6.2 to adapt to many kinds of systems. +\`configure' configures lnav 0.6.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1387,7 +1387,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of lnav 0.6.2:";; + short | recursive ) echo "Configuration of lnav 0.6.3:";; esac cat <<\_ACEOF @@ -1494,7 +1494,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -lnav configure 0.6.2 +lnav configure 0.6.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2120,7 +2120,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by lnav $as_me 0.6.2, which was +It was created by lnav $as_me 0.6.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2984,7 +2984,7 @@ fi # Define the identity of the package. PACKAGE='lnav' - VERSION='0.6.2' + VERSION='0.6.3' cat >>confdefs.h <<_ACEOF @@ -7848,7 +7848,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by lnav $as_me 0.6.2, which was +This file was extended by lnav $as_me 0.6.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7914,7 +7914,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -lnav config.status 0.6.2 +lnav config.status 0.6.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5d2fd7da..4d656368 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -AC_INIT(lnav, 0.6.2, lnav@googlegroups.com) +AC_INIT(lnav, 0.6.3, lnav@googlegroups.com) AC_CONFIG_SRCDIR([src/lnav.cc]) AM_INIT_AUTOMAKE([foreign subdir-objects]) AM_SILENT_RULES([yes]) diff --git a/src/help.txt b/src/help.txt index ec6bd90a..0fa7d616 100644 --- a/src/help.txt +++ b/src/help.txt @@ -61,8 +61,11 @@ On color displays, the lines will be highlighted as follows: XML tags, file and line numbers in Java backtraces, and quoted strings. To give you an idea of where you are in the file spatially, the right -side of the display has a proportionally sized 'scrollbar' that -indicates your current position in the file. +side of the display has a proportionally sized 'scroll bar' that +indicates your current position in the file. The scroll bar will also +show areas of the file where warnings or errors are detected by coloring +the bar yellow or red, respectively. Tick marks will also be added to the +left and right hand side of the bar, for search hits and bookmarks. Above and below the main body are status lines that display: diff --git a/src/lnav.cc b/src/lnav.cc index 2733a261..b59e287f 100644 --- a/src/lnav.cc +++ b/src/lnav.cc @@ -111,12 +111,6 @@ using namespace std; -#define HELP_MSG_1(x, msg) \ - "Press '" ANSI_BOLD(#x) "' " msg - -#define HELP_MSG_2(x, y, msg) \ - "Press " ANSI_BOLD(#x) "/" ANSI_BOLD(#y) " " msg - static multimap DEFAULT_FILES; struct _lnav_data lnav_data; @@ -2277,8 +2271,8 @@ static void rl_callback(void *dummy, readline_curses *rc) case LNM_COMMAND: lnav_data.ld_mode = LNM_PAGING; - rc->set_value(execute_command(rc->get_value())); rc->set_alt_value(""); + rc->set_value(execute_command(rc->get_value())); break; case LNM_SEARCH: @@ -3749,7 +3743,6 @@ int main(int argc, char *argv[]) set_sub_source(&lnav_data.ld_log_source); lnav_data.ld_views[LNV_LOG]. set_delegate(new action_delegate(lnav_data.ld_log_source)); - lnav_data.ld_views[LNV_LOG].set_gutter_source(new log_gutter_source()); lnav_data.ld_views[LNV_TEXT]. set_sub_source(&lnav_data.ld_text_source); lnav_data.ld_views[LNV_HISTOGRAM]. @@ -3765,6 +3758,10 @@ int main(int argc, char *argv[]) set_overlay_source(new field_overlay_source(lnav_data.ld_log_source)); lnav_data.ld_db_overlay.dos_hist_source = &lnav_data.ld_db_source; + for (int lpc = 0; lpc < LNV__MAX; lpc++) { + lnav_data.ld_views[lpc].set_gutter_source(new log_gutter_source()); + } + { setup_highlights(lnav_data.ld_views[LNV_LOG].get_highlights()); setup_highlights(lnav_data.ld_views[LNV_TEXT].get_highlights()); diff --git a/src/lnav.hh b/src/lnav.hh index fa3327db..f6ef277c 100644 --- a/src/lnav.hh +++ b/src/lnav.hh @@ -58,6 +58,7 @@ #include "xterm_mouse.hh" #include "piper_proc.hh" #include "term_extra.hh" +#include "ansi_scrubber.hh" /** The command modes that are available while viewing a file. */ typedef enum { @@ -195,6 +196,12 @@ struct _lnav_data { extern struct _lnav_data lnav_data; +#define HELP_MSG_1(x, msg) \ + "Press '" ANSI_BOLD(#x) "' " msg + +#define HELP_MSG_2(x, y, msg) \ + "Press " ANSI_BOLD(#x) "/" ANSI_BOLD(#y) " " msg + void rebuild_indexes(bool force); void ensure_view(textview_curses *expected_tc); diff --git a/src/lnav_commands.cc b/src/lnav_commands.cc index 96d25ab4..59d88655 100644 --- a/src/lnav_commands.cc +++ b/src/lnav_commands.cc @@ -797,6 +797,9 @@ static string com_open(string cmdline, vector &args) lnav_data.ld_file_names.insert(make_pair(fn, -1)); retval = "info: opened -- " + fn; lnav_data.ld_files_to_front.push_back(make_pair(fn, top)); + + lnav_data.ld_rl_view->set_alt_value(HELP_MSG_1( + X, "to close the file")); } } } diff --git a/src/textview_curses.hh b/src/textview_curses.hh index 340e9a02..23df566a 100644 --- a/src/textview_curses.hh +++ b/src/textview_curses.hh @@ -369,7 +369,8 @@ public: { bool retval = false; - if (line < (int)this->tc_sub_source->text_line_count()) { + if (this->tc_sub_source != NULL && + line < (int)this->tc_sub_source->text_line_count()) { this->tc_sub_source->text_value_for_line(*this, line, value_out,