summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav Kolomiiets <yarikos@gmail.com>2016-08-18 15:23:32 +0300
committerYaroslav Kolomiiets <yarikos@gmail.com>2016-08-18 15:23:32 +0300
commit7e86c01285e50008148bb359c61f64640a812303 (patch)
tree10e18792f2ec164ee30d8d8da0039681a0807a90
parenta9a2bdd7c75a381b92a3356435a2402fd953ec77 (diff)
acme: handle Home, End keys
-rw-r--r--appl/acme/ecmd.b2
-rw-r--r--appl/acme/look.b4
-rw-r--r--appl/acme/row.b2
-rw-r--r--appl/acme/text.b34
-rw-r--r--appl/acme/text.m2
-rw-r--r--appl/acme/util.b2
-rw-r--r--appl/acme/wind.b2
-rw-r--r--appl/acme/xfid.b8
-rw-r--r--dis/acme.disbin24374 -> 24374 bytes
-rw-r--r--dis/acme/acme.disbin24374 -> 24374 bytes
-rw-r--r--dis/acme/buff.disbin3426 -> 3426 bytes
-rw-r--r--dis/acme/col.disbin9113 -> 9113 bytes
-rw-r--r--dis/acme/dat.disbin587 -> 587 bytes
-rw-r--r--dis/acme/disk.disbin1501 -> 1501 bytes
-rw-r--r--dis/acme/ecmd.disbin15443 -> 15448 bytes
-rw-r--r--dis/acme/edit.disbin6827 -> 6827 bytes
-rw-r--r--dis/acme/elog.disbin3064 -> 3064 bytes
-rw-r--r--dis/acme/exec.disbin19072 -> 19072 bytes
-rw-r--r--dis/acme/file.disbin3490 -> 3490 bytes
-rw-r--r--dis/acme/frame.disbin13561 -> 13561 bytes
-rw-r--r--dis/acme/fsys.disbin9031 -> 9031 bytes
-rw-r--r--dis/acme/graph.disbin633 -> 633 bytes
-rw-r--r--dis/acme/gui.disbin1598 -> 1598 bytes
-rw-r--r--dis/acme/look.disbin9778 -> 9790 bytes
-rw-r--r--dis/acme/regx.disbin11415 -> 11415 bytes
-rw-r--r--dis/acme/row.disbin12127 -> 12133 bytes
-rw-r--r--dis/acme/scrl.disbin1984 -> 1984 bytes
-rw-r--r--dis/acme/text.disbin19148 -> 19443 bytes
-rw-r--r--dis/acme/time.disbin804 -> 804 bytes
-rw-r--r--dis/acme/util.disbin5715 -> 5721 bytes
-rw-r--r--dis/acme/wind.disbin8655 -> 8660 bytes
-rw-r--r--dis/acme/xfid.disbin15877 -> 15900 bytes
32 files changed, 35 insertions, 21 deletions
diff --git a/appl/acme/ecmd.b b/appl/acme/ecmd.b
index c31643f1..e05c4e47 100644
--- a/appl/acme/ecmd.b
+++ b/appl/acme/ecmd.b
@@ -772,7 +772,7 @@ nl_cmd(t: ref Text, cp: ref Cmd): int
addr = lineaddr(1, a, 1);
}
}
- t.show(addr.r.q0, addr.r.q1);
+ t.show(addr.r.q0, addr.r.q1, TRUE);
return TRUE;
}
diff --git a/appl/acme/look.b b/appl/acme/look.b
index 1004b803..ca288d0a 100644
--- a/appl/acme/look.b
+++ b/appl/acme/look.b
@@ -273,7 +273,7 @@ search(ct : ref Text, r : string, n : int) : int
}
if(n <= nb && s.s[b:b+n] == r[0:n]){
if(ct.w != nil){
- ct.show(q, q+n);
+ ct.show(q, q+n, TRUE);
ct.w.settag();
}else{
ct.q0 = q;
@@ -698,7 +698,7 @@ openfile(t : ref Text, e : Expand) : (ref Window, Expand)
r.q0 = t.q0;
r.q1 = t.q1;
}
- t.show(r.q0, r.q1);
+ t.show(r.q0, r.q1, TRUE);
t.w.settag();
seltext = t;
if(e.jump)
diff --git a/appl/acme/row.b b/appl/acme/row.b
index 478ec930..5e1a3775 100644
--- a/appl/acme/row.b
+++ b/appl/acme/row.b
@@ -714,7 +714,7 @@ Row.loadx(row : self ref Row, file : string, initing : int)
}
if(q0>w.body.file.buf.nc || q1>w.body.file.buf.nc || q0>q1)
q0 = q1 = 0;
- w.body.show(q0, q1);
+ w.body.show(q0, q1, TRUE);
w.maxlines = min(w.body.frame.nlines, max(w.maxlines, w.body.frame.maxlines));
}
b.close();
diff --git a/appl/acme/text.b b/appl/acme/text.b
index 953a08ea..32c31ee6 100644
--- a/appl/acme/text.b
+++ b/appl/acme/text.b
@@ -130,8 +130,10 @@ KF : con 16rF000;
Kup : con KF | 16r0E;
Kleft : con KF | 16r11;
Kright : con KF | 16r12;
+Kend : con KF | 16r18;
Kdown : con 16r80;
+
nulltext : Text;
newtext() : ref Text
@@ -181,7 +183,7 @@ Text.redraw(t : self ref Text, r : Rect, f : ref Draw->Font, b : ref Image, odx
if(t.frame.maxlines > 0){
t.reset();
t.columnate(t.w.dlp, t.w.ndl);
- t.show(0, 0);
+ t.show(0, 0, TRUE);
}
}else{
t.fill();
@@ -712,19 +714,27 @@ Text.typex(t : self ref Text, r : int, echomode : int)
q0 = t.backnl(t.org, n);
t.setorigin(q0, FALSE);
return;
+ Keyboard->Home =>
+ t.commit(TRUE);
+ t.show(0, 0, FALSE);
+ return;
+ Kend or Keyboard->End =>
+ t.commit(TRUE);
+ t.show(t.file.buf.nc, t.file.buf.nc, FALSE);
+ return;
Kleft or Keyboard->Left =>
t.commit(TRUE);
if(t.q0 != t.q1)
- t.show(t.q0, t.q0);
+ t.show(t.q0, t.q0, TRUE);
else if(t.q0 != 0)
- t.show(t.q0-1, t.q0-1);
+ t.show(t.q0-1, t.q0-1, TRUE);
return;
Kright or Keyboard->Right =>
t.commit(TRUE);
if(t.q0 != t.q1)
- t.show(t.q1, t.q1);
+ t.show(t.q1, t.q1, TRUE);
else if(t.q1 != t.file.buf.nc)
- t.show(t.q1+1, t.q1+1);
+ t.show(t.q1+1, t.q1+1, TRUE);
return;
}
if(t.what == Body){
@@ -737,11 +747,11 @@ Text.typex(t : self ref Text, r : int, echomode : int)
exec->cut(t, t, TRUE, TRUE);
t.eq0 = ~0;
if (r == 16r08 || r == 16r7f){ # erase character : odd if a char then erased
- t.show(t.q0, t.q0);
+ t.show(t.q0, t.q0,TRUE);
return;
}
}
- t.show(t.q0, t.q0);
+ t.show(t.q0, t.q0, TRUE);
case(r){
16r1B =>
if(t.eq0 != ~0)
@@ -1007,17 +1017,21 @@ Text.select(t : self ref Text, double : int)
}
}
-Text.show(t : self ref Text, q0 : int, q1 : int)
+Text.show(t : self ref Text, q0 : int, q1 : int, doselect : int)
{
qe : int;
nl : int;
q : int;
- if(t.what != Body)
+ if(t.what != Body){
+ if(doselect)
+ t.setselect(q0, q1);
return;
+ }
if(t.w!=nil && t.frame.maxlines==0)
t.col.grow(t.w, 1, 0);
- t.setselect(q0, q1);
+ if(doselect)
+ t.setselect(q0, q1);
qe = t.org+t.frame.nchars;
if(t.org<=q0 && (q0<qe || (q0==qe && qe==t.file.buf.nc+t.ncache)))
scrdraw(t);
diff --git a/appl/acme/text.m b/appl/acme/text.m
index 1c258be3..3343f9b0 100644
--- a/appl/acme/text.m
+++ b/appl/acme/text.m
@@ -42,7 +42,7 @@ Textm : module {
select3 : fn(t : self ref Text, p: int, q : int) : (int, int, int);
setselect : fn(t : self ref Text, p : int, q : int);
setselect0 : fn(t : self ref Text, p : int, q : int);
- show : fn(t : self ref Text, p : int, q : int);
+ show : fn(t : self ref Text, p : int, q : int, dosel : int);
fill : fn(t : self ref Text);
commit : fn(t : self ref Text, n : int);
setorigin : fn(t : self ref Text, p : int, q : int);
diff --git a/appl/acme/util.b b/appl/acme/util.b
index b2930c35..3a7acbd2 100644
--- a/appl/acme/util.b
+++ b/appl/acme/util.b
@@ -536,7 +536,7 @@ warning(md : ref Mntdir, s : string)
w.owner = 'E';
w.commit(t);
(q0, n) = t.bsinsert(t.file.buf.nc, s, len s, TRUE);
- t.show(q0, q0+n);
+ t.show(q0, q0+n, TRUE);
t.w.settag();
scrl->scrdraw(t);
w.owner = owner;
diff --git a/appl/acme/wind.b b/appl/acme/wind.b
index aa4e1950..96b7cb62 100644
--- a/appl/acme/wind.b
+++ b/appl/acme/wind.b
@@ -267,7 +267,7 @@ Window.undo(w : self ref Window, isundo : int)
w.utflastqid = -1;
body = w.body;
(body.q0, body.q1) = body.file.undo(isundo, body.q0, body.q1);
- body.show(body.q0, body.q1);
+ body.show(body.q0, body.q1, TRUE);
f = body.file;
for(i=0; i<f.ntext; i++){
v = f.text[i].w;
diff --git a/appl/acme/xfid.b b/appl/acme/xfid.b
index 85d9da9f..52a46193 100644
--- a/appl/acme/xfid.b
+++ b/appl/acme/xfid.b
@@ -321,7 +321,7 @@ Xfid.close(x : self ref Xfid)
t :=w.body;
# before: only did this if !w->noscroll, but that didn't seem right in practice
t.show(min(w.wrselrange.q0, t.file.buf.nc),
- min(w.wrselrange.q1, t.file.buf.nc));
+ min(w.wrselrange.q1, t.file.buf.nc), TRUE);
scrdraw(t);
QWconsctl=>
w.echomode = EM_NORMAL;
@@ -535,7 +535,7 @@ Xfid.write(x : self ref Xfid)
if(tq1 >= q0)
tq1 += nr;
if(!t.w.noscroll)
- t.show(tq0, tq1);
+ t.show(tq0, tq1, TRUE);
scrdraw(t);
w.settag();
r = nil;
@@ -586,7 +586,7 @@ Xfid.write(x : self ref Xfid)
}
(q0, nr) = t.bsinsert(q0, r, nr, TRUE);
if(qid!=QWwrsel && !t.w.noscroll)
- t.show(q0+nr, q0+nr);
+ t.show(q0+nr, q0+nr, TRUE);
scrdraw(t);
}else
t.insert(q0, r, nr, TRUE, 0);
@@ -642,7 +642,7 @@ loop :
}else
if(strncmp(p, "show", 4) == 0){ # show dot
t = w.body;
- t.show(t.q0, t.q1);
+ t.show(t.q0, t.q1, TRUE);
m = 4;
}else
if(strncmp(p, "name ", 5) == 0){ # set file name
diff --git a/dis/acme.dis b/dis/acme.dis
index 2695ae4b..1cecd618 100644
--- a/dis/acme.dis
+++ b/dis/acme.dis
Binary files differ
diff --git a/dis/acme/acme.dis b/dis/acme/acme.dis
index 2695ae4b..1cecd618 100644
--- a/dis/acme/acme.dis
+++ b/dis/acme/acme.dis
Binary files differ
diff --git a/dis/acme/buff.dis b/dis/acme/buff.dis
index ab4080fa..b0ce8cd2 100644
--- a/dis/acme/buff.dis
+++ b/dis/acme/buff.dis
Binary files differ
diff --git a/dis/acme/col.dis b/dis/acme/col.dis
index 13095a98..aa5ef7a9 100644
--- a/dis/acme/col.dis
+++ b/dis/acme/col.dis
Binary files differ
diff --git a/dis/acme/dat.dis b/dis/acme/dat.dis
index 20c9d895..364d37cc 100644
--- a/dis/acme/dat.dis
+++ b/dis/acme/dat.dis
Binary files differ
diff --git a/dis/acme/disk.dis b/dis/acme/disk.dis
index a68f0c29..a31cc952 100644
--- a/dis/acme/disk.dis
+++ b/dis/acme/disk.dis
Binary files differ
diff --git a/dis/acme/ecmd.dis b/dis/acme/ecmd.dis
index 1285f17f..5794e5b3 100644
--- a/dis/acme/ecmd.dis
+++ b/dis/acme/ecmd.dis
Binary files differ
diff --git a/dis/acme/edit.dis b/dis/acme/edit.dis
index 5fbd24da..e412bf02 100644
--- a/dis/acme/edit.dis
+++ b/dis/acme/edit.dis
Binary files differ
diff --git a/dis/acme/elog.dis b/dis/acme/elog.dis
index cc7ef681..dee3acd3 100644
--- a/dis/acme/elog.dis
+++ b/dis/acme/elog.dis
Binary files differ
diff --git a/dis/acme/exec.dis b/dis/acme/exec.dis
index a9e17a78..a7f39e1a 100644
--- a/dis/acme/exec.dis
+++ b/dis/acme/exec.dis
Binary files differ
diff --git a/dis/acme/file.dis b/dis/acme/file.dis
index 5658d5b7..62e7367b 100644
--- a/dis/acme/file.dis
+++ b/dis/acme/file.dis
Binary files differ
diff --git a/dis/acme/frame.dis b/dis/acme/frame.dis
index 5f786c4e..2582f867 100644
--- a/dis/acme/frame.dis
+++ b/dis/acme/frame.dis
Binary files differ
diff --git a/dis/acme/fsys.dis b/dis/acme/fsys.dis
index a7513375..4ccfdaae 100644
--- a/dis/acme/fsys.dis
+++ b/dis/acme/fsys.dis
Binary files differ
diff --git a/dis/acme/graph.dis b/dis/acme/graph.dis
index af56722c..87949cee 100644
--- a/dis/acme/graph.dis
+++ b/dis/acme/graph.dis
Binary files differ
diff --git a/dis/acme/gui.dis b/dis/acme/gui.dis
index 04288ef5..90535d6f 100644
--- a/dis/acme/gui.dis
+++ b/dis/acme/gui.dis
Binary files differ
diff --git a/dis/acme/look.dis b/dis/acme/look.dis
index 7a820e42..1d03b1fd 100644
--- a/dis/acme/look.dis
+++ b/dis/acme/look.dis
Binary files differ
diff --git a/dis/acme/regx.dis b/dis/acme/regx.dis
index 3d10e557..88e990c8 100644
--- a/dis/acme/regx.dis
+++ b/dis/acme/regx.dis
Binary files differ
diff --git a/dis/acme/row.dis b/dis/acme/row.dis
index b5165023..5ec6dd27 100644
--- a/dis/acme/row.dis
+++ b/dis/acme/row.dis
Binary files differ
diff --git a/dis/acme/scrl.dis b/dis/acme/scrl.dis
index 121dfdc2..8f2c2ef2 100644
--- a/dis/acme/scrl.dis
+++ b/dis/acme/scrl.dis
Binary files differ
diff --git a/dis/acme/text.dis b/dis/acme/text.dis
index 750cd219..ef06f6f2 100644
--- a/dis/acme/text.dis
+++ b/dis/acme/text.dis
Binary files differ
diff --git a/dis/acme/time.dis b/dis/acme/time.dis
index f422b832..dce289a1 100644
--- a/dis/acme/time.dis
+++ b/dis/acme/time.dis
Binary files differ
diff --git a/dis/acme/util.dis b/dis/acme/util.dis
index bb157a1a..4fedf6b5 100644
--- a/dis/acme/util.dis
+++ b/dis/acme/util.dis
Binary files differ
diff --git a/dis/acme/wind.dis b/dis/acme/wind.dis
index aa744258..aacb6c4b 100644
--- a/dis/acme/wind.dis
+++ b/dis/acme/wind.dis
Binary files differ
diff --git a/dis/acme/xfid.dis b/dis/acme/xfid.dis
index f02bd302..35c96111 100644
--- a/dis/acme/xfid.dis
+++ b/dis/acme/xfid.dis
Binary files differ