]> git.wh0rd.org Git - nano.git/commitdiff
Making ^O work the same way as under Pico when option -t is given:
authorBenno Schulenberg <bensberg@justemail.net>
Thu, 29 Oct 2015 10:36:07 +0000 (10:36 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Thu, 29 Oct 2015 10:36:07 +0000 (10:36 +0000)
writing out the file immediately, without prompting.
Patch by David Lawrence Ramsey.

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

ChangeLog
src/files.c
src/nano.c
src/proto.h

index 4635bb6c56efdbda044a7fab2d42edb44353704b..0300230c3b5d4e127158a7a1fc31c5a596161172 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-29  David Lawrence Ramsey  <pooka109@gmail.com>
+       * src/files.c (do_writeout), src/nano.c (no_current_file_name_warning,
+       do_exit): When option -t is given, make ^O work the same way as under
+       Pico, writing out the file without prompting.  And make it work even
+       better than Pico when the current file doesn't yet have a name.
+
 2015-10-28  Benno Schulenberg  <bensberg@justemail.net>
        * src/text.c (do_redo): For an INSERT, 'u->mark_begin_lineno' is not
        an actual line number, so spoof it.  It can be spoofed, because 'f'
index 491a5cc770d87dfde00f9dd1b438946f816525b6..cc8408977d2a8023d329f9dcacd763e4fb033e44 100644 (file)
@@ -2225,7 +2225,7 @@ bool do_writeout(bool exiting)
 #endif
     bool retval = FALSE;
 
-    if (exiting && openfile->filename[0] != '\0' && ISSET(TEMP_FILE)) {
+    if (openfile->filename[0] != '\0' && ISSET(TEMP_FILE)) {
        retval = write_file(openfile->filename, NULL, FALSE, OVERWRITE,
                FALSE);
 
@@ -2264,6 +2264,14 @@ bool do_writeout(bool exiting)
                  (append == APPEND) ? _("File Name to Append to") :
                  _("File Name to Write");
 
+       /* If we're not exiting, and the TEMP_FILE flag is set, and
+        * the current file doesn't have a name, warn the user before
+        * prompting for a name.  If we are exiting, we've already
+        * warned the user just before the "Save modified buffer"
+        * prompt, so we don't need to do it again. */
+       if (!exiting && openfile->filename[0] == '\0' && ISSET(TEMP_FILE))
+           no_current_file_name_warning();
+
        /* If we're using restricted mode, the filename isn't blank,
         * and we're at the "Write File" prompt, disable tab
         * completion. */
index 5d1a2ba87171648e060cf9db3a6c1bdf95970b07..bd249f3d2d6777316bf5fe979aa0e3f313cdcbba 100644 (file)
@@ -1088,6 +1088,24 @@ int no_help(void)
     return ISSET(NO_HELP) ? 2 : 0;
 }
 
+/* Indicate that the current file has no name, in a way that gets the
+ * user's attention.  This is used when trying to save a file with no
+ * name with the TEMP_FILE flag set, just before the filename prompt. */
+void no_current_file_name_warning(void)
+{
+    curs_set(0);
+
+    /* Warn that the current file has no name. */
+    statusbar(_("No file name"));
+    beep();
+
+    /* Ensure that we see the warning. */
+    doupdate();
+    napms(1800);
+
+    curs_set(1);
+}
+
 /* If the current file buffer has been modified, and the TEMP_FILE flag
  * isn't set, ask whether or not to save the file buffer.  If the
  * TEMP_FILE flag is set and the current file has a name, save it
@@ -1109,20 +1127,9 @@ void do_exit(void)
     /* Otherwise, ask the user whether or not to save. */
     else {
        /* If the TEMP_FILE flag is set, and the current file doesn't
-        * have a name, handle it the same way Pico does. */
-       if (ISSET(TEMP_FILE)) {
-           curs_set(0);
-
-           /* Warn that the current file has no name. */
-           statusbar(_("No file name"));
-           beep();
-
-           /* Ensure that we see the warning. */
-           doupdate();
-           napms(2000);
-
-           curs_set(1);
-       }
+        * have a name, warn the user before prompting for a name. */
+       if (ISSET(TEMP_FILE))
+           no_current_file_name_warning();
 
        i = do_yesno_prompt(FALSE,
                _("Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "));
index f6d1709947d82932b677747b1a5d6cd54c04f88b..7a18595f5a8b06da792b2c7f461ece1630eaa6b8 100644 (file)
@@ -475,6 +475,7 @@ void usage(void);
 void version(void);
 int more_space(void);
 int no_help(void);
+void no_current_file_name_warning(void);
 void do_exit(void);
 void signal_init(void);
 RETSIGTYPE handle_hupterm(int signal);