+diff --git src/LYStrings.c src/LYStrings.c
+index 67c0b2b..c34cf30 100644
+--- src/LYStrings.c
++++ src/LYStrings.c
+@@ -270,6 +270,40 @@ int fancy_mouse(WINDOW * win, int row,
+ return cmd;
+ }
+
++// ------------------------ >8 ------------------------
++
++#include <assert.h>
++#include <ctype.h>
++#include <sys/stat.h>
++#define typecalloc(cast) (cast *)calloc((size_t)1, sizeof(cast))
++
++static char *readEditedFile(char *ed_temp)
++{
++ struct stat stat_info;
++ size_t size;
++ if ((stat(ed_temp, &stat_info) < 0) ||
++ !S_ISREG(stat_info.st_mode) ||
++ ((size = (size_t) stat_info.st_size) == 0)) {
++ return NULL;
++ }
++ char *ebuf = malloc(size + 1);
++ assert(ebuf != NULL);
++ FILE *fp = NULL;
++ if ((fp = fopen(ed_temp, "r")) != 0) {
++ size = fread(ebuf, (size_t) 1, size, fp);
++ LYCloseInput(fp);
++ ebuf[size] = '\0';
++ } else {
++ free(ebuf);
++ return NULL;
++ }
++ return ebuf;
++}
++
++#include <LYEdit.h>
++
++// ------------------------ >8 ------------------------
++
+ /*
+ * Manage the collection of edit-histories
+ */
+@@ -3380,8 +3414,24 @@ int LYDoEdit(FieldEditor * edit, int ch,
+ EditAt++;
+ break;
+
+- case LYE_ERASE: /* erase the line */
+- Buffer[0] = '\0';
++ case LYE_ERASE: {
++ char *tmpPath = malloc(LY_MAXPATH);
++ FILE *fp = LYOpenTemp(tmpPath, "", "w");
++ assert(fp != 0);
++ fputs(Buffer, fp);
++ LYCloseTempFP(fp);
++ edit_temporary_file(tmpPath, "", NULL);
++ char *ebuf = readEditedFile(tmpPath);
++ free(tmpPath);
++ if (ebuf != NULL) {
++ FREE(Buffer);
++ Buffer = ebuf;
++ edit->efBufInUse = strlen(ebuf);
++ edit->efBufAlloc = edit->efBufInUse;
++ edit->efBufLimit = 0;
++ }
++ }
++
+ #ifdef ENHANCED_LINEEDIT
+ EditMark = -1; /* Do not show the mark */
+ #endif