See notework.txt
This commit is contained in:
parent
fccc4c09e3
commit
1c39b5e099
@ -12,6 +12,17 @@ ______________________________________________________________________
|
||||
Notes for GoldED+ 1.1.5, /snapshot/
|
||||
______________________________________________________________________
|
||||
|
||||
! Some actions will not reload message if it is not required.
|
||||
|
||||
+ Added possibility to specify AKA in AREASEP:
|
||||
|
||||
AREASEP <echoid> <"desc"> <group> <type> <aka>
|
||||
|
||||
! AREALISTSORT changed again. Added 'p' for personal mail presence,
|
||||
'u' for unread mail presence, and 'S' for overriding default sorting
|
||||
for criterias which are not applicable for AREASEP (F.e. try
|
||||
"PYTGSUE", "TSPYGUE", etc.).
|
||||
|
||||
- Fixed "EditChangeDate Always" operation.
|
||||
|
||||
! AREALISTSORT letters a bit changed in the way they processed:
|
||||
|
@ -642,6 +642,13 @@ void AreaList::GetAreaSep(char* val) {
|
||||
if(not GetAreaFirstPart(aa, key, val))
|
||||
return;
|
||||
|
||||
// Get aka
|
||||
getkeyval(&key, &val);
|
||||
if(not CFG->aka.empty()) // Seed aka with main address
|
||||
aa.aka = CFG->aka[0].addr;
|
||||
|
||||
aa.aka.set(key);
|
||||
|
||||
AddNewArea(&aa);
|
||||
}
|
||||
|
||||
|
@ -94,11 +94,13 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
||||
const Area* B = b;
|
||||
int cmp = 0;
|
||||
|
||||
bool sepfirst = false;
|
||||
|
||||
bool rev = false;
|
||||
char* ptr = AL.sortspec;
|
||||
|
||||
while(*ptr) {
|
||||
switch(toupper(*ptr)) {
|
||||
switch(*ptr) {
|
||||
case '-':
|
||||
rev = true;
|
||||
A = b; B = a;
|
||||
@ -108,26 +110,37 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
||||
A = a; B = b;
|
||||
break;
|
||||
case 'A':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
break;
|
||||
case 'a':
|
||||
if((cmp = A->aka().compare(B->aka())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'B':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
case 'b':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
if((cmp = compare_two(A->board(), B->board())) != 0)
|
||||
else if(A->isseparator()) {
|
||||
if(B->board())
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->board())
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(A->board(), B->board())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'D':
|
||||
case 'd':
|
||||
if((cmp = stricmp(A->desc(), B->desc())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'E':
|
||||
case 'e':
|
||||
if((cmp = stricmp(A->echoid(), B->echoid())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'F':
|
||||
case 'f':
|
||||
if(*area_maybe) {
|
||||
register bool amay = striinc(area_maybe, A->echoid()) ? true : false;
|
||||
register bool bmay = striinc(area_maybe, B->echoid()) ? true : false;
|
||||
@ -137,18 +150,36 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
||||
}
|
||||
break;
|
||||
case 'G':
|
||||
case 'g':
|
||||
if((cmp = compare_groups(A->groupid(), B->groupid())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'M':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
case 'm':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
if((cmp = compare_two(A->ismarked(), B->ismarked())) != 0)
|
||||
else if(A->isseparator()) {
|
||||
if(B->ismarked())
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->ismarked())
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(A->ismarked(), B->ismarked())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'P':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else if(A->isseparator()) {
|
||||
if(B->PMrk.Count())
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->PMrk.Count())
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else {
|
||||
register int aunread = A->PMrk.Count();
|
||||
register int bunread = B->PMrk.Count();
|
||||
@ -159,17 +190,41 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
||||
return cmp;
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else if(A->isseparator()) {
|
||||
if(B->PMrk.Count())
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->PMrk.Count())
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(B->PMrk.Count()?1:0, A->PMrk.Count()?1:0)) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'O':
|
||||
case 'o':
|
||||
if((cmp = compare_two(A->areaid(), B->areaid())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'T':
|
||||
case 't':
|
||||
if((cmp = compare_two(CFG->areatypeorder[A->type()&0xFF], CFG->areatypeorder[B->type()&0xFF])) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'U':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else if(A->isseparator()) {
|
||||
if(B->unread)
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->unread)
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else {
|
||||
register int aunread = A->unread;
|
||||
register int bunread = B->unread;
|
||||
@ -180,36 +235,73 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
||||
return cmp;
|
||||
}
|
||||
break;
|
||||
case 'X':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
case 'u':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
if((cmp = compare_two(A->msgbase(), B->msgbase())) != 0)
|
||||
else if(A->isseparator()) {
|
||||
if(B->unread)
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->unread)
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(B->unread?1:0, A->unread?1:0)) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'X':
|
||||
case 'x':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else if(A->isseparator()) {
|
||||
if(B->msgbase())
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->msgbase())
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(A->msgbase(), B->msgbase())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'Y':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
case 'y':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else {
|
||||
register bool anew = A->isvalidchg and A->isunreadchg;
|
||||
register bool bnew = B->isvalidchg and B->isunreadchg;
|
||||
|
||||
// New mail _first_
|
||||
if((cmp = compare_two(bnew, anew)) != 0)
|
||||
return cmp;
|
||||
else if(A->isseparator()) {
|
||||
if(B->isnewmail())
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->isnewmail())
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(B->isnewmail(), A->isnewmail())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'Z':
|
||||
if(a->isseparator() or b->isseparator())
|
||||
case 'z':
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else if(A->isseparator())
|
||||
return sepfirst?-1:1;
|
||||
else if(B->isseparator())
|
||||
return sepfirst?1:-1;
|
||||
else if((cmp = stricmp(A->path(), B->path())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'S':
|
||||
case 's':
|
||||
sepfirst = not rev;
|
||||
break;
|
||||
}
|
||||
ptr++;
|
||||
}
|
||||
|
||||
if(cmp == 0)
|
||||
return compare_two(b->isseparator(), a->isseparator());
|
||||
if(cmp == 0) {
|
||||
cmp = compare_two(b->isseparator(), a->isseparator());
|
||||
return sepfirst?-cmp:cmp;
|
||||
}
|
||||
|
||||
return cmp;
|
||||
}
|
||||
|
@ -432,8 +432,13 @@ void DoKludges(int mode, GMsg* msg, int kludges) {
|
||||
quot[0] = NUL;
|
||||
sprintf(buf, "%s%sTo: %s%s%s <%s>", rfc, AA->isnewsgroup() ? "X-" : "", quot, buf2, quot, _toaddr);
|
||||
}
|
||||
else
|
||||
sprintf(buf, "%s%sTo: %s", rfc, AA->isnewsgroup() ? "X-" : "", ptr);
|
||||
else if(stricmp(_toname, AA->Whoto())) {
|
||||
mime_header_encode(buf2, _toname, msg);
|
||||
char quot[2] = "\"";
|
||||
if((buf2[0] == '\"') or (strpbrk(buf2, " \t") == NULL))
|
||||
quot[0] = NUL;
|
||||
sprintf(buf, "%s%sTo: %s%s%s <%s>", rfc, AA->isnewsgroup() ? "X-Comment-" : "", quot, buf2, quot, _toaddr);
|
||||
}
|
||||
line = AddKludge(line, buf);
|
||||
line->kludge = GKLUD_RFC;
|
||||
}
|
||||
|
@ -419,6 +419,7 @@ void Reader() {
|
||||
|
||||
case KK_ReadSoundkill:
|
||||
HandleGEvent(EVTT_STOPVOICE);
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadChangeAttrs:
|
||||
@ -427,22 +428,27 @@ void Reader() {
|
||||
|
||||
case KK_ReadChangeAka:
|
||||
ChangeAka();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadChangeTagline:
|
||||
ChangeTagline();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadChangeOrigin:
|
||||
ChangeOrigin();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadChangeUsername:
|
||||
ChangeUsername();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadChangeTemplate:
|
||||
ChangeTemplate();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadChangeXlatImport:
|
||||
@ -662,10 +668,12 @@ void Reader() {
|
||||
|
||||
case KK_ReadMakeUserlist:
|
||||
MakeUserList();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadMakePathreport:
|
||||
MakePathreport();
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadWriteMsg:
|
||||
@ -712,6 +720,7 @@ void Reader() {
|
||||
|
||||
case KK_ReadPeekURLs:
|
||||
ReadPeekURLs(msg);
|
||||
reader_keyok = true;
|
||||
break;
|
||||
|
||||
case KK_ReadAddressbookAdd:
|
||||
|
@ -579,16 +579,18 @@ int ExternUtil(GMsg *msg, ExtUtil *extutil) {
|
||||
int hardlines = EDIT->HardLines();
|
||||
EDIT->HardLines(false);
|
||||
LoadText(msg, editorfile);
|
||||
if(extutil->options & EXTUTIL_WIPE)
|
||||
WipeFile(editorfile, 0);
|
||||
if(tmpfile[0] != NUL)
|
||||
WipeFile(tmpfile, 0);
|
||||
|
||||
EDIT->HardLines(hardlines);
|
||||
// Ignore any kludge address found
|
||||
msg->TextToLines(CFG->dispmargin-(int)CFG->switches.get(disppagebar), false);
|
||||
}
|
||||
|
||||
if(extutil->options & EXTUTIL_WIPE)
|
||||
WipeFile(editorfile, 0);
|
||||
if(tmpfile[0] != NUL)
|
||||
WipeFile(tmpfile, 0);
|
||||
|
||||
reader_keyok = true;
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
@ -405,6 +405,8 @@ public:
|
||||
bool pmscanincl() { return area->pmscanincl(); }
|
||||
bool ismarked() const { return (marks & (1<<AL.mask)) ? true : false; }
|
||||
|
||||
bool isnewmail() const { return (isvalidchg and isunreadchg) ? true : false; }
|
||||
|
||||
const char* echoid() const { return area->echoid(); }
|
||||
const char* desc() const { return area->desc(); }
|
||||
const char* path() const { return area->path(); }
|
||||
|
@ -248,6 +248,7 @@ void gareafile::ReadCrashmail(char* tag) {
|
||||
while(ptr) {
|
||||
if(*ptr != '-') {
|
||||
strcpy(file, ptr);
|
||||
strschg_environ(file);
|
||||
}
|
||||
ptr = strtok(NULL, " \t");
|
||||
}
|
||||
|
@ -173,6 +173,7 @@ void gareafile::ReadFastecho(char* tag) {
|
||||
while(ptr) {
|
||||
if(*ptr != '-') {
|
||||
strcpy(file, ptr);
|
||||
strschg_environ(file);
|
||||
break;
|
||||
}
|
||||
ptr = strtok(NULL, " \t");
|
||||
@ -180,7 +181,7 @@ void gareafile::ReadFastecho(char* tag) {
|
||||
if(*file == NUL) {
|
||||
ptr = getenv("FASTECHO");
|
||||
if(ptr)
|
||||
AddBackslash(strcpy(file, ptr));
|
||||
PathCopy(file, ptr);
|
||||
}
|
||||
if(*file == NUL)
|
||||
strcpy(file, areapath);
|
||||
|
@ -78,7 +78,7 @@ void gareafile::ReadSpaceAr(const char* file) {
|
||||
setvbuf(fp, NULL, _IOFBF, 8192);
|
||||
|
||||
if(not quiet)
|
||||
cout << "* Reading " << file << endl;
|
||||
std::cout << "* Reading " << file << std::endl;
|
||||
|
||||
char buf[4000];
|
||||
AreaCfg aa;
|
||||
@ -170,7 +170,7 @@ void gareafile::ReadSpaceNtm(const char* file) {
|
||||
setvbuf(fp, NULL, _IOFBF, 8192);
|
||||
|
||||
if(not quiet)
|
||||
cout << "* Reading " << file << endl;
|
||||
std::cout << "* Reading " << file << std::endl;
|
||||
|
||||
char buf[4000];
|
||||
AreaCfg aa;
|
||||
@ -235,7 +235,7 @@ void gareafile::ReadSpaceCtl(const char* file) {
|
||||
setvbuf(fp, NULL, _IOFBF, 8192);
|
||||
|
||||
if(not quiet)
|
||||
cout << "* Reading " << file << endl;
|
||||
std::cout << "* Reading " << file << std::endl;
|
||||
|
||||
char buf[4000];
|
||||
AreaCfg aa;
|
||||
|
1613
manuals/gold_ref.tei
1613
manuals/gold_ref.tei
File diff suppressed because it is too large
Load Diff
@ -5904,6 +5904,7 @@ The following is a description of the different window parts:
|
||||
READER TAGLINE Taglines. (Only the one just above tearline).
|
||||
READER TEARLINE Tearline.
|
||||
READER ORIGIN Origin.
|
||||
READER URL URL (http://, ftp://, E-mail).
|
||||
|
||||
The KLUDGE/HIDDEN colors replaces the old KLUDHIDD color. Note that
|
||||
KLUDHIDD will set both the KLUDGE and HIDDEN colors, so remember to
|
||||
|
Reference in New Issue
Block a user