Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
region_highlight and zle_highlight[paste]
- X-seq: zsh-workers 36445
- From: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: region_highlight and zle_highlight[paste]
- Date: Mon, 7 Sep 2015 21:22:11 +0000
- 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=
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
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))
{
Messages sorted by:
Reverse Date,
Date,
Thread,
Author