From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27578 invoked by alias); 7 Sep 2015 21:22:16 -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: 36445 Received: (qmail 27204 invoked from network); 7 Sep 2015 21:22:15 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= daniel.shahaf.name; h=content-type:date:from:message-id :mime-version:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=iBT A7PpQfljXyJIxaDWaLT2WmSY=; b=lybkyoH4bqBnV7fhzBuSX0kXHhBU1sSbd47 L4M4P4bPaJRX0sDrFEOyzt0YugU7Xki/bmcqwcjXMBFw2RDOzpCJ8qOfnd2RTz74 OOlQu9GqUW+WYpt/OLIps8RMCgK0FYeUshkb2T7zl5LLh9oP4XouTgcMD9ooZoZ6 fD+WYeK8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=iB TA7PpQfljXyJIxaDWaLT2WmSY=; b=Mss9keKDwCsIacHYUICnl8d2oRGZLf9jYr EWg1c+n0tuDMcM+4eFOpg2WMdP742ulvfTKRLGCDbnG+KJGJ+XQKbg9uG4PsSurJ KW6wYu1xw71phKeHIeyhdMC6ffIMUypgogRjhgfzLp//cRFOazvEb4K32lv431/B To5cv9so4= X-Sasl-enc: i6Q5w9Opv4LwHU1OHXsbt+o1gFxOVwK3HARhR4b1ugFL 1441660933 Date: Mon, 7 Sep 2015 21:22:11 +0000 From: Daniel Shahaf To: zsh-workers@zsh.org Subject: region_highlight and zle_highlight[paste] Message-ID: <20150907212211.GB9512@tarsus.local2> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Since region_highlight overrides zle_highlight[paste], as a widget writer I'd like to know what part of $BUFFER is being paste-highlighted, in order to avoid setting region_highlight entries for it. Does this seem reasonable? Daniel diff --git a/Doc/Zsh/zle.yo b/Doc/Zsh/zle.yo index 4e93695..51e8a24 100644 --- a/Doc/Zsh/zle.yo +++ b/Doc/Zsh/zle.yo @@ -1000,6 +1000,18 @@ executed; the second argument that followed tt(zle -C) when the widget was defined. This is the name of a builtin completion widget. For widgets defined with tt(zle -N) this is set to the empty string. Read-only. ) +vindex(YANK_ACTIVE) +vindex(YANK_START) +vindex(YANK_END) +xitem(tt(YANK_ACTIVE) (integer)) +xitem(tt(YANK_START) (integer)) +xitem(tt(YANK_END) (integer))( +These three parameters indicate whether text has just been yanked (pasted) +into the buffer. tt(YANK_START) and tt(YANK_END) are in the same unit sas +tt(CURSOR), and are only valid when tt(YANK_ACTIVE) is non-zero. + +All three are read-only. +) vindex(ZLE_STATE) item(tt(ZLE_STATE) (scalar))( Contains a set of space-separated words that describe the current tt(zle) diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c index b84e720..000bc38 100644 --- a/Src/Zle/zle_params.c +++ b/Src/Zle/zle_params.c @@ -97,6 +97,12 @@ static const struct gsu_integer undo_change_no_gsu = { get_undo_current_change, NULL, zleunsetfn }; static const struct gsu_integer undo_limit_no_gsu = { get_undo_limit_change, set_undo_limit_change, zleunsetfn }; +static const struct gsu_integer yankstart_gsu = +{ get_yankstart, NULL, zleunsetfn }; +static const struct gsu_integer yankend_gsu = +{ get_yankend, NULL, zleunsetfn }; +static const struct gsu_integer yankactive_gsu = +{ get_yankactive, NULL, zleunsetfn }; static const struct gsu_array killring_gsu = { get_killring, set_killring, unset_killring }; @@ -143,6 +149,9 @@ static struct zleparam { { "WIDGET", PM_SCALAR | PM_READONLY, GSU(widget_gsu), NULL }, { "WIDGETFUNC", PM_SCALAR | PM_READONLY, GSU(widgetfunc_gsu), NULL }, { "WIDGETSTYLE", PM_SCALAR | PM_READONLY, GSU(widgetstyle_gsu), NULL }, + { "YANK_START", PM_INTEGER | PM_READONLY, GSU(yankstart_gsu), NULL }, + { "YANK_END", PM_INTEGER | PM_READONLY, GSU(yankend_gsu), NULL }, + { "YANK_ACTIVE", PM_INTEGER | PM_READONLY, GSU(yankactive_gsu), NULL }, { "ZLE_STATE", PM_SCALAR | PM_READONLY, GSU(zle_state_gsu), NULL }, { NULL, 0, NULL, NULL } }; @@ -477,6 +486,27 @@ get_pending(UNUSED(Param pm)) } /**/ +static zlong +get_yankstart(UNUSED(Param pm)) +{ + return yankb; +} + +/**/ +static zlong +get_yankend(UNUSED(Param pm)) +{ + return yanke; +} + +/**/ +static zlong +get_yankactive(UNUSED(Param pm)) +{ + return lastcmd & ZLE_YANK; +} + +/**/ static char * get_cutbuffer(UNUSED(Param pm)) {