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

Re: retrieving the results of last command?

Francisco Borges wrote:
> I tried to code a widget to do this, but I this is as far as I got:
> insert-last-command-output(){
>     com="`fc -ln -1`"
>     RBUFFER=`$com`
> }
> zle -N insert-last-command-output
> bindkey "^X^L" insert-last-command-output
> #(^X^L was the first free key I could remember...)
> but is fails with:
> % locate ipython.el
> /usr/bla/ipython.el
> % insert-last-command-output:1: command not found: locate ipython.el

You get a complete command line, which needs to be reevaluated.  Your
$com is just a string with the line in it, not the command line as
the shell would parse it.

You can simplify retrieving the command by using the parameter history
from the zsh/parameter library, which contains the history indexed
by the history line number, and the standard parameter HISTCMD which
gives the current history line number.

Normal "insert" widgets append stuff to the left of the cursor
rather than replacing RBUFFER.

You whould be able to do this:

zmodload -i zsh/parameter
insert-last-command-output() {
  LBUFFER+="$(eval $history[$((HISTCMD-1))])"

Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070

This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.


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