Introduction
Introduction Statistics Contact Development Disclaimer Help
tbetter \r handling - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit 0e25d6094f3afc39eea454adcbcb01827906ba3e
parent 7703861002dd128b498b18148ca0b7595bdb22a8
Author: rsc <devnull@localhost>
Date: Tue, 20 Apr 2004 06:49:32 +0000
better \r handling
Diffstat:
M src/cmd/9term/9term.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
---
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
t@@ -88,7 +88,7 @@ void doreshape(void);
void runewrite(Rune*, int);
void consread(void);
void conswrite(char*, int);
-int bswidth(Rune c);
+int bswidth(Rune c, uint start, int eatnl);
void cut(void);
void paste(Rune*, int, int);
void snarfupdate(void);
t@@ -888,7 +888,7 @@ key(Rune r)
case 0x15: /* ^U: erase line */
case 0x17: /* ^W: erase word */
if (t.q0 != 0 && t.q0 != t.qh)
- t.q0 -= bswidth(r);
+ t.q0 -= bswidth(r, t.q0, 1);
cut();
break;
default:
t@@ -900,7 +900,7 @@ key(Rune r)
}
int
-bswidth(Rune c)
+bswidth(Rune c, uint start, int eatnl)
{
uint q, eq, stop;
Rune r;
t@@ -909,7 +909,7 @@ bswidth(Rune c)
/* there is known to be at least one character to erase */
if(c == 0x08) /* ^H: erase character */
return 1;
- q = t.q0;
+ q = start;
stop = 0;
if(q > t.qh)
stop = t.qh;
t@@ -917,7 +917,7 @@ bswidth(Rune c)
while(q > stop){
r = t.r[q-1];
if(r == '\n'){ /* eat at most one more characte…
- if(q == t.q0) /* eat the newline */
+ if(q == start && eatnl) /* eat the newline */
--q;
break;
}
t@@ -930,7 +930,7 @@ bswidth(Rune c)
}
--q;
}
- return t.q0-q;
+ return start-q;
}
int
t@@ -1069,6 +1069,15 @@ runewrite(Rune *r, int n)
initial++;
else
--q;
+ } else if(*p == '\r') { /* treat like ^U */
+ /* convert CR without NL into erased line */
+ /* i feel really sleazy about this but it helps */
+ if(i<n-1 && *(p+1) != '\n'){
+ while(q > r && *(q-1) != '\n')
+ q--;
+ if(q==r)
+ initial = bswidth(0x15, t.qh, 0);
+ }
} else if(*p)
*q++ = *p;
p++;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.