]> git.wh0rd.org Git - nano.git/commitdiff
2009-07-11 Chris Allegretta <chrisa@asty.org>
authorChris Allegretta <chrisa@asty.org>
Sun, 12 Jul 2009 03:36:58 +0000 (03:36 +0000)
committerChris Allegretta <chrisa@asty.org>
Sun, 12 Jul 2009 03:36:58 +0000 (03:36 +0000)
* nano-regress: Small tweaks
* Change undo code to off unless unabled via a command line option (-u/--undo).  Until this code
  stabilizes this is the only responsible way to treat it.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4395 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
doc/man/nano.1
nano-regress
src/global.c
src/nano.c
src/proto.h
src/text.c

index 7c25281c1bec7534ecb464d3dbfc0138b5fb7571..6f7b1c38f2fa5c13ee2ebdd60aeb132b5e462972 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-11 Chris Allegretta <chrisa@asty.org>
+       * nano-regress: Small tweaks
+       * Change undo code to off unless unabled via a command line option (-u/--undo).  Until this code
+         stabilizes this is the only responsible way to treat it.
+
 2009-03-08 Chris Allegretta <chrisa@asty.org>
        * TODO - Break out some targets for various features into 2.2 
          and 2.4 series for things which are feasible.
index 2a08983f9ac0a4f8aad2d68a42b0c9e7f04a48d2..9af89978034e133b3042d6d575b4ae308ed61a47 100644 (file)
@@ -189,6 +189,10 @@ Enable alternative spell checker command.
 Always save changed buffer without prompting.  Same as Pico's \fB-t\fP
 option.
 .TP
+.B \-u (\-\-undo)
+Enable experimental generic-purpose undo code.  By default, the undo and redo
+shortcuts are Meta-U and Meta-E, respectively.
+.TP
 .B \-v (\-\-view)
 View file (read only) mode.
 .TP
