diff --git a/doc/nanorc.sample.in b/doc/nanorc.sample.in index 13e61e6b..1800ad66 100644 --- a/doc/nanorc.sample.in +++ b/doc/nanorc.sample.in @@ -222,6 +222,9 @@ # bind M-A casesens search # bind ^S research main +## Set this if your backspace key sends delete most of the time (2.1.3+) +# bind kdel backspace all + ## Nanorc files # include "@PKGDATADIR@/nanorc.nanorc" diff --git a/src/global.c b/src/global.c index 824f9393..5ca7c8d9 100644 --- a/src/global.c +++ b/src/global.c @@ -1446,6 +1446,8 @@ sc *strtosc(int menu, char *input) s->scfunc = do_enter; else if (!strcasecmp(input, "delete")) s->scfunc = do_delete; + else if (!strcasecmp(input, "backspace")) + s->scfunc = do_backspace; else if (!strcasecmp(input, "refresh")) s->scfunc = total_refresh; else if (!strcasecmp(input, "casesens")) { diff --git a/src/rcfile.c b/src/rcfile.c index 8e383b28..4481b6a4 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -380,7 +380,7 @@ void parse_keybinding(char *ptr) for (i = 0; i < strlen(keycopy); i++) keycopy[i] = toupper(keycopy[i]); - if (keycopy[0] != 'M' && keycopy[0] != '^' && keycopy[0] != 'F') { + if (keycopy[0] != 'M' && keycopy[0] != '^' && keycopy[0] != 'F' && keycopy[0] != 'K') { rcfile_error( N_("keybindings must begin with \"^\", \"M\", or \"F\"\n")); return; diff --git a/src/text.c b/src/text.c index 95763cb5..242d9cd4 100644 --- a/src/text.c +++ b/src/text.c @@ -393,6 +393,7 @@ void do_undo(void) fprintf(stderr, "Undo running for type %d\n", u->type); #endif + openfile->current_x = u->begin; switch(u->type) { case ADD: action = _("text add"); @@ -413,6 +414,7 @@ void do_undo(void) strcpy(&data[u->begin + strlen(u->strdata)], &f->data[u->begin]); free(f->data); f->data = data; + openfile->current_x += strlen(u->strdata); break; case SPLIT: action = _("line split"); @@ -442,7 +444,6 @@ void do_undo(void) } openfile->current = f; - openfile->current_x = u->begin; edit_refresh(); statusbar(_("Undid action (%s)"), action); openfile->current_undo = openfile->current_undo->next;