No description
Find a file
Sebastian Gniazdowski 3b543a4ecc *highlight: Coloring history doesn't need checking a path as prefix
parse.zsh -oo, before change:

Running time: 2.3793230000
num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)  350        2371,62     6,78  100,00%   1636,82     4,68   69,02%  -hsmw-highlight-process
 2) 2800         365,84     0,13   15,43%    365,84     0,13   15,43%  -hsmw-highlight-string
 3) 2450         195,43     0,08    8,24%    135,32     0,06    5,71%  -hsmw-highlight-check-path
 4) 3850          92,77     0,02    3,91%     92,77     0,02    3,91%  -hsmw-highlight-expand-path
 5) 1400          67,54     0,05    2,85%     67,54     0,05    2,85%  (anon)
 6) 1400          43,99     0,03    1,85%     43,99     0,03    1,85%  -hsmw-highlight-main-type
 7)  700          11,19     0,02    0,47%     11,19     0,02    0,47%  -hsmw-highlight-check-assign
 8)  350           9,66     0,03    0,41%      9,66     0,03    0,41%  -hsmw-highlight-stack-pop

parse.zsh -oo, after change:

Running time: 2.3625050000
num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)  350        2354,85     6,73  100,00%   1649,87     4,71   70,06%  -hsmw-highlight-process
 2) 2800         366,95     0,13   15,58%    366,95     0,13   15,58%  -hsmw-highlight-string
 3) 2450         163,48     0,07    6,94%    103,18     0,04    4,38%  -hsmw-highlight-check-path
 4) 3850          92,94     0,02    3,95%     92,94     0,02    3,95%  -hsmw-highlight-expand-path
 5) 1400          68,50     0,05    2,91%     68,50     0,05    2,91%  (anon)
 6) 1400          43,79     0,03    1,86%     43,79     0,03    1,86%  -hsmw-highlight-main-type
 7)  700          11,32     0,02    0,48%     11,32     0,02    0,48%  -hsmw-highlight-check-assign
 8)  350           9,65     0,03    0,41%      9,65     0,03    0,41%  -hsmw-highlight-stack-pop

Main execution time is quite unstable, but *-check-path() running time is ok. 30ms gain.
2016-10-16 15:20:40 +02:00
test parse.zsh: Sophisticated own input on -oo 2016-10-16 08:38:10 +02:00
history-search-multi-word hsmw: autoload is-at-least 2016-10-15 09:36:08 +02:00
history-search-multi-word.plugin.zsh Immediate commit after obtaining first working highlighting 2016-10-09 09:24:03 +02:00
hsmw-highlight *highlight: Coloring history doesn't need checking a path as prefix 2016-10-16 15:20:40 +02:00
LICENSE New license 2016-08-31 17:09:24 +02:00
README.md Updated README.md 2016-10-15 14:46:44 +02:00

Introduction

Binds Ctrl-R to a widget that searches for multiple keywords in AND fashion. In other words, you can enter multiple words, and history entries that match all of them will be found. The entries are syntax highlighted.

Video  view on asciinema. You can resize the video by pressing Ctrl-+ or Cmd-+.

asciicast

News

  • 15-10-2016

    • The compact, already optimized (by me) zsh-syntax-highlighting part has been further optimized by 21%! Also, more tokens are highlighted  variable expressions like "${(@)var[1,3]}" (when quoted).
  • 11-10-2016

    • Syntax highlighting of history  adapted, fine crafted, small part of zsh-syntax-highlighting to color what hsmw shows:

      syntax highlighting

  • 20-09-2016

    • Keys Page Up and Page Down work and page-wise move along history. Also, Ctrl-P, Ctrl-N move to previous and next entries
  • 19-09-2016

  • 25-05-2016

    • Cooperation with zsh-autosuggestions plugin

    • Configuration option to set page size, example use:

      zstyle ":history-search-multi-word" page-size "5"
      

Installation

The plugin is "standalone", which means that only sourcing it is needed. So to install, unpack history-search-multi-word somewhere and add

source {where-hsmw-is}/history-search-multi-word.plugin.zsh

to zshrc.

If using a plugin manager, then Zplugin is recommended, but you can use any other too, and also install with Oh My Zsh (by copying directory to ~/.oh-my-zsh/custom/plugins).

Zplugin

Add zplugin load psprint/history-search-multi-word to your .zshrc file. Zplugin will handle cloning the plugin for you automatically the next time you start zsh.

Antigen

Add antigen bundle psprint/history-search-multi-word to your .zshrc file. Antigen will handle cloning the plugin for you automatically the next time you start zsh. You can also add the plugin to a running zsh with antigen bundle psprint/history-search-multi-word for testing before adding it to your .zshrc.

Oh-My-Zsh

  1. cd ~/.oh-my-zsh/custom/plugins
  2. git clone git@github.com:psprint/history-search-multi-word.git
  3. Add history-search-multi-word to your plugin list

Zgen

Add zgen load psprint/history-search-multi-word to your .zshrc file in the same place you're doing your other zgen load calls in.

Customizing

Zstyles

zstyle ":history-search-multi-word" page-size "8"                      # Number of entries to show, default is LINES/3
zstyle ":history-search-multi-word" highlight-color "fg=yellow,bold"   # Color in which to highlight matched, searched text
zstyle ":plugin:history-search-multi-word" synhl "yes"                 # Whether to perform syntax highlighting

Syntax highlighting

Syntax highlighting is customized via HSMW_HIGHLIGHT_STYLES associative array. It has keys like reserved-word, alias, command, path, which are assigned with strings like fg=blue,bold, to configure how given elements are to be colored. If you assign this array before loading hsmw you will change the defaults. Complete list of available keys is at the beginning of hsmw-highlight file. Example ~/.zshrc addition that sets path key paths that exist will be highlighted with background magenta, foreground white, bold:

typeset -gA HSMW_HIGHLIGHT_STYLES
HSMW_HIGHLIGHT_STYLES[path]="bg=magenta,fg=white,bold"

Following code will enable coloring of options of form "-o" and "--option", with cyan:

typeset -gA HSMW_HIGHLIGHT_STYLES
HSMW_HIGHLIGHT_STYLES[single-hyphen-option]="fg=cyan"
HSMW_HIGHLIGHT_STYLES[double-hyphen-option]="fg=cyan"

IRC Channel

Channel #zplugin@freenode is a support place for all author's projects. Connect to: chat.freenode.net:6697 (SSL) or chat.freenode.net:6667 and join #zplugin.

Following is a quick access via Webchat IRC