sandy

text editor
git clone git://git.suckless.org/sandy
Log | Files | Refs | README | LICENSE

commit 2510646c243b707b86a7485c37d0db27a11b861d
parent a6da3757abe2a182993876fdf7de26632eca8c9b
Author: Rafael Garcia <rafael.garcia.gallego@gmail.com>
Date:   Thu,  2 Jun 2011 16:36:01 +0200

Better m_(prev|next)word now support several blank spaces in a row.
Diffstat:
TODO | 1-
sandy.c | 26+++++++++++++++-----------
2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/TODO b/TODO @@ -1,5 +1,4 @@ In no particular order, at sandy.c: -- Rework m_*word - Create m_*vline - Bracket matching? - Autoindenting? diff --git a/sandy.c b/sandy.c @@ -1478,24 +1478,28 @@ m_prevchar(Filepos pos) { Filepos /* Advance one word, next line if needed */ m_nextword(Filepos pos) { - Filepos p0; + Filepos p0=m_nextchar(pos); - do { - p0=pos; - pos=m_nextchar(pos); - } while((p0.o!=pos.o || p0.l!=pos.l) && !ISWORDBRK(pos.l->c[pos.o])); + while((p0.o!=pos.o || p0.l!=pos.l) && ISWORDBRK(pos.l->c[pos.o])) + pos=p0, p0=m_nextchar(pos); /* Find the current or next word */ + + do + p0=pos, pos=m_nextchar(pos); /* Move to word end */ + while((p0.o!=pos.o || p0.l!=pos.l) && !ISWORDBRK(pos.l->c[pos.o])); return pos; } Filepos /* Backup one word, previous line if needed */ m_prevword(Filepos pos) { - Filepos p0; + Filepos p0=m_prevchar(pos); + + if(ISWORDBRK(pos.l->c[pos.o])) while((p0.o!=pos.o || p0.l!=pos.l) && ISWORDBRK(pos.l->c[pos.o])) + pos=p0, p0=m_prevchar(pos); /* Find the current or previous word */ + else pos=p0; - pos=m_prevchar(pos); - do { - p0=pos; - pos=m_prevchar(pos); - } while((p0.o!=pos.o || p0.l!=pos.l) && !ISWORDBRK(pos.l->c[pos.o])); + do + p0=pos, pos=m_prevchar(pos); /* Move to word start */ + while((p0.o!=pos.o || p0.l!=pos.l) && !ISWORDBRK(pos.l->c[pos.o])); return p0; }