]> git.wh0rd.org Git - nano.git/commitdiff
Added conversion messages for DOS and Mac files, and Alt-space as do-previous-word
authorChris Allegretta <chrisa@asty.org>
Sun, 14 Oct 2001 19:05:10 +0000 (19:05 +0000)
committerChris Allegretta <chrisa@asty.org>
Sun, 14 Oct 2001 19:05:10 +0000 (19:05 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@858 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
aclocal.m4
config.h.in
files.c
nano.c

index 726ed5f2c5fdf0d045b494514618028bcdf1be07..587fd1b0689099604f34050e1ee2de8729e0984f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
 CVS code -
+- files.c:
+       - Added status messages for converted DOS and Mac files.
+         People should know that their file wasnt normally formatted.
+- nano.c:
+       - New function do_prev_word, similar to do_next_word.  Hard coded as
+         Alt-space, as next word is hard coded as control-space.
 - po/sv.po:
        - Updated Swedish translation (Christian Rose).
 - po/sv.po:
index dadaa331f4381a88f800f8d4506114325cdb4221..a9a9d423899a211759ee78c095b4d8ac3416e34a 100644 (file)
@@ -1,4 +1,4 @@
-dnl aclocal.m4 generated automatically by aclocal 1.4
+dnl aclocal.m4 generated automatically by aclocal 1.4-p4
 
 dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
@@ -125,6 +125,24 @@ for am_file in <<$1>>; do
 done<<>>dnl>>)
 changequote([,]))])
 
+#serial 1
+# This test replaces the one in autoconf.
+# Currently this macro should have the same name as the autoconf macro
+# because gettext's gettext.m4 (distributed in the automake package)
+# still uses it.  Otherwise, the use in gettext.m4 makes autoheader
+# give these diagnostics:
+#   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
+#   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
+
+undefine([AC_ISC_POSIX])
+
+AC_DEFUN([AC_ISC_POSIX],
+  [
+    dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
+    AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
+  ]
+)
+
 #serial 19
 
 dnl By default, many hosts won't let programs access large files;
@@ -797,15 +815,17 @@ AC_SUBST($1)dnl
 # Ulrich Drepper <drepper@cygnus.com>, 1996.
 #
 # This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
 
-# serial 1
+# serial 2
 
 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
 dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
 [# Extract the first word of "$2", so it can be a program name with args.
 set dummy $2; ac_word=[$]2
 AC_MSG_CHECKING([for $ac_word])
@@ -833,7 +853,7 @@ ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
   ;;
 esac])dnl
 $1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
   AC_MSG_RESULT([$]$1)
 else
   AC_MSG_RESULT(no)
index 2fce781a29b46c0be00cb89fcf24e351d9ee29a8..7fcb8da22dbb99fcf7454829ffd99851f4240d61 100644 (file)
@@ -31,9 +31,6 @@
 /* Define to `long' if <sys/types.h> doesn't define.  */
 #undef off_t
 
-/* Define if you need to in order for stat and other things to work.  */
-#undef _POSIX_SOURCE
-
 /* Define as the return type of signal handlers (int or void).  */
 #undef RETSIGTYPE
 
diff --git a/files.c b/files.c
index fdc752be414504c7ebe411fb1a3064a9e9ccbb2e..51536cd163fa44a1b70fe4208440093d479d231c 100644 (file)
--- a/files.c
+++ b/files.c
 #define _(string) (string)
 #endif
 
