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

Re: Feature request: set extension for =( ) created file

On Sep 25,  8:17am, Sebastian Gniazdowski wrote:
} First thing that came to my mind is use of [], not () like Nikolay
} proposed, so e.g. vim =( cat ... )[java], although it also suffers
} from colliding with globbing, which is IMO a serious drawback.

Hmm ... maybe colliding with globbing is exactly what we need.

Consider (line breaks added for readability):

vim =(
    git -C /home/user/github/proj.git cat-file blob 1e08920
  )(e?'reply=($REPLY.java); ln $REPLY $reply'?)

This covers everything that's wanted except for the auto-removal of
the .java file; even "java" can be replaced by a $(git ls-tree ...)
to obtain the file extension.

So if we could replace "ln" with a builtin that implements "make
this link, but remove it when the current command context finishes"
we'd have a complete solution.

One step further to make it it's own glob qualifier (hardest part
may be coming up with what character to use) and we're set.  In the

    alias vimtmp='() { { vim $1 } always { rm $1 } }'

And, good grief, I just realized this is another answer to FAQ #2.3.

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