index 926ae2fe0587a84f0f9f36b95e0dd35e6afe061e..d1d82de53ed8a103c4cb0340d9077abdaee6d840 100755 (executable)
@@ -16,10 +16,11 @@ foreach my $name (@combos) {
     my @args = @$name;
     my $pct = $i / $#combos * 100;
     printf "Trying with options: @args, %d%% done...\n", $pct;
-    system("(./configure @args && make clean all) >/dev/null 2>&1");
+    my $cmd = "./configure @args && make clean all";
+    system("($cmd) >/dev/null 2>&1");
     if ($? != 0)  {
        print "Build failed for args: @args\n";
-       print "Try running make to reproduce\n";
+       print "To reproduce, run:\n $cmd\n";
        exit(1);
     }
     $i++;
index 6345aeda8fdb47f8c9580c4fbecab7ede8133b4a..69a4ea788d5a94c6d5ba775ee99266c7ed0f4388 100644 (file)
@@ -36,6 +36,9 @@ sigjmp_buf jump_buf;
 bool jump_buf_main = FALSE;
        /* Have we set jump_buf so that we return to main() after a
         * SIGWINCH? */
+bool use_undo = FALSE;
+       /* Are we actually using the undo code - disabled by default
+          as the undo code is too unstable */
 #endif
 
 #ifndef DISABLE_WRAPJUSTIFY
@@ -778,11 +781,13 @@ void shortcut_init(bool unjustify)
     add_to_funcs(DO_UNINDENT, MMAIN, N_("Unindent Text"),
        IFSCHELP(nano_unindent_msg), FALSE, NOVIEW);
 
-    add_to_funcs(DO_UNDO, MMAIN, N_("Undo"),
-       IFSCHELP(nano_undo_msg), FALSE, NOVIEW);
+    if (use_undo) {
+       add_to_funcs(DO_UNDO, MMAIN, N_("Undo"),
+           IFSCHELP(nano_undo_msg), FALSE, NOVIEW);
 
-    add_to_funcs(DO_REDO, MMAIN, N_("Redo"),
-       IFSCHELP(nano_redo_msg), TRUE, NOVIEW);
+       add_to_funcs(DO_REDO, MMAIN, N_("Redo"),
+           IFSCHELP(nano_redo_msg), TRUE, NOVIEW);
+    }
 
 #endif
 
@@ -1064,8 +1069,10 @@ void shortcut_init(bool unjustify)
     add_to_sclist(MMAIN, "M-6", DO_COPY_TEXT, 0, TRUE);
     add_to_sclist(MMAIN, "M-}", DO_INDENT_VOID, 0, TRUE);
     add_to_sclist(MMAIN, "M-{", DO_UNINDENT, 0, TRUE);
-    add_to_sclist(MMAIN, "M-U", DO_UNDO, 0, TRUE);
-    add_to_sclist(MMAIN, "M-E", DO_REDO, 0, TRUE);
+    if (use_undo) {
+       add_to_sclist(MMAIN, "M-U", DO_UNDO, 0, TRUE);
+       add_to_sclist(MMAIN, "M-E", DO_REDO, 0, TRUE);
+    }
     add_to_sclist(MALL, "^F", DO_RIGHT, 0, TRUE);
     add_to_sclist(MALL, "^B", DO_LEFT, 0, TRUE);
     add_to_sclist(MMAIN, "^Space", DO_NEXT_WORD_VOID, 0, TRUE);
index 8f03bd5b0e0a95cd82ce9250ef16e49205ed793c..8e7846c61eb15bb61842063faff14981da8793eb 100644 (file)
@@ -891,6 +891,10 @@ void usage(void)
 #endif
     print_opt("-t", "--tempfile",
        N_("Auto save on exit, don't prompt"));
+#ifndef NANO_TINY
+    print_opt("-u", "--undo", N_("Allow generic undo [EXPERIMENTAL]"));
+#endif
+
     print_opt("-v", "--view", N_("View mode (read-only)"));
 #ifndef DISABLE_WRAPPING
     print_opt("-w", "--nowrap", N_("Don't wrap long lines"));
@@ -2012,6 +2016,7 @@ int main(int argc, char **argv)
        {"noconvert", 0, NULL, 'N'},
        {"smooth", 0, NULL, 'S'},
        {"quickblank", 0, NULL, 'U'},
+       {"undo", 0, NULL, 'u'},
        {"wordbounds", 0, NULL, 'W'},
        {"autoindent", 0, NULL, 'i'},
        {"cut", 0, NULL, 'k'},
@@ -2053,11 +2058,11 @@ int main(int argc, char **argv)
     while ((optchr =
 #ifdef HAVE_GETOPT_LONG
        getopt_long(argc, argv,
-               "h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tvwxz",
+               "h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tuvwxz",
                long_options, NULL)
 #else
        getopt(argc, argv,
-               "h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tvwxz")
+               "h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tuvwxz")
 #endif
                ) != -1) {
        switch (optchr) {
@@ -2206,6 +2211,11 @@ int main(int argc, char **argv)
            case 't':
                SET(TEMP_FILE);
                break;
+#ifndef NANO_TINY
+           case 'u':
+               use_undo = TRUE;
+               break;
+#endif
            case 'v':
                SET(VIEW_MODE);
                break;
index 94866cb518a92adc305b229cd4e06c5404fb3d3b..700a5cebe3a50480dc7bf9e63fab7c06f7eab07b 100644 (file)
@@ -30,6 +30,7 @@
 #ifndef NANO_TINY
 extern sigjmp_buf jump_buf;
 extern bool jump_buf_main;
+extern bool use_undo;
 #endif
 
 #ifndef DISABLE_WRAPJUSTIFY
index 363000663a04defeb9d2442f39bf6d7671a9e37c..6c6e64a0133c97ac087b43cb2ca9f9bc43e8fa8c 100644 (file)
@@ -508,9 +508,9 @@ void do_undo(void)
     case ENTER:
        undidmsg = _("line break");
        if (f->next) {
+           filestruct *foo = f->next;
            f->data = nrealloc(f->data, strlen(f->data) + strlen(f->next->data) + 1);
            strcat(f->data,  f->next->data);
-           filestruct *foo = f->next;
            unlink_node(foo);
            delete_node(foo);
        }
@@ -555,7 +555,7 @@ void do_undo(void)
 void do_redo(void)
 {
     undo *u = openfile->undotop;
-    filestruct *f = openfile->current, *t;
+    filestruct *f = openfile->current;
     int len = 0;
     char *undidmsg, *data;
 
@@ -829,6 +829,9 @@ void add_undo(undo_type current_action)
     static undo *last_cutu = NULL; /* Last thing we cut to set up the undo for uncut */
     ssize_t wrap_loc;  /* For calculating split beginning */
 
+    if (!use_undo)
+       return;
+
     /* Ugh, if we were called while cutting not-to-end, non-marked and on the same lineno,
        we need to  abort here */
     u = fs->current_undo;
@@ -951,6 +954,9 @@ void update_undo(undo_type action)
     int len = 0;
     openfilestruct *fs = openfile;
 
+    if (!use_undo)
+       return;
+
 #ifdef DEBUG
         fprintf(stderr, "action = %d, fs->last_action = %d,  openfile->current->lineno = %d",
                action, fs->last_action, openfile->current->lineno);
@@ -1051,6 +1057,7 @@ void update_undo(undo_type action)
        break;
     case UNSPLIT:
        /* These cases are handled by the earlier check for a new line and action */
+    case ENTER:
     case OTHER:
        break;
     }