mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
acme: allow spaces in window names
There are many things we could do to make this work. an environment variable to control the character. Another option would be to use U+00A0 (non-breaking space), which renders the same as space. This change avoids changing the separator character and instead assumes that if the left side of the tag already ends in " Del Snarf |" then what comes before that is the file name. Acme already aggressively preserves the "Del Snarf |", so this should work decently well as a stop-gap. We can always try something else later. Fixes #26. Fixes #104. Fixes #329.
This commit is contained in:
parent
26cae02da7
commit
7b1c85f6e8
2 changed files with 20 additions and 5 deletions
|
@ -610,7 +610,7 @@ expandfile(Text *t, uint q0, uint q1, Expand *e)
|
||||||
if(nname == -1)
|
if(nname == -1)
|
||||||
nname = n;
|
nname = n;
|
||||||
for(i=0; i<nname; i++)
|
for(i=0; i<nname; i++)
|
||||||
if(!isfilec(r[i]))
|
if(!isfilec(r[i]) && r[i] != ' ')
|
||||||
goto Isntfile;
|
goto Isntfile;
|
||||||
/*
|
/*
|
||||||
* See if it's a file name in <>, and turn that into an include
|
* See if it's a file name in <>, and turn that into an include
|
||||||
|
|
|
@ -439,16 +439,31 @@ wincleartag(Window *w)
|
||||||
Rune*
|
Rune*
|
||||||
parsetag(Window *w, int *len)
|
parsetag(Window *w, int *len)
|
||||||
{
|
{
|
||||||
|
static Rune Ldelsnarf[] = { ' ', 'D', 'e', 'l', ' ', 'S', 'n', 'a', 'r', 'f', 0 };
|
||||||
|
static Rune Lspacepipe[] = { ' ', '|', 0 };
|
||||||
|
static Rune Ltabpipe[] = { ' ', '|', 0 };
|
||||||
int i;
|
int i;
|
||||||
Rune *r;
|
Rune *r, *p, *pipe;
|
||||||
|
|
||||||
r = runemalloc(w->tag.file->b.nc+1);
|
r = runemalloc(w->tag.file->b.nc+1);
|
||||||
bufread(&w->tag.file->b, 0, r, w->tag.file->b.nc);
|
bufread(&w->tag.file->b, 0, r, w->tag.file->b.nc);
|
||||||
r[w->tag.file->b.nc] = '\0';
|
r[w->tag.file->b.nc] = '\0';
|
||||||
|
|
||||||
for(i=0; i<w->tag.file->b.nc; i++)
|
/*
|
||||||
if(r[i]==' ' || r[i]=='\t')
|
* " |" or "\t|" ends left half of tag
|
||||||
break;
|
* If we find " Del Snarf" in the left half of the tag
|
||||||
|
* (before the pipe), that ends the file name.
|
||||||
|
*/
|
||||||
|
pipe = runestrstr(r, Lspacepipe);
|
||||||
|
if((p = runestrstr(r, Ltabpipe)) != nil && (pipe == nil || p < pipe))
|
||||||
|
pipe = p;
|
||||||
|
if((p = runestrstr(r, Ldelsnarf)) != nil && (pipe == nil || p < pipe))
|
||||||
|
i = p - r;
|
||||||
|
else {
|
||||||
|
for(i=0; i<w->tag.file->b.nc; i++)
|
||||||
|
if(r[i]==' ' || r[i]=='\t')
|
||||||
|
break;
|
||||||
|
}
|
||||||
*len = i;
|
*len = i;
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue