commit c7fa5e1f9ea2009f7ab7a38d82f1aa390a7b0e2e
parent 7f6f5a64fbffa1db311feff69deb8e8b8e6fc47e
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Tue, 18 Dec 2007 02:39:25 +0000
remove slang curses emulation support, as it's hopelessly broken, and it
doesn't make the binary very much smaller, especially when --enable-tiny
is used
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4203 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
6 files changed, 19 insertions(+), 252 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,5 +1,10 @@
2007-12-17 David Lawrence Ramsey <pooka109@gmail.com>
+ * configure.ac, doc/texinfo/nano.texi, nano.c (version,
+ handle_sigwinch, terminal_init), winio.c (total_redraw): Remove
+ slang curses emulation support, as it's hopelessly broken, and
+ it doesn't make the binary very much smaller, especially when
+ --enable-tiny is used.
* nano.c (disable_signals, main): Simplify terminal handling by
using raw mode instead of cbreak mode. This eliminates the need
for disable_signals().
diff --git a/configure.ac b/configure.ac
@@ -185,193 +185,6 @@ fi],
[enable_utf8=auto])
AC_MSG_RESULT($enable_utf8)
-AC_MSG_CHECKING([whether to use slang])
-CURSES_LIB_NAME=""
-AC_ARG_WITH(slang,
-[ --with-slang[=DIR] Use the slang library instead of curses],
-[ case "$with_slang" in
- no)
- AC_MSG_RESULT(no)
- ;;
- *)
- AC_MSG_RESULT(yes)
-
- if test x$with_slang != xyes; then
- # Add additional search path
- LDFLAGS="-L$with_slang/lib $LDFLAGS"
- CPPFLAGS="-I$with_slang/include $CPPFLAGS"
- fi
-
- if test x$enable_utf8 != xno; then
- AC_CHECK_HEADER(slcurses.h,
- AC_MSG_CHECKING([for SLutf8_enable in -lslang])
- _libs=$LIBS
- LIBS="$LIBS -lslang"
- AC_TRY_RUN([
-#include <slcurses.h>
-int main(void)
-{
- SLutf8_enable(1);
- return 0;
-}],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
- CURSES_LIB_WIDE=yes
- if test x$with_slang != xyes; then
- CURSES_LIB="-L${with_slang}/lib -lslang"
- else
- CURSES_LIB="-lslang"
- fi
- CURSES_LIB_NAME=slang],
- [AC_MSG_RESULT(no)
-
- # We might need the term library
- for termlib in ncurses curses termcap terminfo termlib; do
- AC_CHECK_LIB([${termlib}], tputs, [tcap="-l$termlib"])
- test -n "$tcap" && break
- done
-
- AC_MSG_CHECKING([for SLutf8_enable in -lslang $tcap])
- LIBS="$LIBS $tcap"
- AC_TRY_RUN([
-#include <slcurses.h>
-int main(void)
-{
- SLutf8_enable(1);
- return 0;
-}],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
- CURSES_LIB_WIDE=yes
- if test x$with_slang != xyes; then
- CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
- else
- CURSES_LIB="-lslang $tcap"
- fi
- CURSES_LIB_NAME=slang],
- [AC_MSG_RESULT(no)
-
- # We might need the math library
- AC_MSG_CHECKING([for SLutf8_enable in -lslang $tcap -lm])
- LIBS="$LIBS -lm"
- AC_TRY_RUN([
-#include <slcurses.h>
-int main(void)
-{
- SLutf8_enable(1);
- return 0;
-}],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
- CURSES_LIB_WIDE=yes
- if test x$with_slang != xyes; then
- CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
- else
- CURSES_LIB="-lslang $tcap -lm"
- fi
- CURSES_LIB_NAME=slang],
- [AC_MSG_RESULT(no)],
- AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
- AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
- AC_MSG_WARN([*** Can not use slang when cross-compiling])),
- AC_MSG_ERROR([
-*** The header file slcurses.h was not found. If you wish to use
-*** slang support this header file is required. Please either
-*** install a version of slang that includes the slcurses.h file or
-*** do not call the configure script with --with-slang.]))
- fi
-
- if eval "test x$CURSES_LIB_NAME = x"; then
- # Reset libs if the above slang tests failed
- if test x$enable_utf8 != xno; then
- LIBS=$_libs
- fi
-
- AC_CHECK_HEADER(slcurses.h,
- AC_MSG_CHECKING([for SLtt_initialize in -lslang])
- _libs=$LIBS
- LIBS="$LIBS -lslang"
- AC_TRY_RUN([
-#include <slcurses.h>
-int main(void)
-{
- SLtt_initialize(NULL);
- return 0;
-}],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
- if test x$with_slang != xyes; then
- CURSES_LIB="-L${with_slang}/lib -lslang"
- else
- CURSES_LIB="-lslang"
- fi
- CURSES_LIB_NAME=slang],
- [AC_MSG_RESULT(no)
-
- # We might need the term library
- for termlib in ncurses curses termcap terminfo termlib; do
- AC_CHECK_LIB([${termlib}], tputs, [tcap="-l$termlib"])
- test -n "$tcap" && break
- done
-
- AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap])
- LIBS="$LIBS $tcap"
- AC_TRY_RUN([
-#include <slcurses.h>
-int main(void)
-{
- SLtt_initialize(NULL);
- return 0;
-}],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
- if test x$with_slang != xyes; then
- CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
- else
- CURSES_LIB="-lslang $tcap"
- fi
- CURSES_LIB_NAME=slang],
- [AC_MSG_RESULT(no)
-
- # We might need the math library
- AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap -lm])
- LIBS="$LIBS -lm"
- AC_TRY_RUN([
-#include <slcurses.h>
-int main(void)
-{
- SLtt_initialize(NULL);
- return 0;
-}],
- [AC_MSG_RESULT(yes)
- AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
- if test x$with_slang != xyes; then
- CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
- else
- CURSES_LIB="-lslang $tcap -lm"
- fi
- CURSES_LIB_NAME=slang],
- [AC_MSG_RESULT(no)],
- AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
- AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
- AC_MSG_WARN([*** Can not use slang when cross-compiling])),
- AC_MSG_ERROR([
-*** The header file slcurses.h was not found. If you wish to use
-*** slang support this header file is required. Please either
-*** install a version of slang that includes the slcurses.h file or
-*** do not call the configure script with --with-slang.]))
- fi
-
- if test "${_libs+set}" = "set"; then
- LIBS=$_libs
- fi
-
- if test x$with_slang != xyes; then
- LDFLAGS=${_ldflags}
- fi
- ;;
- esac], [AC_MSG_RESULT(no)])
-
AM_CONDITIONAL(USE_COLOR, test x$color_support = xyes)
AM_CONDITIONAL(USE_NANORC, test x$nanorc_support = xyes)
@@ -466,16 +279,14 @@ else
AC_MSG_ERROR([
*** UTF-8 support was requested, but insufficient UTF-8 support was
*** detected in your curses and/or C libraries. Please verify that your
-*** slang was built with UTF-8 support or your curses was built with
-*** wide character support, and that your C library was built with wide
-*** character support.])
+*** curses was built with wide character support, and that your C
+*** library was built with wide character support.])
elif test x$enable_utf8 != xno; then
AC_MSG_WARN([
*** Insufficient UTF-8 support was detected in your curses and/or C
-*** libraries. If you want UTF-8 support, please verify that your slang
-*** was built with UTF-8 support or your curses was built with wide
-*** character support, and that your C library was built with wide
-*** character support.])
+*** libraries. If you want UTF-8 support, please verify that your
+*** curses was built with wide character support, and that your C
+*** library was built with wide character support.])
fi
fi
diff --git a/doc/texinfo/nano.texi b/doc/texinfo/nano.texi
@@ -9,7 +9,7 @@
@smallbook
@set EDITION 0.1
@set VERSION 2.0.0
-@set UPDATED 23 Aug 2007
+@set UPDATED 17 Dec 2007
@dircategory Editors
@direntry
@@ -842,15 +842,11 @@ Disable long line wrapping by default when nano is run as root.
@item --enable-utf8
Enable support for reading and writing Unicode files. This will require
-either the wide version of ncurses, or a UTF-8-enabled version of Slang.
+a wide version of curses.
@item --disable-utf8
Disable support for reading and writing Unicode files.
-@item --with-slang
-Compiling @code{nano} with Slang is supported, and will make the binary
-notably smaller than if compiled with ncurses or other curses libraries.
-
@end table
@contents
diff --git a/src/nano.c b/src/nano.c
@@ -945,9 +945,6 @@ void version(void)
#ifdef ENABLE_UTF8
printf(" --enable-utf8");
#endif
-#ifdef USE_SLANG
- printf(" --with-slang");
-#endif
printf("\n");
}
@@ -1146,19 +1143,10 @@ RETSIGTYPE handle_sigwinch(int signal)
if (filepart != NULL)
unpartition_filestruct(&filepart);
-#ifdef USE_SLANG
- /* Slang curses emulation brain damage, part 1: If we just do what
- * curses does here, it'll only work properly if the resize made the
- * window smaller. Do what mutt does: Leave and immediately reenter
- * Slang screen management mode. */
- SLsmg_reset_smg();
- SLsmg_init_smg();
-#else
/* Do the equivalent of what Minimum Profit does: Leave and
* immediately reenter curses mode. */
endwin();
doupdate();
-#endif
/* Restore the terminal to its previous state. */
terminal_init();
@@ -1303,31 +1291,12 @@ void enable_flow_control(void)
* control characters. */
void terminal_init(void)
{
-#ifdef USE_SLANG
- /* Slang curses emulation brain damage, part 2: Slang doesn't
- * implement nonl() or noecho() properly, so there's no way to
- * properly reinitialize the terminal using them. We have to save
- * the terminal state after the first call and restore it on
- * subsequent calls. */
- static struct termios newterm;
- static bool newterm_set = FALSE;
-
- if (!newterm_set) {
-#endif
-
- raw();
- nonl();
- noecho();
- disable_extended_io();
- if (ISSET(PRESERVE))
- enable_flow_control();
-
-#ifdef USE_SLANG
- tcgetattr(0, &newterm);
- newterm_set = TRUE;
- } else
- tcsetattr(0, TCSANOW, &newterm);
-#endif
+ raw();
+ nonl();
+ noecho();
+ disable_extended_io();
+ if (ISSET(PRESERVE))
+ enable_flow_control();
}
/* Read in a character, interpret it as a shortcut or toggle if
diff --git a/src/nano.h b/src/nano.h
@@ -61,15 +61,8 @@
#define PATH_MAX 4096
#endif
-#ifdef USE_SLANG
-/* Slang support. */
-#include <slcurses.h>
-/* Slang curses emulation brain damage, part 3: Slang doesn't define the
- * curses equivalents of the Insert or Delete keys. */
-#define KEY_DC SL_KEY_DELETE
-#define KEY_IC SL_KEY_IC
/* Ncurses support. */
-#elif defined(HAVE_NCURSES_H)
+#ifdef HAVE_NCURSES_H
#include <ncurses.h>
#else
/* Curses support. */
diff --git a/src/winio.c b/src/winio.c
@@ -3167,14 +3167,7 @@ void edit_update(update_type location)
/* Unconditionally redraw the entire screen. */
void total_redraw(void)
{
-#ifdef USE_SLANG
- /* Slang curses emulation brain damage, part 4: Slang doesn't define
- * curscr. */
- SLsmg_touch_screen();
- SLsmg_refresh();
-#else
wrefresh(curscr);
-#endif
}
/* Unconditionally redraw the entire screen, and then refresh it using