mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
acme: scroll a directory window when navigating if:
- the cursor is on the last line - the navigation would put the cursor over the tag of the following text R=rsc CC=smckean83 https://codereview.appspot.com/15280045
This commit is contained in:
parent
075c3bdc54
commit
5a69e405fc
3 changed files with 29 additions and 4 deletions
13
plumb/basic
13
plumb/basic
|
@ -59,9 +59,18 @@ arg isfile $0
|
||||||
plumb to openoffice
|
plumb to openoffice
|
||||||
plumb start openoffice $file
|
plumb start openoffice $file
|
||||||
|
|
||||||
# existing files tagged by line number:columnumber or linenumber.columnumber, go to editor
|
# existing files tagged by line number:columnumber or linenumber.columnumber, twice, go to editor
|
||||||
type is text
|
type is text
|
||||||
data matches '([.a-zA-Z¡-0-9_/\-]*[a-zA-Z¡-0-9_/\-])'$twocolonaddr'
|
data matches '([.a-zA-Z¡-0-9_/\-]*[a-zA-Z¡-0-9_/\-])':$twocolonaddr,$twocolonaddr
|
||||||
|
arg isfile $1
|
||||||
|
data set $file
|
||||||
|
attr add addr=$2-#1+#$3,$4-#1+#$5
|
||||||
|
plumb to edit
|
||||||
|
plumb client $editor
|
||||||
|
|
||||||
|
# existing files tagged by line number:columnumber or linenumber.columnumber, twice, go to editor
|
||||||
|
type is text
|
||||||
|
data matches '([.a-zA-Z¡-0-9_/\-]*[a-zA-Z¡-0-9_/\-])':$twocolonaddr
|
||||||
arg isfile $1
|
arg isfile $1
|
||||||
data set $file
|
data set $file
|
||||||
attr add addr=$2-#1+#$3
|
attr add addr=$2-#1+#$3
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
addrelem='((#?[0-9]+)|(/[A-Za-z0-9_\^]+/?)|[.$])'
|
addrelem='((#?[0-9]+)|(/[A-Za-z0-9_\^]+/?)|[.$])'
|
||||||
addr=:($addrelem([,;+\-]$addrelem)*)
|
addr=:($addrelem([,;+\-]$addrelem)*)
|
||||||
|
|
||||||
twocolonaddr = :([0-9]+)[:.]([0-9]+)
|
twocolonaddr = ([0-9]+)[:.]([0-9]+)
|
||||||
|
|
|
@ -808,6 +808,7 @@ texttype(Text *t, Rune r)
|
||||||
switch(r){
|
switch(r){
|
||||||
case 0x06: /* ^F: complete */
|
case 0x06: /* ^F: complete */
|
||||||
case Kins:
|
case Kins:
|
||||||
|
typecommit(t);
|
||||||
rp = textcomplete(t);
|
rp = textcomplete(t);
|
||||||
if(rp == nil)
|
if(rp == nil)
|
||||||
return;
|
return;
|
||||||
|
@ -1079,6 +1080,8 @@ textshow(Text *t, uint q0, uint q1, int doselect)
|
||||||
{
|
{
|
||||||
int qe;
|
int qe;
|
||||||
int nl;
|
int nl;
|
||||||
|
int tsd;
|
||||||
|
int nc;
|
||||||
uint q;
|
uint q;
|
||||||
|
|
||||||
if(t->what != Body){
|
if(t->what != Body){
|
||||||
|
@ -1091,7 +1094,20 @@ textshow(Text *t, uint q0, uint q1, int doselect)
|
||||||
if(doselect)
|
if(doselect)
|
||||||
textsetselect(t, q0, q1);
|
textsetselect(t, q0, q1);
|
||||||
qe = t->org+t->fr.nchars;
|
qe = t->org+t->fr.nchars;
|
||||||
if(t->org<=q0 && (q0<qe || (q0==qe && qe==t->file->b.nc+t->ncache)))
|
tsd = FALSE; /* do we call textscrdraw? */
|
||||||
|
nc = t->file->b.nc+t->ncache;
|
||||||
|
if(t->org <= q0){
|
||||||
|
if(nc==0 || q0<qe)
|
||||||
|
tsd = TRUE;
|
||||||
|
else if(q0==qe && qe==nc){
|
||||||
|
if(textreadc(t, nc-1) == '\n'){
|
||||||
|
if(t->fr.nlines<t->fr.maxlines)
|
||||||
|
tsd = TRUE;
|
||||||
|
}else
|
||||||
|
tsd = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(tsd)
|
||||||
textscrdraw(t);
|
textscrdraw(t);
|
||||||
else{
|
else{
|
||||||
if(t->w->nopen[QWevent] > 0)
|
if(t->w->nopen[QWevent] > 0)
|
||||||
|
|
Loading…
Reference in a new issue