mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-10 12:40:58 +02:00
Aaron Scrab: 30604: make repeating vi skip character useful by ignoring
character just matched
This commit is contained in:
parent
3e39278c24
commit
1c0ed3b498
2 changed files with 28 additions and 8 deletions
|
@ -1,5 +1,8 @@
|
||||||
2012-08-13 Peter Stephenson <pws@csr.com>
|
2012-08-13 Peter Stephenson <pws@csr.com>
|
||||||
|
|
||||||
|
* Aaron Schrab: 30604: Src/Zle/zle_move.c: make repeating vi skip
|
||||||
|
character useful by ignoring character just matched.
|
||||||
|
|
||||||
* Aaron Schrab: 30603: Src/Zle/zle_move.c: repeating vi skip
|
* Aaron Schrab: 30603: Src/Zle/zle_move.c: repeating vi skip
|
||||||
characters commands caused bad positioning.
|
characters commands caused bad positioning.
|
||||||
|
|
||||||
|
@ -16482,5 +16485,5 @@
|
||||||
|
|
||||||
*****************************************************
|
*****************************************************
|
||||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||||
* $Revision: 1.5687 $
|
* $Revision: 1.5688 $
|
||||||
*****************************************************
|
*****************************************************
|
||||||
|
|
|
@ -679,7 +679,7 @@ vifindnextchar(char **args)
|
||||||
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
||||||
vfinddir = 1;
|
vfinddir = 1;
|
||||||
tailadd = 0;
|
tailadd = 0;
|
||||||
return virepeatfind(args);
|
return vifindchar(0, args);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -691,7 +691,7 @@ vifindprevchar(char **args)
|
||||||
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
||||||
vfinddir = -1;
|
vfinddir = -1;
|
||||||
tailadd = 0;
|
tailadd = 0;
|
||||||
return virepeatfind(args);
|
return vifindchar(0, args);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -703,7 +703,7 @@ vifindnextcharskip(char **args)
|
||||||
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
||||||
vfinddir = 1;
|
vfinddir = 1;
|
||||||
tailadd = -1;
|
tailadd = -1;
|
||||||
return virepeatfind(args);
|
return vifindchar(0, args);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -715,14 +715,14 @@ vifindprevcharskip(char **args)
|
||||||
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
if ((vfindchar = vigetkey()) != ZLEEOF) {
|
||||||
vfinddir = -1;
|
vfinddir = -1;
|
||||||
tailadd = 1;
|
tailadd = 1;
|
||||||
return virepeatfind(args);
|
return vifindchar(0, args);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
int
|
int
|
||||||
virepeatfind(char **args)
|
vifindchar(int repeat, char **args)
|
||||||
{
|
{
|
||||||
int ocs = zlecs, n = zmult;
|
int ocs = zlecs, n = zmult;
|
||||||
|
|
||||||
|
@ -735,6 +735,16 @@ virepeatfind(char **args)
|
||||||
zmult = n;
|
zmult = n;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
if (repeat && tailadd != 0) {
|
||||||
|
if (vfinddir > 0) {
|
||||||
|
if(zlecs < zlell && (ZLE_INT_T)zleline[zlecs+1] == vfindchar)
|
||||||
|
INCCS();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(zlecs > 0 && (ZLE_INT_T)zleline[zlecs-1] == vfindchar)
|
||||||
|
DECCS();
|
||||||
|
}
|
||||||
|
}
|
||||||
while (n--) {
|
while (n--) {
|
||||||
do {
|
do {
|
||||||
if (vfinddir > 0)
|
if (vfinddir > 0)
|
||||||
|
@ -758,6 +768,13 @@ virepeatfind(char **args)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
int
|
||||||
|
virepeatfind(char **args)
|
||||||
|
{
|
||||||
|
return vifindchar(1, args);
|
||||||
|
}
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
int
|
int
|
||||||
virevrepeatfind(char **args)
|
virevrepeatfind(char **args)
|
||||||
|
@ -766,13 +783,13 @@ virevrepeatfind(char **args)
|
||||||
|
|
||||||
if (zmult < 0) {
|
if (zmult < 0) {
|
||||||
zmult = -zmult;
|
zmult = -zmult;
|
||||||
ret = virepeatfind(args);
|
ret = vifindchar(1, args);
|
||||||
zmult = -zmult;
|
zmult = -zmult;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
tailadd = -tailadd;
|
tailadd = -tailadd;
|
||||||
vfinddir = -vfinddir;
|
vfinddir = -vfinddir;
|
||||||
ret = virepeatfind(args);
|
ret = vifindchar(1, args);
|
||||||
vfinddir = -vfinddir;
|
vfinddir = -vfinddir;
|
||||||
tailadd = -tailadd;
|
tailadd = -tailadd;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue