From: joe M <joe9mail@gmail.com>
To: zsh-workers@zsh.org
Subject: Re: auto list choices
Date: Fri, 8 Mar 2013 10:48:18 -0500 [thread overview]
Message-ID: <CAHjjW16220P5ZTGvaw=vwJ8vRVerh2RPANU=NrT6p=6v5GnjaQ@mail.gmail.com> (raw)
In-Reply-To: <CAHjjW15L5EOHMKpNgYX4o8Gbugpxxhr3zsAYqbevpNyGin4dkA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 105 bytes --]
Hello,
This code does a list-choices on every self-insert. Might be of
interest to someone.
Thanks
Joe
[-- Attachment #2: 80-auto-list-choices.zsh --]
[-- Type: application/octet-stream, Size: 3047 bytes --]
# basde on
# incremental completion for zsh
# by y.fujii <y-fujii at mimosa-pudica.net>, public domain
zle -N self-insert self-insert-incr
# zle -N vi-backward-delete-char-incr
# bindkey -M viins '^h' vi-backward-delete-char-incr
# bindkey -M viins '^?' vi-backward-delete-char-incr
# to increase the incr-0.2 max matches
export INCR_MAX_MATCHES=60
# function limit-completion () {
# if ((compstate[nmatches] <= 1)); then
# zle -M ""
# elif ((compstate[list_lines] > ${INCR_MAX_MATCHES:-20})); then
# compstate[list]=""
# zle -M "too many matches."
# fi
# }
function limit-completion () {
# got the line comparing with LINES from
# /usr/share/zsh/5.0.2/functions/Zle/incremental-complete-word
if ((compstate[list_lines] > ${INCR_MAX_MATCHES:-20} \
|| compstate[list_lines]+BUFFERLINES+2 > LINES))
then
compstate[list]=''
zle -M "too many matches."
fi
}
function self-insert-incr () {
if zle .self-insert; then
show-choices
# complete-word-incr
fi
}
function vi-backward-delete-char-incr () {
if zle vi-backward-delete-char; then
show-choices
# complete-word-incr
fi
}
function show-choices () {
# local cursor_org
# local buffer_org
# local cursor_now
# local buffer_now
# cursor_org="$CURSOR"
# buffer_org="$BUFFER"
# if [[ "$BUFFER[1]" != "!" ]]
# echo $widgets[list-choices]
# user:_zsh_highlight_widget_list-choices
# mv 91-history-substring-search.zsh \
# 91-history-substring-search.zsh.disable
# rm 90-syntax.zsh
# echo $widgets[list-choices]
# completion:.list-choices:_main_complete
# compinit is redirecting list-choices to _main_complete
# and the _normal called by _main_complete is doing a
# bang expansion as soon as it sees a ! in the string
# Hence, do not call list-choices if there is a ! in that line
# or, instead of filtering $BUFFER on !, unsetopt BANG_HIST
# as list-choices is checking on BANG_HIST before expanding
# the !.
# if [[ "$BUFFER" != *\!* && \
unsetopt localoptions BANG_HIST
# do not list-choices if it is a paste, pending > 0 in such cases
# do not list-choices if editing in the middle of a word
if [[ "$PENDING" -eq 0 && \
( -z "$RBUFFER" || "$RBUFFER[1]" == ' ' )
]]
then
comppostfuncs=(limit-completion)
zle list-choices
fi
# cursor_now="$CURSOR"
# buffer_now="$BUFFER"
}
function complete-word-incr () {
local cursor_org
local buffer_org
local cursor_now
local buffer_now
local lbuffer_now
cursor_org="$CURSOR"
buffer_org="$BUFFER"
comppostfuncs=(limit-completion)
zle complete-word
cursor_now="$CURSOR"
buffer_now="$BUFFER"
lbuffer_now="$LBUFFER"
# if [ "$cursor_now" -gt "$cursor_org" \
# -a "$buffer_org[1,cursor_org]" == "$buffer_now[1,cursor_org]" \
# -a "$lbuffer_now[-1]" == " " ]
# then
# CURSOR="$cursor_org"
# fi
}
# vim: set filetype=zsh shiftwidth=3 tabstop=3 expandtab fileformat=unix
next prev parent reply other threads:[~2013-03-08 15:48 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-07 3:57 joe M
2013-03-07 4:23 ` joe M
2013-03-07 4:35 ` joe M
2013-03-08 15:48 ` joe M [this message]
2013-03-09 15:25 ` Bart Schaefer
2013-03-10 5:45 ` joe M
2013-03-10 18:23 ` Bart Schaefer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAHjjW16220P5ZTGvaw=vwJ8vRVerh2RPANU=NrT6p=6v5GnjaQ@mail.gmail.com' \
--to=joe9mail@gmail.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).