From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11222 invoked by alias); 30 Sep 2012 06:06:45 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 17295 Received: (qmail 28456 invoked from network); 30 Sep 2012 06:06:44 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at sharpsaw.org does not designate permitted sender hosts) Message-ID: <5067DF43.4020708@sharpsaw.org> Date: Sun, 30 Sep 2012 00:57:23 -0500 From: =?UTF-8?B?4piIa2luZw==?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 MIME-Version: 1.0 To: zsh-users@zsh.org Subject: Zsh as Application Platform Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Guys. Idea ---- Zsh has one of the sweetest CLI interactors around. Readline's chumpy. Language-specific libs are weak+tedious+incomplete. The best hand-made implementations will take a very long time to make and still probably would never be as easily customized as zle. So, can't we use zsh as the front-end for other tools, to much great winning profit power? Example: Pry ------------ Look at the great Ruby REPL, Pry ( http://pryrepl.org/ ). It comes out of the box using readline, which is sort of nice because readline is sort of nice. But it hits limits very quickly. Check out the gnarly hack used here to add just a single keybinding to the REPL: https://github.com/tpope/pry-editline/blob/master/lib/pry-editline.rb#L11 An alternative is provided via a pure-Ruby alternative, Coolline, but it's implementation is not sophisticated (has no vi keys; hardcodes terminal escape sequences), and ended up getting special handling directly inside pry: https://github.com/pry/pry/blob/master/lib/pry/pry_instance.rb#L605 So --- Are there any tools that already do something like this? I think I could start by simply making ^J/^M do something other than accept-line (that is, send their buffer to another program via IPC), and start working on custom completion. But, if there's prior art, I'd like to study it first. Thanks! —☈