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:
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;
}