diff options
Diffstat (limited to 'Src/Zle')
-rw-r--r-- | Src/Zle/comp.h | 5 | ||||
-rw-r--r-- | Src/Zle/zle.h | 2 | ||||
-rw-r--r-- | Src/Zle/zle_main.c | 2 | ||||
-rw-r--r-- | Src/Zle/zle_params.c | 30 |
4 files changed, 36 insertions, 3 deletions
diff --git a/Src/Zle/comp.h b/Src/Zle/comp.h index 34da2cabb..023c41814 100644 --- a/Src/Zle/comp.h +++ b/Src/Zle/comp.h @@ -202,8 +202,9 @@ struct cpattern { * TODO: this will change. */ #ifdef MULTIBYTE_SUPPORT -#define PATMATCHRANGE(r, c, ip, mtp) mb_patmatchrange(r, c, ip, mtp) -#define PATMATCHINDEX(r, i, cp, mtp) mb_patmatchindex(r, i, cp, mtp) +#define PATMATCHRANGE(r, c, ip, mtp) \ + mb_patmatchrange(r, c, ZMB_VALID, ip, mtp) +#define PATMATCHINDEX(r, i, cp, mtp) mb_patmatchindex(r, i, cp, mtp) #define CONVCAST(c) ((wchar_t)(c)) #define CHR_INVALID (WEOF) #else diff --git a/Src/Zle/zle.h b/Src/Zle/zle.h index 59f459185..2d672de3b 100644 --- a/Src/Zle/zle.h +++ b/Src/Zle/zle.h @@ -431,6 +431,8 @@ struct region_highlight { * 2: suffix * 3: pasted text */ +/* If you change this, update the documentation of zle_highlight/region_highlight + * interaction in Doc/Zsh/zle.yo. */ #define N_SPECIAL_HIGHLIGHTS (4) diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index e610ae1f3..ec3d2c354 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -1276,7 +1276,7 @@ zleread(char **lp, char **rp, int flags, int context, char *init, char *finish) alarm(0); freeundo(); - if (eofsent || errflag) { + if (eofsent || errflag || exit_pending) { s = NULL; } else { zleline[zlell++] = ZWC('\n'); diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c index b84e72088..000bc388c 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)) { |