From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3595 invoked by alias); 2 Jun 2011 02:22:20 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 29432 Received: (qmail 1606 invoked from network); 2 Jun 2011 02:22:19 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <110601192206.ZM14271@torch.brasslantern.com> Date: Wed, 01 Jun 2011 19:22:06 -0700 In-reply-to: Comments: In reply to Bernhard Tittelbach "Re: Behaviour of {beginning,end}-of-buffer-or-history" (Jun 1, 9:57pm) References: X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh-workers@zsh.org Subject: Re: Behaviour of {beginning,end}-of-buffer-or-history MIME-version: 1.0 Content-type: text/plain; charset=us-ascii On Jun 1, 9:57pm, Bernhard Tittelbach wrote: } } I find it odd that {beginning,end}-of-buffer-or-history jumps to the } beginning/end of the history and not to the beginning/end of the line } if called on a single-line buffer The confusion is with the connotation of "beginning". In the case of this particular widget, it means "anywhere on the first line", which for a single-line buffer is ... anywhere. This function happens to be in the class of full-line-motions rather than character- position-motions, despite that not being obvious from the name. You'll note if you pay close attention that when it does beginning-of- history, it often jumps to the end of the first history entry; if the first history entry is a multi-line buffer it'll cycle between the beginning and the end of that buffer. } Jumping to the beginning/end of a line in a multi-line buffer } is just an extra my function does, and not somewhere I think } {beginning,end}-of-buffer-or-history } should do (it's name does not imply any such functionality :) If you care to travel back in time 20 years or so you can take that up with Paul Falstad. :-) Meanwhile ... I think there's an easier way than whatever that is you're doing with buflines and cur_array ... beginning-or-end-of-somewhere() { local hno=$HISTNO zle .${WIDGET:s/somewhere/line-hist/} "$@" if (( HISTNO != hno )); then zle .${WIDGET:s/somewhere/buffer-or-history/} "$@" fi } zle -N beginning-of-somewhere beginning-or-end-of-somewhere zle -N end-of-somewhere beginning-or-end-of-somewhere