Added conversion messages for DOS and Mac files, and Alt-space as do-previous-word

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@858 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
Chris Allegretta 2001-10-14 19:05:10 +00:00
parent ab23fbd019
commit 76e291beee
5 changed files with 126 additions and 11 deletions

View File

@ -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:

34
aclocal.m4 vendored
View 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)

View 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

18
files.c
View File

@ -43,6 +43,11 @@
#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);
}
#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);

74
nano.c
View File

@ -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 */