+/* statics for here */
+#ifndef NANO_SMALL
+static int fileformat = 0;     /* 0 = *nix, 1 = DOS, 2 = Mac */
+#endif
+
 /* Load file into edit buffer - takes data from file struct */
 void load_file(int quiet)
 {
@@ -130,6 +135,9 @@ filestruct *read_line(char *buf, filestruct * prev, int *line1ins)
     if (buf[strlen(buf) - 1] == '\r') {
        fileptr->data[strlen(buf) - 1] = 0;
        totsize--;
+
+       if (!fileformat)
+           fileformat = 1;
     }
 #endif
 
@@ -195,6 +203,7 @@ int read_file(int fd, char *filename, int quiet)
 #ifndef NANO_SMALL
        /* If it's a Mac file (no LF just a CR), handle it! */
        } else if (i > 0 && buf[i-1] == '\r') {
+           fileformat = 2;
            fileptr = read_line(buf, fileptr, &line1ins);
            num_lines++;
            buf[0] = input[0];
@@ -245,7 +254,16 @@ int read_file(int fd, char *filename, int quiet)
        /* Update the edit buffer */
        load_file(quiet);
     }
-    statusbar(_("Read %d lines"), num_lines);
+
+#ifndef NANO_SMALL
+    if (fileformat == 2)
+       statusbar(_("Read %d lines (Converted Mac format)"), num_lines);
+    else if (fileformat == 1)
+       statusbar(_("Read %d lines (Converted DOS format)"), num_lines);
+    else
+#endif
+       statusbar(_("Read %d lines"), num_lines);
+
     totlines += num_lines;
 
     free(buf);
diff --git a/nano.c b/nano.c
index d91ff69b1c3aec3b8fb19dfdff0bf72140f986d9..922eae54b523467a4a0c7dc26fdc02512bd32d00 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -235,6 +235,7 @@ void global_init(int save_cutbuffer)
     hblank = charalloc(COLS + 1);
     memset(hblank, ' ', COLS);
     hblank[COLS] = 0;
+
 }
 
 #ifndef DISABLE_HELP
@@ -817,6 +818,74 @@ void do_next_word(void)
 
        update_line(current, current_x);
     }
+}
+
+/* the same thing for backwards */
+void do_prev_word(void)
+{
+    filestruct *fileptr, *old;
+    int i;
+
+    if (current == NULL)
+       return;
+
+    old = current;
+    i = current_x;
+    for (fileptr = current; fileptr != NULL; fileptr = fileptr->prev) {
+       if (fileptr == current) {
+           while (isalnum((int) fileptr->data[i])
+                  && i != 0)
+               i--;
+
+           if (i == 0) {
+               if (fileptr->prev != NULL)
+                   i = strlen(fileptr->prev->data) - 1;
+               else if (fileptr == fileage && filebot != NULL)
+                   i = strlen(filebot->data) - 1;
+
+               continue;
+           }
+       }
+
+       while (!isalnum((int) fileptr->data[i]) && i != 0)
+           i--;
+
+       if (i > 0) {
+           i--;
+
+           while (isalnum((int) fileptr->data[i]) && i != 0)
+               i--;
+
+           i++;
+           if (i != 0)
+               break;
+
+       }
+       if (fileptr->prev != NULL)
+           i = strlen(fileptr->prev->data) - 1;
+       else if (fileptr == fileage && filebot != NULL)
+           i = strlen(filebot->data) - 1;
+    }
+    if (fileptr == NULL)
+       current = fileage;
+    else
+       current = fileptr;
+
+    current_x = i;
+    placewewant = xplustabs();
+
+    if (current->lineno <= edittop->lineno)
+       edit_update(current, CENTER);
+    else {
+       /* If we've jumped lines, refresh the old line.  We can't just use
+        * current->prev here, because we may have skipped over some blank
+        * lines, in which case the previous line is the wrong one.
+        */
+       if (current != old)
+           update_line(old, 0);
+
+       update_line(current, current_x);
+    }
 
 }
 #endif /* NANO_SMALL */
@@ -2794,6 +2863,11 @@ int main(int argc, char *argv[])
                modify_control_seq = 1;
                keyhandled = 1;
                break;
+           case ' ':
+               /* If control-space is next word, Alt-space should be previous word */
+               do_prev_word();
+               keyhandled = 1;
+               break;
            case '[':
                switch (kbinput = wgetch(edit)) {
                case '1':       /* Alt-[-1-[0-5,7-9] = F1-F8 in X at least */