New config file token LatinToLocal
This commit is contained in:
parent
f15607a27e
commit
4b3e5d0df1
@ -1423,6 +1423,11 @@ XLATEXPORT IBMPC
|
|||||||
;XLATLOCALSET CP850
|
;XLATLOCALSET CP850
|
||||||
XLATLOCALSET IBMPC
|
XLATLOCALSET IBMPC
|
||||||
|
|
||||||
|
// Used to translate latin A-Za-z to local charset if one of neighbours
|
||||||
|
// is from local charset too.
|
||||||
|
// ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
;LatinToLocal ABCDEFG<46>IJKLMNOPQRSTUVWXYZabcdefghijklmnoàqrstuvwxãz ;cp866 - H,p,y
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
-- MESSAGE ATTRIBUTE DEFAULTS
|
-- MESSAGE ATTRIBUTE DEFAULTS
|
||||||
|
|
||||||
|
@ -1669,6 +1669,13 @@ XlatCharSet CP850 ASCII 850_ASC.chs
|
|||||||
;XlatLocalSet KOI8-R
|
;XlatLocalSet KOI8-R
|
||||||
XlatLocalSet CP866
|
XlatLocalSet CP866
|
||||||
|
|
||||||
|
// <20>â®â ª¥©¢®à¤ ¯®§¢®«ï¥â ¤¥« âì ®¡à âãî § ¬¥ã « â¨áª¨å ¡ãª¢ àãá᪨¥.
|
||||||
|
// ‡ ¬¥ ¡ã¤¥â ¤¥« âìáï ⮫쪮 â¥å « â¨áª¨å ¡ãª¢, çâ® ¨¬¥îâ ¯® á®á¥¤áâ¢ã
|
||||||
|
// ¡ãª¢ë «®ª «ì®© ª®¤¨à®¢ª¨.
|
||||||
|
// ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
;LatinToLocal ABCDEFG<46>IJKLMNOPQRSTUVWXYZabcdefghijklmnoàqrstuvwxãz ;cp866 - H,p,y
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
-- €’<E282AC>ˆ<EFBFBD>“’› ‘ŽŽ<C5BD>™…<E284A2>ˆ‰
|
-- €’<E282AC>ˆ<EFBFBD>“’› ‘ŽŽ<C5BD>™…<E284A2>ˆ‰
|
||||||
|
|
||||||
|
@ -10,6 +10,10 @@ ______________________________________________________________________
|
|||||||
Notes for GoldED+ 1.1.5, /snapshot/
|
Notes for GoldED+ 1.1.5, /snapshot/
|
||||||
______________________________________________________________________
|
______________________________________________________________________
|
||||||
|
|
||||||
|
+ New config file token LatinToLocal.
|
||||||
|
Used to translate latin A-Za-z to local charset if one of neighbours
|
||||||
|
is from local charset too.
|
||||||
|
|
||||||
+ New config file token AreaRecycleBin <area>. GoldEd will move deleted
|
+ New config file token AreaRecycleBin <area>. GoldEd will move deleted
|
||||||
messages to <area>, if this token is defined.
|
messages to <area>, if this token is defined.
|
||||||
|
|
||||||
|
@ -739,6 +739,7 @@ CfgGed::CfgGed() {
|
|||||||
internetrfcbody = 0;
|
internetrfcbody = 0;
|
||||||
internetviagate = false;
|
internetviagate = false;
|
||||||
keybmode = KEYB_POLL;
|
keybmode = KEYB_POLL;
|
||||||
|
latin2local = false;
|
||||||
logformat = 0;
|
logformat = 0;
|
||||||
locationdelimiter = " \x1A ";
|
locationdelimiter = " \x1A ";
|
||||||
menumarked = MODE_DONT;
|
menumarked = MODE_DONT;
|
||||||
|
@ -240,6 +240,7 @@ const word CRC_KEYBMODE = 0xE8F2;
|
|||||||
const word CRC_KEYBSTACK = 0x5F23;
|
const word CRC_KEYBSTACK = 0x5F23;
|
||||||
const word CRC_KLUDGE = 0xA600;
|
const word CRC_KLUDGE = 0xA600;
|
||||||
const word CRC_KLUDGECHRS = 0x0EEF;
|
const word CRC_KLUDGECHRS = 0x0EEF;
|
||||||
|
const word CRC_LATINTOLOCAL = 0x9397;
|
||||||
const word CRC_LOADLANGUAGE = 0x9F1B;
|
const word CRC_LOADLANGUAGE = 0x9F1B;
|
||||||
const word CRC_LOCATIONALIAS = 0x1B5F;
|
const word CRC_LOCATIONALIAS = 0x1B5F;
|
||||||
const word CRC_LOCATIONDELIMITER= 0x5083;
|
const word CRC_LOCATIONDELIMITER= 0x5083;
|
||||||
|
@ -412,6 +412,7 @@ SwitchK:
|
|||||||
|
|
||||||
SwitchL:
|
SwitchL:
|
||||||
switch(crc) {
|
switch(crc) {
|
||||||
|
case CRC_LATINTOLOCAL : CfgLatintolocal (); break;
|
||||||
case CRC_LOADLANGUAGE : CfgLoadlanguage (); break;
|
case CRC_LOADLANGUAGE : CfgLoadlanguage (); break;
|
||||||
case CRC_LOCATIONALIAS : CfgLocationalias (); break;
|
case CRC_LOCATIONALIAS : CfgLocationalias (); break;
|
||||||
case CRC_LOCATIONDELIMITER: CfgLocationdelimiter(); break;
|
case CRC_LOCATIONDELIMITER: CfgLocationdelimiter(); break;
|
||||||
|
@ -308,6 +308,20 @@ void CfgKludge() {
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
void CfgLatintolocal()
|
||||||
|
{
|
||||||
|
memset(CFG->latintolocal, 0, sizeof(CFG->latintolocal));
|
||||||
|
CFG->latin2local = true;
|
||||||
|
|
||||||
|
char *ptr = val, chr;
|
||||||
|
for (chr = 'A'; chr <= 'Z'; chr++, ptr++)
|
||||||
|
CFG->latintolocal[chr] = *ptr;
|
||||||
|
for (chr = 'a'; chr <= 'z'; chr++, ptr++)
|
||||||
|
CFG->latintolocal[chr] = *ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void CfgLoadlanguage() {
|
void CfgLoadlanguage() {
|
||||||
|
|
||||||
Path buf;
|
Path buf;
|
||||||
|
@ -229,6 +229,7 @@ void CfgKeybmode ();
|
|||||||
void CfgKeybstack ();
|
void CfgKeybstack ();
|
||||||
void CfgKludge ();
|
void CfgKludge ();
|
||||||
void CfgKludgechrs ();
|
void CfgKludgechrs ();
|
||||||
|
void CfgLatintolocal ();
|
||||||
void CfgLoadlanguage ();
|
void CfgLoadlanguage ();
|
||||||
void CfgLocationalias ();
|
void CfgLocationalias ();
|
||||||
void CfgLocationdelimiter();
|
void CfgLocationdelimiter();
|
||||||
|
@ -256,6 +256,8 @@ public:
|
|||||||
int keybmode;
|
int keybmode;
|
||||||
char keybstack[80]; // keybuf[80];
|
char keybstack[80]; // keybuf[80];
|
||||||
gstrarray kludge;
|
gstrarray kludge;
|
||||||
|
bool latin2local;
|
||||||
|
char latintolocal[256];
|
||||||
Path loadlanguage;
|
Path loadlanguage;
|
||||||
GStrBag2 locationalias;
|
GStrBag2 locationalias;
|
||||||
std::string locationdelimiter;
|
std::string locationdelimiter;
|
||||||
|
@ -1680,6 +1680,51 @@ void ScanKludges(GMsg* msg, int getvalue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
void Latin2Local(char *str)
|
||||||
|
{
|
||||||
|
if (!CFG->latin2local) return;
|
||||||
|
for (size_t i = 0; str[i]; i++)
|
||||||
|
{
|
||||||
|
byte chr = str[i];
|
||||||
|
byte xch = CFG->latintolocal[chr];
|
||||||
|
|
||||||
|
if (xch && (xch != chr))
|
||||||
|
{
|
||||||
|
byte left = i ? str[i-1] : 0;
|
||||||
|
byte right = str[i+1];
|
||||||
|
|
||||||
|
if (((left >= 0x80) && (toupper(left) != tolower(left))) ||
|
||||||
|
((right >= 0x80) && (toupper(right) != tolower(right))))
|
||||||
|
{
|
||||||
|
str[i] = xch;
|
||||||
|
|
||||||
|
for (size_t j = i-1; j < i; j--)
|
||||||
|
{
|
||||||
|
chr = str[j];
|
||||||
|
xch = CFG->latintolocal[chr];
|
||||||
|
|
||||||
|
if (xch && (xch != chr))
|
||||||
|
{
|
||||||
|
left = j ? str[j-1] : 0;
|
||||||
|
right = str[j+1];
|
||||||
|
|
||||||
|
if (((left >= 0x80) && (toupper(left) != tolower(left))) ||
|
||||||
|
((right >= 0x80) && (toupper(right) != tolower(right))))
|
||||||
|
{
|
||||||
|
str[j] = xch;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
char* XlatStr(char* dest, const char* src, int level, Chs* chrtbl, int qpencoded, bool i51) {
|
char* XlatStr(char* dest, const char* src, int level, Chs* chrtbl, int qpencoded, bool i51) {
|
||||||
|
@ -107,6 +107,15 @@ int Area::LoadMsg(GMsg* msg, uint32_t msgno, int margin, int mode) {
|
|||||||
if(not (msg->attr.uns() and not msg->attr.rcv()))
|
if(not (msg->attr.uns() and not msg->attr.rcv()))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mode && !AA->attr().hex())
|
||||||
|
{
|
||||||
|
Latin2Local(msg->by);
|
||||||
|
Latin2Local(msg->to);
|
||||||
|
Latin2Local(msg->re);
|
||||||
|
Latin2Local(msg->txt);
|
||||||
|
}
|
||||||
|
|
||||||
msg->TextToLines(margin);
|
msg->TextToLines(margin);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -180,6 +180,7 @@ Line* InsertLine(Line* newline, Line* oldline, int pos);
|
|||||||
Line* LastLine(Line* line);
|
Line* LastLine(Line* line);
|
||||||
void MakeLineIndex(GMsg* msg, int rmargin, bool getvalue, bool header_recode);
|
void MakeLineIndex(GMsg* msg, int rmargin, bool getvalue, bool header_recode);
|
||||||
void MsgLineReIndex(GMsg* msg, int viewhidden=-1, int viewkludge=-1, int viewquote=-1);
|
void MsgLineReIndex(GMsg* msg, int viewhidden=-1, int viewkludge=-1, int viewquote=-1);
|
||||||
|
void Latin2Local(char *str);
|
||||||
char* XlatStr(char* dest, const char* src, int level, Chs* chrtbl, int qpencoded=false, bool i51=false);
|
char* XlatStr(char* dest, const char* src, int level, Chs* chrtbl, int qpencoded=false, bool i51=false);
|
||||||
char* mime_header_decode(char* decoded, const char* encoded, char* charset = NULL);
|
char* mime_header_decode(char* decoded, const char* encoded, char* charset = NULL);
|
||||||
char* strxmimecpy(char* dest, const char* source, int level, int size, bool detect = false);
|
char* strxmimecpy(char* dest, const char* source, int level, int size, bool detect = false);
|
||||||
|
Reference in New Issue
Block a user