From fa406949ec5a49de68fba06c6c02f3fac9d2a335 Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Sun, 13 Jul 2008 16:44:19 +0000 Subject: [PATCH] Allow backspace to be bound to keys in .nanorc Allow kdel to be rebound Add note about rebinding kdel to backspace for those using OSX or PuTTY to connect to remote Linux machines in nanorc.sample.in When undoing text deletes, move current_x to proper location git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4281 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- doc/nanorc.sample.in | 3 +++ src/global.c | 2 ++ src/rcfile.c | 2 +- src/text.c | 3 ++- 4 files changed, 8 insertions(+), 2 deletions(-) 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;