File chappa-DelText.patch of Package alpine
---
pico/basic.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
pico/efunc.h | 1 +
pico/search.c | 7 ++++++-
3 files changed, 57 insertions(+), 1 deletion(-)
Index: alpine-2.26/pico/basic.c
===================================================================
--- alpine-2.26.orig/pico/basic.c
+++ alpine-2.26/pico/basic.c
@@ -772,7 +772,57 @@ scrolldownline(int f, int n)
return (scrollforw (1, FALSE));
}
+/* deltext deletes from the specified position until the end of the file
+ * or until the signature (when called from Pine), whichever comes first.
+ */
+int
+deltext (f,n)
+int f,n;
+{
+ LINE *currline = curwp->w_dotp;
+ static int firsttime = 0;
+
+ if ((lastflag&CFKILL) == 0)
+ kdelete();
+
+ curwp->w_markp = curwp->w_dotp;
+ curwp->w_marko = curwp->w_doto;
+
+ while (curwp->w_dotp != curbp->b_linep){
+ if ((Pmaster)
+ && (llength(curwp->w_dotp) == 3)
+ && (lgetc(curwp->w_dotp, 0).c == '-')
+ && (lgetc(curwp->w_dotp, 1).c == '-')
+ && (lgetc(curwp->w_dotp, 2).c == ' ')){
+ if (curwp->w_dotp == currline){
+ if (curwp->w_doto)
+ curwp->w_dotp = lforw(curwp->w_dotp);
+ else
+ break;
+ }
+ else{
+ curwp->w_dotp = lback(curwp->w_dotp);
+ curwp->w_doto = llength(curwp->w_dotp);
+ break;
+ }
+ }
+ else{
+ if(lforw(curwp->w_dotp) != curbp->b_linep)
+ curwp->w_dotp = lforw(curwp->w_dotp);
+ else{
+ curwp->w_doto = llength(curwp->w_dotp);
+ break;
+ }
+ }
+ }
+ killregion(FALSE,1);
+ lastflag |= CFKILL;
+ if(firsttime == 0)
+ emlwrite("Deleted text can be recovered with the ^U command", NULL);
+ firsttime = 1;
+ return TRUE;
+}
/*
* Scroll to a position.
Index: alpine-2.26/pico/efunc.h
===================================================================
--- alpine-2.26.orig/pico/efunc.h
+++ alpine-2.26/pico/efunc.h
@@ -56,6 +56,7 @@ extern int gotobop(int, int);
extern int gotoeop(int, int);
extern int forwpage(int, int);
extern int backpage(int, int);
+extern int deltext (int, int);
extern int scrollupline(int, int);
extern int scrolldownline(int, int);
extern int scrollto(int, int);
Index: alpine-2.26/pico/search.c
===================================================================
--- alpine-2.26.orig/pico/search.c
+++ alpine-2.26/pico/search.c
@@ -69,6 +69,7 @@ EXTRAKEYS menu_srchpat[] = {
{"^O", N_("End of Para"), (CTRL|'O')},
{"^U", N_("FullJustify"), (CTRL|'U')},
{"^P", N_("Delete Para"), (CTRL|'P')},
+ {"^X", N_("Del End"), (CTRL|'X')},
{NULL, NULL, 0}
};
@@ -282,7 +283,11 @@ forwsearch(int f, int n)
break;
case (CTRL|'X'):
- if(flags & SR_OPTNMEN){
+ if (flags & SR_ORIGMEN){
+ deltext(f,n);
+ FWS_RETURN(TRUE);
+ }
+ else if(flags & SR_OPTNMEN){
if (flags & SR_NOEXACT){
flags &= ~SR_NOEXACT;
flags |= SR_EXACTSR;