Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Update
alpine
chappa-WrtAcc.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File chappa-WrtAcc.patch of Package alpine
--- pico/basic.c | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pico/composer.c | 9 ++ pico/display.c | 7 +- pico/ebind.h | 8 +- pico/efunc.h | 3 pico/main.c | 6 + pico/search.c | 6 - 7 files changed, 214 insertions(+), 8 deletions(-) Index: alpine-2.20/pico/basic.c =================================================================== --- alpine-2.20.orig/pico/basic.c +++ alpine-2.20/pico/basic.c @@ -342,6 +342,189 @@ gotobop(int f, int n) 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' : + switch(d){ + 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'; + } + break; + case '"' : + switch(d){ + 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 Index: alpine-2.20/pico/composer.c =================================================================== --- alpine-2.20.orig/pico/composer.c +++ alpine-2.20/pico/composer.c @@ -2015,7 +2015,7 @@ LineEdit(int allowedit, UCS *lastch) 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,6 +2095,13 @@ LineEdit(int allowedit, UCS *lastch) } 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--; Index: alpine-2.20/pico/display.c =================================================================== --- alpine-2.20.orig/pico/display.c +++ alpine-2.20/pico/display.c @@ -1751,6 +1751,11 @@ mlreplyd(UCS *prompt, UCS *buf, int nbuf 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') @@ -1881,7 +1886,7 @@ mlreplyd(UCS *prompt, UCS *buf, int nbuf #endif default : - +text: /* look for match in extra_v */ for(i = 0; i < 12; i++) if(c && c == extra_v[i]){ Index: alpine-2.20/pico/ebind.h =================================================================== --- alpine-2.20.orig/pico/ebind.h +++ alpine-2.20/pico/ebind.h @@ -61,7 +61,7 @@ KEYTAB keytab[NBINDS] = { #ifdef MOUSE {KEY_MOUSE, mousepress}, #ifndef _WINDOWS - {CTRL|'\\', toggle_xterm_mouse}, + {CTRL|'|', toggle_xterm_mouse}, #endif #endif {CTRL|'A', gotobol}, @@ -100,7 +100,9 @@ KEYTAB keytab[NBINDS] = { {CTRL|KEY_HOME, gotobob}, {CTRL|KEY_END, gotoeob}, {0x7F, backdel}, - {0, NULL} + {CTRL|'\\', pineaccent}, + {0, +NULL} }; @@ -123,7 +125,7 @@ KEYTAB pkeytab[NBINDS] = { #ifdef MOUSE {KEY_MOUSE, mousepress}, #ifndef _WINDOWS - {CTRL|'\\', toggle_xterm_mouse}, + {CTRL|'|', toggle_xterm_mouse}, #endif #endif {CTRL|'A', gotobol}, Index: alpine-2.20/pico/efunc.h =================================================================== --- alpine-2.20.orig/pico/efunc.h +++ alpine-2.20/pico/efunc.h @@ -54,6 +54,9 @@ extern int forwline(int, int); 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); Index: alpine-2.20/pico/main.c =================================================================== --- alpine-2.20.orig/pico/main.c +++ alpine-2.20/pico/main.c @@ -416,6 +416,12 @@ main(int argc, char *argv[]) emlwrite(_("You may possibly have new mail."), NULL); } + if (c == (CTRL|'\\')){ + c = GetAccent(); + if (!c) + c = NODATA; + } + if(km_popped) switch(c){ case NODATA: Index: alpine-2.20/pico/search.c =================================================================== --- alpine-2.20.orig/pico/search.c +++ alpine-2.20/pico/search.c @@ -291,7 +291,7 @@ forwsearch(int f, int n) } if(status + curwp->w_doto >= llength(curwp->w_dotp) || - !eq(defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c)) + !eq((unsigned char) defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c)) break; status++; } @@ -1096,7 +1096,7 @@ forscan(int *wrapt, /* boolean indicatin c = lgetc(curline, curoff++).c; /* get the char */ /* test it against first char in pattern */ - if (eq(c, patrn[0]) != FALSE) { /* if we find it..*/ + if (eq(c, (unsigned char)patrn[0]) != FALSE) { /* if we find it..*/ /* setup match pointers */ matchline = curline; matchoff = curoff; @@ -1117,7 +1117,7 @@ forscan(int *wrapt, /* boolean indicatin return(FALSE); /* and test it against the pattern */ - if (eq(*patptr, c) == FALSE) + if (eq((unsigned char) *patptr, c) == FALSE) goto fail; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor