2020-05-12 22:34:54 +02:00
|
|
|
diff -rc alpine-2.22/pico/basic.c alpine-2.22.WrtAcc/pico/basic.c
|
|
|
|
*** alpine-2.22/pico/basic.c 2020-01-19 01:32:18.272513938 -0700
|
|
|
|
--- alpine-2.22.WrtAcc/pico/basic.c 2020-01-19 01:34:53.223471368 -0700
|
2017-04-12 17:37:46 +02:00
|
|
|
***************
|
|
|
|
*** 342,347 ****
|
|
|
|
--- 342,530 ----
|
|
|
|
return(TRUE);
|
|
|
|
}
|
|
|
|
|
|
|
|
+ unsigned char GetAccent()
|
|
|
|
+ {
|
|
|
|
+ UCS c,d;
|
|
|
|
+ c = GetKey();
|
|
|
|
+ if ((c == '?') || (c == '!')) {
|
|
|
|
+ d = c;
|
|
|
|
+ c = '\\';
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ if ((c == 's') || (c == 'S')){
|
|
|
|
+ c = d = 's';
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ if ((c == 'l') || (c == 'L')){
|
|
|
|
+ c = d = 'l';
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ d = GetKey();
|
|
|
|
+ return accent(c,d);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int pineaccent(f,n)
|
|
|
|
+ int f,n;
|
|
|
|
+ { unsigned char e;
|
|
|
|
+
|
|
|
|
+ if (e = GetAccent())
|
|
|
|
+ execute(e, 0, 1);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ unsigned char accent(f,n)
|
|
|
|
+ UCS f,n;
|
|
|
|
+ { UCS c,d;
|
|
|
|
+
|
|
|
|
+ c = f;
|
|
|
|
+ d = n;
|
|
|
|
+ switch(c){
|
|
|
|
+ case '~' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'a' : return '\343';
|
|
|
|
+ case 'n' : return '\361';
|
|
|
|
+ case 'o' : return '\365';
|
|
|
|
+ case 'A' : return '\303';
|
|
|
|
+ case 'N' : return '\321';
|
|
|
|
+ case 'O' : return '\325';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case '\047' :
|
2013-05-27 09:31:30 +02:00
|
|
|
+ switch(d){
|
2017-04-12 17:37:46 +02:00
|
|
|
+ case 'a' : return '\341';
|
|
|
|
+ case 'e' : return '\351';
|
|
|
|
+ case 'i' : return '\355';
|
|
|
|
+ case 'o' : return '\363';
|
|
|
|
+ case 'u' : return '\372';
|
|
|
|
+ case 'y' : return '\375';
|
|
|
|
+ case 'A' : return '\301';
|
|
|
|
+ case 'E' : return '\311';
|
|
|
|
+ case 'I' : return '\315';
|
|
|
|
+ case 'O' : return '\323';
|
|
|
|
+ case 'U' : return '\332';
|
|
|
|
+ case 'Y' : return '\335';
|
2013-05-27 09:31:30 +02:00
|
|
|
+ }
|
2017-04-12 17:37:46 +02:00
|
|
|
+ break;
|
|
|
|
+ case '"' :
|
2013-05-27 09:31:30 +02:00
|
|
|
+ switch(d){
|
2017-04-12 17:37:46 +02:00
|
|
|
+ case 'a' : return '\344';
|
|
|
|
+ case 'e' : return '\353';
|
|
|
|
+ case 'i' : return '\357';
|
|
|
|
+ case 'o' : return '\366';
|
|
|
|
+ case 'u' : return '\374';
|
|
|
|
+ case 'y' : return '\377';
|
|
|
|
+ case 'A' : return '\304';
|
|
|
|
+ case 'E' : return '\313';
|
|
|
|
+ case 'I' : return '\317';
|
|
|
|
+ case 'O' : return '\326';
|
|
|
|
+ case 'U' : return '\334';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case '^' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'a' : return '\342';
|
|
|
|
+ case 'e' : return '\352';
|
|
|
|
+ case 'i' : return '\356';
|
|
|
|
+ case 'o' : return '\364';
|
|
|
|
+ case 'u' : return '\373';
|
|
|
|
+ case 'A' : return '\302';
|
|
|
|
+ case 'E' : return '\312';
|
|
|
|
+ case 'I' : return '\316';
|
|
|
|
+ case 'O' : return '\324';
|
|
|
|
+ case 'U' : return '\333';
|
|
|
|
+ case '0' : return '\260';
|
|
|
|
+ case '1' : return '\271';
|
|
|
|
+ case '2' : return '\262';
|
|
|
|
+ case '3' : return '\263';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case '`' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'a' : return '\340';
|
|
|
|
+ case 'e' : return '\350';
|
|
|
|
+ case 'i' : return '\354';
|
|
|
|
+ case 'o' : return '\362';
|
|
|
|
+ case 'u' : return '\371';
|
|
|
|
+ case 'A' : return '\300';
|
|
|
|
+ case 'E' : return '\310';
|
|
|
|
+ case 'I' : return '\314';
|
|
|
|
+ case 'O' : return '\322';
|
|
|
|
+ case 'U' : return '\331';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 'o' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'a' : return '\345';
|
|
|
|
+ case 'A' : return '\305';
|
|
|
|
+ case '/' : return '\370';
|
|
|
|
+ case 'r' : return '\256';
|
|
|
|
+ case 'R' : return '\256';
|
|
|
|
+ case 'c' : return '\251';
|
|
|
|
+ case 'C' : return '\251';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case '-' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'o' : return '\272';
|
|
|
|
+ case 'O' : return '\272';
|
|
|
|
+ case '0' : return '\272';
|
|
|
|
+ case 'a' : return '\252';
|
|
|
|
+ case 'A' : return '\252';
|
|
|
|
+ case 'l' : return '\243';
|
|
|
|
+ case 'L' : return '\243';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 'O' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case '/' : return '\330';
|
|
|
|
+ case 'r' : return '\256';
|
|
|
|
+ case 'R' : return '\256';
|
|
|
|
+ case 'c' : return '\251';
|
|
|
|
+ case 'C' : return '\251';
|
|
|
|
+ }
|
|
|
|
+ case '/' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'o' : return '\370';
|
|
|
|
+ case 'O' : return '\330';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 'a' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'e' : return '\346';
|
|
|
|
+ case 'E' : return '\346';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 'A' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'E' : return '\306';
|
|
|
|
+ case 'e' : return '\306';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case ',' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'c' : return '\347';
|
|
|
|
+ case 'C' : return '\307';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case '\\' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case '?' : return '\277';
|
|
|
|
+ case '!' : return '\241';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 's' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 's' : return '\337';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 'l' :
|
|
|
|
+ switch(d){
|
|
|
|
+ case 'l' : return '\243';
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ return '\0';
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/*
|
|
|
|
* go forword to the end of the current paragraph
|
2020-05-12 22:34:54 +02:00
|
|
|
diff -rc alpine-2.22/pico/composer.c alpine-2.22.WrtAcc/pico/composer.c
|
|
|
|
*** alpine-2.22/pico/composer.c 2020-01-19 01:32:18.262514139 -0700
|
|
|
|
--- alpine-2.22.WrtAcc/pico/composer.c 2020-01-19 01:34:53.224471360 -0700
|
2017-04-12 17:37:46 +02:00
|
|
|
***************
|
|
|
|
*** 2015,2021 ****
|
|
|
|
tbufp = &strng[ods.p_len];
|
|
|
|
|
|
|
|
if(VALID_KEY(ch)){ /* char input */
|
|
|
|
! /*
|
|
|
|
* if we are allowing editing, insert the new char
|
|
|
|
* end up leaving tbufp pointing to newly
|
|
|
|
* inserted character in string, and offset to the
|
|
|
|
--- 2015,2021 ----
|
|
|
|
tbufp = &strng[ods.p_len];
|
|
|
|
|
|
|
|
if(VALID_KEY(ch)){ /* char input */
|
|
|
|
! insert_char:/*
|
|
|
|
* if we are allowing editing, insert the new char
|
|
|
|
* end up leaving tbufp pointing to newly
|
|
|
|
* inserted character in string, and offset to the
|
|
|
|
***************
|
|
|
|
*** 2095,2100 ****
|
|
|
|
--- 2095,2107 ----
|
|
|
|
}
|
|
|
|
else { /* interpret ch as a command */
|
|
|
|
switch (ch = normalize_cmd(ch, ckm, 2)) {
|
|
|
|
+ case (CTRL|'\\') :
|
|
|
|
+ if (ch = GetAccent())
|
|
|
|
+ goto insert_char;
|
|
|
|
+ else
|
|
|
|
+ clearcursor();
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
case (CTRL|KEY_LEFT): /* word skip left */
|
|
|
|
if(ods.p_ind > 0) /* Scoot one char left if possible */
|
|
|
|
ods.p_ind--;
|
2020-05-12 22:34:54 +02:00
|
|
|
diff -rc alpine-2.22/pico/display.c alpine-2.22.WrtAcc/pico/display.c
|
|
|
|
*** alpine-2.22/pico/display.c 2020-01-19 01:32:18.428510798 -0700
|
|
|
|
--- alpine-2.22.WrtAcc/pico/display.c 2020-01-19 01:34:53.225471353 -0700
|
2017-04-12 17:37:46 +02:00
|
|
|
***************
|
|
|
|
*** 2196,2201 ****
|
|
|
|
--- 2196,2206 ----
|
|
|
|
b = &buf[ucs4_strlen(buf)];
|
|
|
|
continue;
|
|
|
|
|
|
|
|
+ case (CTRL|'\\'):
|
|
|
|
+ if (c = GetAccent())
|
|
|
|
+ goto text;
|
|
|
|
+ continue;
|
|
|
|
+
|
|
|
|
case (CTRL|'F') : /* CTRL-F forward a char*/
|
|
|
|
case KEY_RIGHT :
|
|
|
|
if(*b == '\0')
|
|
|
|
***************
|
|
|
|
*** 2314,2320 ****
|
|
|
|
#endif
|
|
|
|
|
|
|
|
default :
|
|
|
|
!
|
|
|
|
/* look for match in extra_v */
|
|
|
|
for(i = 0; i < 12; i++)
|
|
|
|
if(c && c == extra_v[i]){
|
|
|
|
--- 2319,2325 ----
|
|
|
|
#endif
|
|
|
|
|
|
|
|
default :
|
|
|
|
! text:
|
|
|
|
/* look for match in extra_v */
|
|
|
|
for(i = 0; i < 12; i++)
|
|
|
|
if(c && c == extra_v[i]){
|
2020-05-12 22:34:54 +02:00
|
|
|
diff -rc alpine-2.22/pico/ebind.h alpine-2.22.WrtAcc/pico/ebind.h
|
|
|
|
*** alpine-2.22/pico/ebind.h 2020-01-19 01:32:18.369511986 -0700
|
|
|
|
--- alpine-2.22.WrtAcc/pico/ebind.h 2020-01-19 01:34:53.226471345 -0700
|
2017-04-12 17:37:46 +02:00
|
|
|
***************
|
|
|
|
*** 61,67 ****
|
|
|
|
#ifdef MOUSE
|
|
|
|
{KEY_MOUSE, mousepress},
|
|
|
|
#ifndef _WINDOWS
|
|
|
|
! {CTRL|'\\', toggle_xterm_mouse},
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
{CTRL|'A', gotobol},
|
|
|
|
--- 61,67 ----
|
|
|
|
#ifdef MOUSE
|
|
|
|
{KEY_MOUSE, mousepress},
|
|
|
|
#ifndef _WINDOWS
|
|
|
|
! {CTRL|'|', toggle_xterm_mouse},
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
{CTRL|'A', gotobol},
|
|
|
|
***************
|
|
|
|
*** 100,106 ****
|
|
|
|
{CTRL|KEY_HOME, gotobob},
|
|
|
|
{CTRL|KEY_END, gotoeob},
|
|
|
|
{0x7F, backdel},
|
|
|
|
! {0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
--- 100,108 ----
|
|
|
|
{CTRL|KEY_HOME, gotobob},
|
|
|
|
{CTRL|KEY_END, gotoeob},
|
|
|
|
{0x7F, backdel},
|
|
|
|
! {CTRL|'\\', pineaccent},
|
|
|
|
! {0,
|
|
|
|
! NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
***************
|
|
|
|
*** 123,129 ****
|
|
|
|
#ifdef MOUSE
|
|
|
|
{KEY_MOUSE, mousepress},
|
|
|
|
#ifndef _WINDOWS
|
|
|
|
! {CTRL|'\\', toggle_xterm_mouse},
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
{CTRL|'A', gotobol},
|
|
|
|
--- 125,131 ----
|
|
|
|
#ifdef MOUSE
|
|
|
|
{KEY_MOUSE, mousepress},
|
|
|
|
#ifndef _WINDOWS
|
|
|
|
! {CTRL|'|', toggle_xterm_mouse},
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
{CTRL|'A', gotobol},
|
2020-05-12 22:34:54 +02:00
|
|
|
diff -rc alpine-2.22/pico/efunc.h alpine-2.22.WrtAcc/pico/efunc.h
|
|
|
|
*** alpine-2.22/pico/efunc.h 2020-01-19 01:32:18.308513213 -0700
|
|
|
|
--- alpine-2.22.WrtAcc/pico/efunc.h 2020-01-19 01:34:53.226471345 -0700
|
2017-04-12 17:37:46 +02:00
|
|
|
***************
|
|
|
|
*** 54,59 ****
|
|
|
|
--- 54,62 ----
|
|
|
|
extern int backline(int, int);
|
|
|
|
extern int gotobop(int, int);
|
|
|
|
extern int gotoeop(int, int);
|
|
|
|
+ extern int pineaccent(int, int);
|
|
|
|
+ extern unsigned char accent(UCS, UCS);
|
|
|
|
+ extern unsigned char GetAccent(void);
|
|
|
|
extern int forwpage(int, int);
|
|
|
|
extern int backpage(int, int);
|
|
|
|
extern int scrollupline(int, int);
|
2020-05-12 22:34:54 +02:00
|
|
|
diff -rc alpine-2.22/pico/main.c alpine-2.22.WrtAcc/pico/main.c
|
|
|
|
*** alpine-2.22/pico/main.c 2020-01-19 01:32:18.322512932 -0700
|
|
|
|
--- alpine-2.22.WrtAcc/pico/main.c 2020-01-19 01:34:53.226471345 -0700
|
2017-04-12 17:37:46 +02:00
|
|
|
***************
|
2020-05-12 22:34:54 +02:00
|
|
|
*** 458,463 ****
|
|
|
|
--- 458,469 ----
|
2017-04-12 17:37:46 +02:00
|
|
|
emlwrite(_("You may possibly have new mail."), NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
+ if (c == (CTRL|'\\')){
|
|
|
|
+ c = GetAccent();
|
|
|
|
+ if (!c)
|
|
|
|
+ c = NODATA;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
if(km_popped)
|
|
|
|
switch(c){
|
|
|
|
case NODATA:
|