diff --git a/NEWS b/NEWS index 05721b67..eb7a01d7 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,12 @@ lnav v0.7.1: * Added log formats for the OpenAM identity provider. * Added a 'clear-highlight' command to clear previous calls to the 'highlight' command. + * Fixed some performance bugs in indexing JSON log formats. Loading + times should be at least five times faster. + * Filtering performance should be improved so that enabling/disabling + filters should be almost instantaneous. + * The filter-in, filter-out, and highlight commands now support + tab-completion of text in the current view. lnav v0.7.0: Features: diff --git a/configure b/configure index 8c321587..383fd411 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.7.0. +# Generated by GNU Autoconf 2.69 for lnav 0.7.1. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lnav' PACKAGE_TARNAME='lnav' -PACKAGE_VERSION='0.7.0' -PACKAGE_STRING='lnav 0.7.0' +PACKAGE_VERSION='0.7.1' +PACKAGE_STRING='lnav 0.7.1' PACKAGE_BUGREPORT='lnav@googlegroups.com' PACKAGE_URL='' @@ -1318,7 +1318,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.7.0 to adapt to many kinds of systems. +\`configure' configures lnav 0.7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1388,7 +1388,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of lnav 0.7.0:";; + short | recursive ) echo "Configuration of lnav 0.7.1:";; esac cat <<\_ACEOF @@ -1495,7 +1495,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -lnav configure 0.7.0 +lnav configure 0.7.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2188,7 +2188,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.7.0, which was +It was created by lnav $as_me 0.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3052,7 +3052,7 @@ fi # Define the identity of the package. PACKAGE='lnav' - VERSION='0.7.0' + VERSION='0.7.1' cat >>confdefs.h <<_ACEOF @@ -8029,7 +8029,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.7.0, which was +This file was extended by lnav $as_me 0.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8095,7 +8095,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.7.0 +lnav config.status 0.7.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 10ade9d8..74047fc7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -AC_INIT(lnav, 0.7.0, lnav@googlegroups.com) +AC_INIT(lnav, 0.7.1, lnav@googlegroups.com) AC_CONFIG_SRCDIR([src/lnav.cc]) AM_INIT_AUTOMAKE([foreign subdir-objects]) AM_SILENT_RULES([yes]) diff --git a/docs/source/conf.py b/docs/source/conf.py index a17fe7e2..65842d09 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -58,7 +58,7 @@ copyright = u'2014, Tim Stack' # The short X.Y version. version = '0.7' # The full version, including alpha/beta/rc tags. -release = '0.7.0' +release = '0.7.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/src/lnav.cc b/src/lnav.cc index fc1f36b8..ae95cac6 100644 --- a/src/lnav.cc +++ b/src/lnav.cc @@ -71,6 +71,10 @@ #include +#ifdef HAVE_BZLIB_H +#include +#endif + #include "lnav.hh" #include "help.hh" #include "init-sql.hh" @@ -4287,6 +4291,15 @@ int main(int argc, char *argv[]) log_info("startup: %s", PACKAGE_STRING); log_host_info(); + log_info("Libraries:"); +#ifdef HAVE_BZLIB_H + log_info(" bzip=%s", BZ2_bzlibVersion()); +#endif + log_info(" ncurses=%s", NCURSES_VERSION); + log_info(" pcre=%s", pcre_version()); + log_info(" readline=%s", rl_library_version); + log_info(" sqlite=%s", sqlite3_version); + log_info(" zlib=%s", zlibVersion()); log_info("lnav_data:"); log_info(" flags=%x", lnav_data.ld_flags); log_info(" commands:"); diff --git a/src/lnav_commands.cc b/src/lnav_commands.cc index 15894aa6..7d8fd6a8 100644 --- a/src/lnav_commands.cc +++ b/src/lnav_commands.cc @@ -449,7 +449,9 @@ static string com_highlight(string cmdline, vector &args) { string retval = "error: expecting regular expression to highlight"; - if (args.size() == 0) { } + if (args.size() == 0) { + args.push_back("filter"); + } else if (args.size() > 1) { textview_curses *tc = lnav_data.ld_view_stack.top(); textview_curses::highlight_map_t &hm = tc->get_highlights(); diff --git a/src/lnav_log.cc b/src/lnav_log.cc index 271cbd5c..12d43375 100644 --- a/src/lnav_log.cc +++ b/src/lnav_log.cc @@ -69,6 +69,8 @@ #include "lnav_log.hh" +#include "pcrepp.hh" + static const size_t BUFFER_SIZE = 256 * 1024; static const size_t MAX_LOG_LINE_SIZE = 2048; diff --git a/src/readline_highlighters.cc b/src/readline_highlighters.cc index 0a9e9e08..5f60a77b 100644 --- a/src/readline_highlighters.cc +++ b/src/readline_highlighters.cc @@ -350,13 +350,23 @@ void readline_regex_highlighter(attr_line_t &al, int x) void readline_command_highlighter(attr_line_t &al, int x) { static const pcrepp PREFIXES("^:(filter-in|filter-out|highlight|graph)"); + static int keyword_attrs = ( + A_BOLD|view_colors::ansi_color_pair(COLOR_CYAN, COLOR_BLACK)); const string &line = al.get_string(); pcre_context_static<30> pc; pcre_input pi(line); + size_t ws_index; + ws_index = line.find(' '); + if (ws_index != string::npos) { + al.get_attrs().push_back(string_attr( + line_range(1, ws_index), + &view_curses::VC_STYLE, + keyword_attrs)); + } if (PREFIXES.match(pc, pi)) { - readline_regex_highlighter_int(al, x, 1 + pc[1]->length()); + readline_regex_highlighter_int(al, x, 1 + pc[0]->length()); } }