From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6776 invoked by alias); 15 Sep 2012 19:04:24 -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: 17267 Received: (qmail 14992 invoked from network); 15 Sep 2012 19:04:10 -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=-0.9 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED,RCVD_IN_DNSWL_NONE, T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=no version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at yahoo.co.uk does not designate permitted sender hosts) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s1024; t=1347735430; bh=o21FmJcq6WDuIFeZ5Llv5Uin8gDE0qIR7LSSieG/CYY=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:Received:Received:cc:In-reply-to:From:References:To:Subject:Date:Message-ID; b=JAbGTKt5IhDd5iSGNhqW6NuelMoCiHHhByN/uQAs6rNg309L+4j30Y4En2C6L9AJ6dn5ESVykmV8Vtur4ycJaHXW3ENOQj39dRab1fVfT4pxU7m3NIw4YQngwmqhmINY0pZ06HZ9IGctF3EpuTFXEfwcTXFOnkH8CzAmXi7Lz7U= X-Yahoo-Newman-Id: 424299.25006.bm@smtp138.mail.ukl.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: XKF3qOAVM1lE9mZ._zxvsAkypclzlLWxCA2DYqcVxW2712E MzcaZGVHgeH8Qccjj97.z.X_xVYLb_GUMldhK04HXSL0ik1et_M4sw.pCHzu ObUMJq1sWhhiMsAqYuYaLDpnZvx5k6WnTLwk7Jk3Qsff0.e72zbd8bI2H8kN _tiRBd4aPxfZ39TpE8Btsd..MrSxvu0wtl_1bEYruosuj_A6D.wnSTForT1J 7L2bFZqdXoEnNf9SdNvyRnsemqHZIQ3.3dnWSIUWGiLwjH25gsCTtpydALQD 37lY8ei8QOCrl1WTiQAnjyxVWd0wRQozU.ycZ3zAY9Ea7WHzPVaYW127yhio XZvOhAd1sW7nRxxiUuiR78FFvl61DjMMf_a5nQ9dk_.aP0O14v.R9Sx1i6AI T.aMOgSxD4l9Tow-- X-Yahoo-SMTP: opAkk_CswBAce_kJ3nIPlH80cJI- cc: zsh-users@zsh.org In-reply-to: <504EED6B.7030403@gmx.net> From: Oliver Kiddle References: <504EED6B.7030403@gmx.net> To: Pascal Wittmann Subject: Re: Magic-Backspace Date: Sat, 15 Sep 2012 20:57:09 +0200 Message-ID: <17949.1347735429@thecus.kiddle.eu> On 11 Sep, Pascal Wittmann wrote: > > I thought of implementing some magic-backspace that removes characters > until the 'current' completion is ambiguous (i.e. some extended version > of undo). I've got a function which does roughly this. It has a number of issues and, as I wrote it over eight years ago, I can't remember what those issues are. I've attached it below. It works by removing characters from the PREFIX and trying completion. It is intended to be used as a completion widget via _generic: zle -C retract complete-word _generic zstyle ':completion:retract::::' completer _retract bindkey '^[[24~' retract # F12 I'm not sure what the commented out line was for. Oliver #autoload local _comp_backup=1 bumax=30 if (( ! $+functions[compadd] )); then compadd() { local save oldp="$PREFIX" SUFFIX= # removing the -O option is a nasty way to make this work from _multi_parts zparseopts -D -E O:=save local i for ((i=_comp_backup;i>0;i--)); do PREFIX="${PREFIX%?}" done builtin compadd -S '' -F "( $oldp* )" "$@" } trap 'unfunction compadd' EXIT INT fi while [[ _comp_backup -le bumax ]]; do _complete && return (( _comp_backup++ )) done #builtin compadd - '' return 1