Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Excluding command from history list



Bart Schaefer wrote on Fri, Jan 23, 2015 at 20:47:55 -0800:
> On Jan 23, 12:32pm, Ramkumar Ramachandra wrote:
> }
> } I want to exclude
> } *dcommit* from the history list; excluding it from the history file is
> } pretty simple:
> } 
> }   zshaddhistory () {
> }       [[ $1 != *dcommit* ]]
> }   }
> } 
> } ... but I haven't figured out how to do it for the history list
> 
> That *does* exclude it from the history list.
> 
> What it doesn't do (and what nothing does) is exclude it from being
> kept in what might be termed the "previous command buffer".  You
> can ALWAYS go back exactly one command, even when HISTSIZE=0, but
> with the zshaddhistory hook above, that command will be discarded
> as soon as there is another new one to replace it.

You could partially workaround that feature by wrapping the
history-recalling commands with "don't recall dcommit" variants.  For
example:

% bindkey -L | grep up
bindkey "^[[A" up-line-or-history
% f() { 
  local b="$BUFFER"
  zle .up-line-or-history
  [[ $BUFFER == *dcommit* ]] && BUFFER=": : :"
}
% zle -N f f 
% bindkey '^[[A' f 

That doesn't stop you from using '!' in an input line, e.g., '!?dcommit'
would still recall the 'git svn dcommit' command.

Daniel



Messages sorted by: Reverse Date, Date, Thread, Author