diff options
| -rw-r--r-- | Src/Zle/iwidgets.list | 1 | ||||
| -rw-r--r-- | Src/Zle/zle_move.c | 74 |
2 files changed, 75 insertions, 0 deletions
diff --git a/Src/Zle/iwidgets.list b/Src/Zle/iwidgets.list index 2b2654c5d..183d75c17 100644 --- a/Src/Zle/iwidgets.list +++ b/Src/Zle/iwidgets.list @@ -83,6 +83,7 @@ "list-choices", listchoices, ZLE_MENUCMP | ZLE_KEEPSUFFIX | ZLE_LASTCOL | ZLE_ISCOMP "list-expand", listexpand, ZLE_MENUCMP | ZLE_KEEPSUFFIX | ZLE_LASTCOL "magic-space", magicspace, ZLE_KEEPSUFFIX | ZLE_MENUCMP +"match-bracket", matchbracket, ZLE_KEEPSUFFIX | ZLE_MENUCMP "menu-complete", menucomplete, ZLE_MENUCMP | ZLE_KEEPSUFFIX | ZLE_ISCOMP "menu-expand-or-complete", menuexpandorcomplete, ZLE_MENUCMP | ZLE_KEEPSUFFIX | ZLE_ISCOMP "neg-argument", negargument, ZLE_MENUCMP | ZLE_KEEPSUFFIX | ZLE_LASTCOL | ZLE_NOTCOMMAND diff --git a/Src/Zle/zle_move.c b/Src/Zle/zle_move.c index 155fda80d..1a2ab2e00 100644 --- a/Src/Zle/zle_move.c +++ b/Src/Zle/zle_move.c @@ -591,6 +591,80 @@ vigotocolumn(UNUSED(char **args)) /**/ int +matchbracket(char **args) +{ + int ocs = zlecs, dir, ct; + unsigned char oth, me; + + if (*args) { + char *end = NULL; + zlecs = zstrtol(*args, &end, 10); + if (end && end != *args && *end == '\0') + args++; + else + zlecs = ocs; + } + + if (zlecs == zlell || zleline[zlecs] == '\n') { + zlecs = ocs; + return 1; + } + switch (me = zleline[zlecs]) { |
