]> git.wh0rd.org Git - nano.git/commitdiff
- Add in Pico's -p flag, (-p, --preserve). To preserve the XON and XOFF...
authorChris Allegretta <chrisa@asty.org>
Sun, 5 Jan 2003 23:35:44 +0000 (23:35 +0000)
committerChris Allegretta <chrisa@asty.org>
Sun, 5 Jan 2003 23:35:44 +0000 (23:35 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1340 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
nano.c
nano.h

index ed93a4dc80dc002de081cd3207486d08d6834648..c28e2d556686d3bfadd2f03f6d68bf4697d4f663 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,11 @@ Changes
          being incompatible with pico.  Removed all code for different
          search/replace string editing and alternate shortcut list.  I'm sure
          I won't even have to ask for feedback on this one :-)
+       - Add in Pico's -p flag, (-p, --preserve).  To preserve the XON and XOFF
+         keys (^Q and ^S).  Add warning if we invoke -p and add checks for 
+         using --preserve (to skip warning) and --pico (to force showing it).  
+         New flag PRESERVE, function do_preserve_msg(), changes to main(),
+         signal_init().
        - Search history and replace history up/down cursor arrows, w/history 
          tab completion, not available w/NANO_SMALL.  Changes to 
          statusq, others (Ken Tyler).  Added shortcut to search/replace 
diff --git a/nano.c b/nano.c
index 0b8a64e4fe9f9a1fd0b5f1e9f128ab755f0f0338..a12602da22a76b74e9adce912258fa3e419e25e3 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -657,6 +657,7 @@ void usage(void)
 #ifndef DISABLE_OPERATINGDIR
     print1opt(_("-o [dir]"), _("--operatingdir=[dir]"), _("Set operating directory"));
 #endif
+    print1opt(_("-p"), _("--preserve"), _("Preserve XON (^Q) and XOFF (^S) keys"));
 #ifndef DISABLE_WRAPJUSTIFY
     print1opt(_("-r [#cols]"), _("--fill=[#cols]"), _("Set fill cols to (wrap lines at) #cols"));
 #endif
@@ -759,11 +760,20 @@ void nano_disabled_msg(void)
 }
 #endif
 
+void do_preserve_msg(void)
+{
+    fprintf(stderr, _("\nThe -p flag now invokes the Pico \"preserve\" flag.  The Pico compatibility\n"));
+    fprintf(stderr, _("flag been removed as nano is now fully Pico compatible.  Please see the nano\n"));
+    fprintf(stderr, _("FAQ for more info on this change...\n\n"));
+    fprintf(stderr, _("Press return to continue\n"));
+    while (getchar() != '\n');
+}
+
+
 #ifndef NANO_SMALL
 static int pid;                /* This is the PID of the newly forked process 
                         * below.  It must be global since the signal
                         * handler needs it. */
-
 RETSIGTYPE cancel_fork(int signal)
 {
     if (kill(pid, SIGKILL) == -1)
@@ -2754,9 +2764,11 @@ void signal_init(void)
 #ifdef _POSIX_VDISABLE
     tcgetattr(0, &term);
 
-    /* Ignore ^S, much to Chris' chagrin */
-    term.c_cc[VSTOP] = _POSIX_VDISABLE;
-
+    if (!ISSET(PRESERVE)) {
+       /* Ignore ^S and ^Q, much to Chris' chagrin */
+       term.c_cc[VSTOP] = _POSIX_VDISABLE;
+       term.c_cc[VSTART] = _POSIX_VDISABLE;
+    }
 #ifdef VDSUSP
     term.c_cc[VDSUSP] = _POSIX_VDISABLE;
 #endif /* VDSUSP */
@@ -2998,6 +3010,9 @@ int main(int argc, char *argv[])
     int keyhandled;            /* Have we handled the keystroke yet? */
     int modify_control_seq;
     const shortcut *s;
+#ifdef HAVE_GETOPT_LONG
+    int preserveopt = 0;       /* Did the cmdline include --preserve? */
+#endif
 #ifndef NANO_SMALL
     const toggle *t;
 #endif
@@ -3036,6 +3051,7 @@ int main(int argc, char *argv[])
 #ifndef DISABLE_OPERATINGDIR
        {"operatingdir", 1, 0, 'o'},
 #endif
+       {"preserve", 0, 0, 'p'},
 #ifndef DISABLE_WRAPJUSTIFY
        {"fill", 1, 0, 'r'},
 #endif
@@ -3074,7 +3090,8 @@ int main(int argc, char *argv[])
           first, so that it's handled before we call do_rcfile() and
           read the other options; don't use getopt()/getopt_long()
           here, because there's no way to reset it properly
-          afterward */
+          afterward.  Also check for the --preserve flag, and report
+          error if people are still using --pico. */
        int i;
        for (i = 1; i < argc; i++) {
            if (!strcmp(argv[i], "--"))
@@ -3084,6 +3101,10 @@ int main(int argc, char *argv[])
 #ifdef HAVE_GETOPT_LONG
            else if (!strcmp(argv[i], "--ignorercfiles"))
                SET(NO_RCFILE);
+           else if (!strcmp(argv[i], "--preserve"))
+               preserveopt = 1;
+           else if (!strcmp(argv[i], "--pico"))
+               do_preserve_msg();
 #endif
        }
     }
@@ -3216,6 +3237,11 @@ int main(int argc, char *argv[])
            break;
 #endif
        case 'p':
+           SET(PRESERVE);
+#ifdef HAVE_GETOPT_LONG
+           if (!preserveopt)
+               do_preserve_msg();
+#endif
            break;
 #ifndef DISABLE_WRAPJUSTIFY
        case 'r':
@@ -3608,6 +3634,8 @@ int main(int argc, char *argv[])
        /* Don't even think about changing this string */
        if (kbinput == 19)
            statusbar(_("XOFF ignored, mumble mumble."));
+       if (kbinput == 17)
+           statusbar(_("XON ignored, mumble mumble."));
 #endif
        /* If we're in raw mode or using Alt-Alt-x, we have to catch
           Control-S and Control-Q */
diff --git a/nano.h b/nano.h
index cc15f1345e731944b8971ab834560b6ff65bcbf7..caea215b8d1228954f31e30199b230289ffc3948 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -244,6 +244,7 @@ typedef struct historyheadtype {
 #define BACKUP_FILE            (1<<25)
 #define NO_RCFILE              (1<<26)
 #define COLOR_SYNTAX           (1<<27)
+#define PRESERVE               (1<<28)
 
 /* Control key sequences, changing these would be very very bad */