tChange the behavior of word snapping on delimiters - st - [fork] customized bu… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 51466e019a67e9319e6c5a7fa4205842ca860b71 | |
parent c490a60b804f467490cd4d8275a181dc37edef9f | |
Author: Ivan Delalande <[email protected]> | |
Date: Wed, 20 Aug 2014 21:20:44 +0200 | |
Change the behavior of word snapping on delimiters | |
This makes any sequence of identical delimiters be considered a single | |
word in word-snapping mode. This seems more coherent for this mode and | |
is similar to what xterm does. | |
Signed-off-by: Roberto E. Vargas Caballero <[email protected]> | |
Diffstat: | |
M st.c | 11 +++++++++-- | |
1 file changed, 9 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -709,7 +709,8 @@ selected(int x, int y) { | |
void | |
selsnap(int mode, int *x, int *y, int direction) { | |
int newx, newy, xt, yt; | |
- Glyph *gp; | |
+ bool delim, prevdelim; | |
+ Glyph *gp, *prevgp; | |
switch(mode) { | |
case SNAP_WORD: | |
t@@ -717,6 +718,8 @@ selsnap(int mode, int *x, int *y, int direction) { | |
* Snap around if the word wraps around at the end or | |
* beginning of a line. | |
*/ | |
+ prevgp = &term.line[*y][*x]; | |
+ prevdelim = strchr(worddelimiters, prevgp->c[0]) != NULL; | |
for(;;) { | |
newx = *x + direction; | |
newy = *y; | |
t@@ -738,11 +741,15 @@ selsnap(int mode, int *x, int *y, int direction) { | |
break; | |
gp = &term.line[newy][newx]; | |
- if (!(gp->mode & ATTR_WDUMMY) && strchr(worddelimiters… | |
+ delim = strchr(worddelimiters, gp->c[0]) != NULL; | |
+ if(!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim | |
+ || (delim && gp->c[0] != prevgp->c[0])… | |
break; | |
*x = newx; | |
*y = newy; | |
+ prevgp = gp; | |
+ prevdelim = delim; | |
} | |
break; | |
case SNAP_LINE: |