diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/Makefile.in readline/Makefile.in --- /space/symbian/readline/readline-5.1/Makefile.in 2005-05-07 21:11:23.000000000 -0400 +++ readline/Makefile.in 2006-04-07 14:11:12.000000000 -0400 @@ -27,7 +27,7 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ top_srcdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ @@ -98,6 +98,8 @@ GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT LIBRARY_NAME = libreadline.a STATIC_LIBS = libreadline.a libhistory.a +WCWIDTH_OBJ = @WCWIDTH_OBJ@ + # The C code source files for this library. CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \ $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \ @@ -110,7 +112,7 @@ CSOURCES = $(srcdir)/readline.c $(srcdir $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \ $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \ $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \ - $(srcdir)/mbutil.c + $(srcdir)/mbutil.c $(srcdir)/support/wcwidth.c # The header files for this library. HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ @@ -123,7 +125,8 @@ TILDEOBJ = tilde.o OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \ rltty.o complete.o bind.o isearch.o display.o signals.o \ util.o kill.o undo.o macro.o input.o callback.o terminal.o \ - text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) + text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) \ + $(WCWIDTH_OBJ) # The texinfo files which document this library. DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo @@ -159,6 +162,10 @@ libhistory.a: $(HISTOBJ) xmalloc.o $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o -test -n "$(RANLIB)" && $(RANLIB) $@ +wcwidth.o: $(srcdir)/support/wcwidth.c + $(RM) $@ + $(CC) $(CCFLAGS) -c $(srcdir)/support/wcwidth.c + # Since tilde.c is shared between readline and bash, make sure we compile # it with the right flags when it's built as part of readline tilde.o: tilde.c @@ -217,7 +224,17 @@ uninstall-headers: maybe-uninstall-headers: uninstall-headers -install: $(INSTALL_TARGETS) +## GDB LOCAL +## Don't mess with people's installed readline's. +## This tries to install this version of readline over whatever +## version is already installed on the system (which could be a +## newer version). There is no real reason for us to install +## readline along with GDB. GDB links statically against readline, +## so it doesn't depend on us installing it on the system. + +install: + +#install: $(INSTALL_TARGETS) install-static: installdirs $(STATIC_LIBS) install-headers install-doc -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/aclocal.m4 readline/aclocal.m4 --- /space/symbian/readline/readline-5.1/aclocal.m4 2005-05-09 15:23:14.000000000 -0400 +++ readline/aclocal.m4 2006-04-07 14:11:12.000000000 -0400 @@ -1680,6 +1680,13 @@ AC_CHECK_FUNC(wctomb, AC_DEFINE(HAVE_WCT AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP)) +if test "$ac_cv_func_wcwidth" = no && test "$ac_cv_header_wchar_h" = yes; then + WCWIDTH_OBJ=wcwidth.o +else + WCWIDTH_OBJ= +fi +AC_SUBST(WCWIDTH_OBJ) + AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, [AC_TRY_COMPILE([ #include ], [ diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/configure.in readline/configure.in --- /space/symbian/readline/readline-5.1/configure.in 2005-12-01 09:37:11.000000000 -0500 +++ readline/configure.in 2006-04-07 14:11:12.000000000 -0400 @@ -30,7 +30,9 @@ dnl make sure we are using a recent auto AC_PREREQ(2.50) AC_CONFIG_SRCDIR(readline.h) -AC_CONFIG_AUX_DIR(./support) +dnl GDB LOCAL +dnl AC_CONFIG_AUX_DIR(./support) +AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..) AC_CONFIG_HEADERS(config.h) dnl update the value of RL_READLINE_VERSION in readline.h when this changes @@ -59,10 +61,9 @@ fi dnl option parsing for optional features opt_multibyte=yes opt_static_libs=yes -opt_shared_libs=yes +opt_shared_libs=no AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) -AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval) AC_ARG_ENABLE(static, AC_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval) if test $opt_multibyte = no; then @@ -110,6 +111,44 @@ AC_PROG_CC dnl AC_AIX AC_MINIX +dnl BEGIN changes for CYGNUS cross-building for Cygwin +dnl NOTE: Some of these changes may no longer be necessary. + +dnl load up the cross-building cache file -- add more cases and cache +dnl files as necessary +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin.cache + LOCAL_CFLAGS="$LOCAL_CFLAGS -I${srcdir}/../libtermcap" + ;; + *-mingw32*) + cross_cache=${srcdir}/cross-build/mingw.cache + ;; + *) echo "configure: cross-compiling for a non-cygwin target is not supported" >&2 + ;; + esac + + if test "x$cross_cache" != "x"; then + if test -r "${cross_cache}"; then + echo "loading cross-build cache file ${cross_cache}" + . ${cross_cache} + fi + unset cross_cache + fi +fi + +if test -z "$CC_FOR_BUILD"; then + if test "x$cross_compiling" = "xno"; then + CC_FOR_BUILD='$(CC)' + else + CC_FOR_BUILD=gcc + fi +fi +AC_SUBST(CC_FOR_BUILD) + +dnl END changes for CYGNUS cross-building for Cygwin + # If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS. test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O" diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/cross-build/cygwin.cache readline/cross-build/cygwin.cache --- /space/symbian/readline/readline-5.1/cross-build/cygwin.cache 1969-12-31 19:00:00.000000000 -0500 +++ readline/cross-build/cygwin.cache 2006-04-07 14:11:12.000000000 -0400 @@ -0,0 +1,46 @@ +# This file is a shell script that caches the results of configure +# tests for CYGWIN32 so they don't need to be done when cross-compiling. + +# AC_FUNC_GETPGRP should also define GETPGRP_VOID +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +# AC_FUNC_SETVBUF_REVERSED should not define anything else +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +# on CYGWIN32, system calls do not restart +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} +bash_cv_sys_restartable_syscalls=${bash_cv_sys_restartable_syscalls='no'} + +# these may be necessary, but they are currently commented out +#ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} + +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='long'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='no'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_printf_declared=${bash_cv_printf_declared='yes'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen='no'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='missing'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='present'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} +bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t='yes'} + +bash_cv_type_int32_t=${bash_cv_type_int32_t='int'} +bash_cv_type_u_int32_t=${bash_cv_type_u_int32_t='int'} +ac_cv_header_termcap_h=${ac_cv_header_termcap_h='yes'} +ac_cv_header_termios_h=${ac_cv_header_termios_h='yes'} +bash_cv_termcap_lib=${bash_cv_termcap_lib='-ltermcap'} + +bash_cv_tiocgwinsz_in_ioctl=${bash_cv_tiocgwinsz_in_ioctl='yes'} +ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent='yes'} + +# end of cross-build/cygwin32.cache diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/display.c readline/display.c --- /space/symbian/readline/readline-5.1/display.c 2006-04-10 13:51:38.000000000 -0400 +++ readline/display.c 2006-04-07 14:11:12.000000000 -0400 @@ -41,6 +41,10 @@ #include +#ifdef __MSDOS__ +# include +#endif + /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" @@ -1782,9 +1786,18 @@ _rl_move_vert (to) } else { /* delta < 0 */ +#ifdef __MSDOS__ + int row, col; + + fflush (rl_outstream); /* make sure the cursor pos is current! */ + ScreenGetCursor (&row, &col); + ScreenSetCursor (row + delta, col); + i = -delta; /* in case someone wants to use it after the loop */ +#else /* !__MSDOS__ */ if (_rl_term_up && *_rl_term_up) for (i = 0; i < -delta; i++) tputs (_rl_term_up, 1, _rl_output_character_function); +#endif } _rl_last_v_pos = to; /* Now TO is here */ @@ -2038,9 +2051,12 @@ void _rl_clear_to_eol (count) int count; { +#ifndef __MSDOS__ if (_rl_term_clreol) tputs (_rl_term_clreol, 1, _rl_output_character_function); - else if (count) + else +#endif + if (count) space_to_eol (count); } @@ -2061,10 +2077,15 @@ space_to_eol (count) void _rl_clear_screen () { +#if defined (__GO32__) + ScreenClear (); /* FIXME: only works in text modes */ + ScreenSetCursor (0, 0); /* term_clrpag is "cl" which homes the cursor */ +#else if (_rl_term_clrpag) tputs (_rl_term_clrpag, 1, _rl_output_character_function); else rl_crlf (); +#endif } /* Insert COUNT characters from STRING to the output stream at column COL. */ diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/doc/inc-hist.texinfo readline/doc/inc-hist.texinfo --- /space/symbian/readline/readline-5.1/doc/inc-hist.texinfo 1969-12-31 19:00:00.000000000 -0500 +++ readline/doc/inc-hist.texinfo 2006-04-07 14:11:12.000000000 -0400 @@ -0,0 +1,457 @@ +@ignore +This file documents the user interface to the GNU History library. + +Copyright (C) 1988-2002 Free Software Foundation, Inc. +Authored by Brian Fox and Chet Ramey. + +Permission is granted to make and distribute verbatim copies of this manual +provided the copyright notice and this permission notice are preserved on +all copies. + +Permission is granted to process this file through Tex and print the +results, provided the printed document carries copying permission notice +identical to this one except for the removal of this paragraph (this +paragraph not being relevant to the printed manual). + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, and provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end ignore + +@node Using History Interactively +@chapter Using History Interactively + +@c @ifclear BashFeatures +@c @defcodeindex bt +@c @end ifclear + +@ifset BashFeatures +This chapter describes how to use the @sc{gnu} History Library +interactively, from a user's standpoint. +It should be considered a user's guide. +For information on using the @sc{gnu} History Library in other programs, +see the @sc{gnu} Readline Library Manual. +@end ifset +@ifclear BashFeatures +This chapter describes how to use the @sc{gnu} History Library interactively, +from a user's standpoint. It should be considered a user's guide. +For information on using the @sc{gnu} History Library in other programs, +see the @sc{gnu} Readline Library Manual. +@end ifclear + +@ifset BashFeatures +@menu +* Bash History Facilities:: How Bash lets you manipulate your command + history. +* Bash History Builtins:: The Bash builtin commands that manipulate + the command history. +* History Interaction:: What it feels like using History as a user. +@end menu +@end ifset +@ifclear BashFeatures +@menu +* History Interaction:: What it feels like using History as a user. +@end menu +@end ifclear + +@ifset BashFeatures +@node Bash History Facilities +@section Bash History Facilities +@cindex command history +@cindex history list + +When the @option{-o history} option to the @code{set} builtin +is enabled (@pxref{The Set Builtin}), +the shell provides access to the @dfn{command history}, +the list of commands previously typed. +The value of the @env{HISTSIZE} shell variable is used as the +number of commands to save in a history list. +The text of the last @env{$HISTSIZE} +commands (default 500) is saved. +The shell stores each command in the history list prior to +parameter and variable expansion +but after history expansion is performed, subject to the +values of the shell variables +@env{HISTIGNORE} and @env{HISTCONTROL}. + +When the shell starts up, the history is initialized from the +file named by the @env{HISTFILE} variable (default @file{~/.bash_history}). +The file named by the value of @env{HISTFILE} is truncated, if +necessary, to contain no more than the number of lines specified by +the value of the @env{HISTFILESIZE} variable. +When an interactive shell exits, the last +@env{$HISTSIZE} lines are copied from the history list to the file +named by @env{$HISTFILE}. +If the @code{histappend} shell option is set (@pxref{Bash Builtins}), +the lines are appended to the history file, +otherwise the history file is overwritten. +If @env{HISTFILE} +is unset, or if the history file is unwritable, the history is +not saved. After saving the history, the history file is truncated +to contain no more than @env{$HISTFILESIZE} +lines. If @env{HISTFILESIZE} is not set, no truncation is performed. + +If the @env{HISTTIMEFORMAT} is set, the time stamp information +associated with each history entry is written to the history file. + +The builtin command @code{fc} may be used to list or edit and re-execute +a portion of the history list. +The @code{history} builtin may be used to display or modify the history +list and manipulate the history file. +When using command-line editing, search commands +are available in each editing mode that provide access to the +history list (@pxref{Commands For History}). + +The shell allows control over which commands are saved on the history +list. The @env{HISTCONTROL} and @env{HISTIGNORE} +variables may be set to cause the shell to save only a subset of the +commands entered. +The @code{cmdhist} +shell option, if enabled, causes the shell to attempt to save each +line of a multi-line command in the same history entry, adding +semicolons where necessary to preserve syntactic correctness. +The @code{lithist} +shell option causes the shell to save the command with embedded newlines +instead of semicolons. +The @code{shopt} builtin is used to set these options. +@xref{Bash Builtins}, for a description of @code{shopt}. + +@node Bash History Builtins +@section Bash History Builtins +@cindex history builtins + +Bash provides two builtin commands which manipulate the +history list and history file. + +@table @code + +@item fc +@btindex fc +@example +@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]} +@code{fc -s [@var{pat}=@var{rep}] [@var{command}]} +@end example + +Fix Command. In the first form, a range of commands from @var{first} to +@var{last} is selected from the history list. Both @var{first} and +@var{last} may be specified as a string (to locate the most recent +command beginning with that string) or as a number (an index into the +history list, where a negative number is used as an offset from the +current command number). If @var{last} is not specified it is set to +@var{first}. If @var{first} is not specified it is set to the previous +command for editing and @minus{}16 for listing. If the @option{-l} flag is +given, the commands are listed on standard output. The @option{-n} flag +suppresses the command numbers when listing. The @option{-r} flag +reverses the order of the listing. Otherwise, the editor given by +@var{ename} is invoked on a file containing those commands. If +@var{ename} is not given, the value of the following variable expansion +is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the +value of the @env{FCEDIT} variable if set, or the value of the +@env{EDITOR} variable if that is set, or @code{vi} if neither is set. +When editing is complete, the edited commands are echoed and executed. + +In the second form, @var{command} is re-executed after each instance +of @var{pat} in the selected command is replaced by @var{rep}. + +A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so +that typing @samp{r cc} runs the last command beginning with @code{cc} +and typing @samp{r} re-executes the last command (@pxref{Aliases}). + +@item history +@btindex history +@example +history [@var{n}] +history -c +history -d @var{offset} +history [-anrw] [@var{filename}] +history -ps @var{arg} +@end example + +With no options, display the history list with line numbers. +Lines prefixed with a @samp{*} have been modified. +An argument of @var{n} lists only the last @var{n} lines. +If the shell variable @env{HISTTIMEFORMAT} is set and not null, +it is used as a format string for @var{strftime} to display +the time stamp associated with each displayed history entry. +No intervening blank is printed between the formatted time stamp +and the history line. + +Options, if supplied, have the following meanings: + +@table @code +@item -c +Clear the history list. This may be combined +with the other options to replace the history list completely. + +@item -d @var{offset} +Delete the history entry at position @var{offset}. +@var{offset} should be specified as it appears when the history is +displayed. + +@item -a +Append the new +history lines (history lines entered since the beginning of the +current Bash session) to the history file. + +@item -n +Append the history lines not already read from the history file +to the current history list. These are lines appended to the history +file since the beginning of the current Bash session. + +@item -r +Read the current history file and append its contents to +the history list. + +@item -w +Write out the current history to the history file. + +@item -p +Perform history substitution on the @var{arg}s and display the result +on the standard output, without storing the results in the history list. + +@item -s +The @var{arg}s are added to the end of +the history list as a single entry. + +@end table + +When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is +used, if @var{filename} +is given, then it is used as the history file. If not, then +the value of the @env{HISTFILE} variable is used. + +@end table +@end ifset + +@node History Interaction +@section History Expansion +@cindex history expansion + +The History library provides a history expansion feature that is similar +to the history expansion provided by @code{csh}. This section +describes the syntax used to manipulate the history information. + +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. + +History expansion takes place in two parts. The first is to determine +which line from the history list should be used during substitution. +The second is to select portions of that line for inclusion into the +current one. The line selected from the history is called the +@dfn{event}, and the portions of that line that are acted upon are +called @dfn{words}. Various @dfn{modifiers} are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words +surrounded by quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is @samp{!} by default. +@ifset BashFeatures +Only @samp{\} and @samp{'} may be used to escape the history expansion +character. +@end ifset + +@ifset BashFeatures +Several shell options settable with the @code{shopt} +builtin (@pxref{Bash Builtins}) may be used to tailor +the behavior of history expansion. If the +@code{histverify} shell option is enabled, and Readline +is being used, history substitutions are not immediately passed to +the shell parser. +Instead, the expanded line is reloaded into the Readline +editing buffer for further modification. +If Readline is being used, and the @code{histreedit} +shell option is enabled, a failed history expansion will be +reloaded into the Readline editing buffer for correction. +The @option{-p} option to the @code{history} builtin command +may be used to see what a history expansion will do before using it. +The @option{-s} option to the @code{history} builtin may be used to +add commands to the end of the history list without actually executing +them, so that they are available for subsequent recall. +This is most useful in conjunction with Readline. + +The shell allows control of the various characters used by the +history expansion mechanism with the @code{histchars} variable. +@end ifset + +@menu +* Event Designators:: How to specify which history line to use. +* Word Designators:: Specifying which words are of interest. +* Modifiers:: Modifying the results of substitution. +@end menu + +@node Event Designators +@subsection Event Designators +@cindex event designators + +An event designator is a reference to a command line entry in the +history list. +@cindex history events + +@table @asis + +@item @code{!} +@ifset BashFeatures +Start a history substitution, except when followed by a space, tab, +the end of the line, @samp{=} or @samp{(} (when the +@code{extglob} shell option is enabled using the @code{shopt} builtin). +@end ifset +@ifclear BashFeatures +Start a history substitution, except when followed by a space, tab, +the end of the line, or @samp{=}. +@end ifclear + +@item @code{!@var{n}} +Refer to command line @var{n}. + +@item @code{!-@var{n}} +Refer to the command @var{n} lines back. + +@item @code{!!} +Refer to the previous command. This is a synonym for @samp{!-1}. + +@item @code{!@var{string}} +Refer to the most recent command starting with @var{string}. + +@item @code{!?@var{string}[?]} +Refer to the most recent command containing @var{string}. The trailing +@samp{?} may be omitted if the @var{string} is followed immediately by +a newline. + +@item @code{^@var{string1}^@var{string2}^} +Quick Substitution. Repeat the last command, replacing @var{string1} +with @var{string2}. Equivalent to +@code{!!:s/@var{string1}/@var{string2}/}. + +@item @code{!#} +The entire command line typed so far. + +@end table + +@node Word Designators +@subsection Word Designators + +Word designators are used to select desired words from the event. +A @samp{:} separates the event specification from the word designator. It +may be omitted if the word designator begins with a @samp{^}, @samp{$}, +@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning +of the line, with the first word being denoted by 0 (zero). Words are +inserted into the current line separated by single spaces. + +@need 0.75 +For example, + +@table @code +@item !! +designates the preceding command. When you type this, the preceding +command is repeated in toto. + +@item !!:$ +designates the last argument of the preceding command. This may be +shortened to @code{!$}. + +@item !fi:2 +designates the second argument of the most recent command starting with +the letters @code{fi}. +@end table + +@need 0.75 +Here are the word designators: + +@table @code + +@item 0 (zero) +The @code{0}th word. For many applications, this is the command word. + +@item @var{n} +The @var{n}th word. + +@item ^ +The first argument; that is, word 1. + +@item $ +The last argument. + +@item % +The word matched by the most recent @samp{?@var{string}?} search. + +@item @var{x}-@var{y} +A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}. + +@item * +All of the words, except the @code{0}th. This is a synonym for @samp{1-$}. +It is not an error to use @samp{*} if there is just one word in the event; +the empty string is returned in that case. + +@item @var{x}* +Abbreviates @samp{@var{x}-$} + +@item @var{x}- +Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word. + +@end table + +If a word designator is supplied without an event specification, the +previous command is used as the event. + +@node Modifiers +@subsection Modifiers + +After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a @samp{:}. + +@table @code + +@item h +Remove a trailing pathname component, leaving only the head. + +@item t +Remove all leading pathname components, leaving the tail. + +@item r +Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving +the basename. + +@item e +Remove all but the trailing suffix. + +@item p +Print the new command but do not execute it. + +@ifset BashFeatures +@item q +Quote the substituted words, escaping further substitutions. + +@item x +Quote the substituted words as with @samp{q}, +but break into words at spaces, tabs, and newlines. +@end ifset + +@item s/@var{old}/@var{new}/ +Substitute @var{new} for the first occurrence of @var{old} in the +event line. Any delimiter may be used in place of @samp{/}. +The delimiter may be quoted in @var{old} and @var{new} +with a single backslash. If @samp{&} appears in @var{new}, +it is replaced by @var{old}. A single backslash will quote +the @samp{&}. The final delimiter is optional if it is the last +character on the input line. + +@item & +Repeat the previous substitution. + +@item g +@itemx a +Cause changes to be applied over the entire event line. Used in +conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/}, +or with @samp{&}. + +@item G +Apply the following @samp{s} modifier once to each word in the event. + +@end table diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/emacs_keymap.c readline/emacs_keymap.c --- /space/symbian/readline/readline-5.1/emacs_keymap.c 2001-11-29 12:04:56.000000000 -0500 +++ readline/emacs_keymap.c 2006-04-07 15:59:12.000000000 -0400 @@ -278,7 +278,13 @@ KEYMAP_ENTRY_ARRAY emacs_standard_keymap { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */ { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */ { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */ +#ifndef __MINGW32__ { ISFUNC, rl_insert }, /* Latin small letter a with grave */ +#else + /* Temporary - this is a bug in readline 5.1 that should be fixed in + readline 5.2. */ + { ISFUNC, 0 }, /* Must leave this unbound for the arrow keys to work. */ +#endif { ISFUNC, rl_insert }, /* Latin small letter a with acute */ { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */ { ISFUNC, rl_insert }, /* Latin small letter a with tilde */ diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/histfile.c readline/histfile.c --- /space/symbian/readline/readline-5.1/histfile.c 2004-03-03 22:39:33.000000000 -0500 +++ readline/histfile.c 2006-04-07 14:11:12.000000000 -0400 @@ -256,7 +256,10 @@ read_history_range (filename, from, to) for (line_end = line_start; line_end < bufend; line_end++) if (*line_end == '\n') { - *line_end = '\0'; + if (line_end - 1 >= line_start && *(line_end - 1) == '\r') + *(line_end - 1) = '\0'; + else + *line_end = '\0'; if (*line_start) { diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/input.c readline/input.c --- /space/symbian/readline/readline-5.1/input.c 2005-07-04 22:30:24.000000000 -0400 +++ readline/input.c 2006-04-07 15:04:57.000000000 -0400 @@ -220,6 +220,16 @@ rl_gather_tyi () } #endif /* O_NDELAY */ +#if defined (__MINGW32__) + /* We use getch to read console input, so use the same + mechanism to check for more. Otherwise, we don't know. */ + if (isatty (fileno (rl_instream))) + chars_avail = _kbhit (); + else + chars_avail = 0; + result = 0; +#endif + /* If there's nothing available, don't waste time trying to read something. */ if (chars_avail <= 0) @@ -305,6 +315,13 @@ _rl_input_available () #endif +#if defined (__MINGW32__) + /* We use getch to read console input, so use the same + mechanism to check for more. Otherwise, we don't know. */ + if (isatty (fileno (rl_instream))) + return _kbhit (); +#endif + return 0; } diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/rlmbutil.h readline/rlmbutil.h --- /space/symbian/readline/readline-5.1/rlmbutil.h 2005-09-24 19:07:08.000000000 -0400 +++ readline/rlmbutil.h 2006-04-07 14:11:12.000000000 -0400 @@ -30,12 +30,22 @@ /************************************************/ /* For platforms which support the ISO C amendement 1 functionality we - support user defined character classes. */ + support user defined character classes. + + Some platforms have the multibyte functions such as mbsrtowcs but + are lacking the multitype type mbstate_t. BeOS (unknown version) + and HP/UX 11.23 without _XOPEN_SOURCE=500 are like this. + + We really need mbstate_t type to operate properly. For example, see + compute_lcd_of_matches, where two mbstate_t's are active at the same + time. So we require both the functions and the mbstate_t type in + order to enable multibyte support. */ + /* Solaris 2.5 has a bug: must be included before . */ #if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) # include # include -# if defined (HAVE_MBSRTOWCS) && defined (HAVE_MBRTOWC) && defined (HAVE_MBRLEN) && defined (HAVE_WCWIDTH) +# if defined (HAVE_MBSTATE_T) && defined (HAVE_MBSRTOWCS) && defined (HAVE_MBRTOWC) && defined (HAVE_MBRLEN) && defined (HAVE_WCWIDTH) /* system is supposed to support XPG5 */ # define HANDLE_MULTIBYTE 1 # endif diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/shlib/Makefile.in readline/shlib/Makefile.in --- /space/symbian/readline/readline-5.1/shlib/Makefile.in 2005-08-11 23:56:10.000000000 -0400 +++ readline/shlib/Makefile.in 2006-04-07 14:11:12.000000000 -0400 @@ -120,6 +120,8 @@ SHARED_READLINE = $(SHLIB_LIBPREF)readli SHARED_HISTORY = $(SHLIB_LIBPREF)history$(SHLIB_DOT)$(SHLIB_LIBVERSION) SHARED_LIBS = $(SHARED_READLINE) $(SHARED_HISTORY) +WCWIDTH_OBJ = @WCWIDTH_OBJ@ + # The C code source files for this library. CSOURCES = $(topdir)/readline.c $(topdir)/funmap.c $(topdir)/keymaps.c \ $(topdir)/vi_mode.c $(topdir)/parens.c $(topdir)/rltty.c \ @@ -132,7 +134,7 @@ CSOURCES = $(topdir)/readline.c $(topdir $(topdir)/histfile.c $(topdir)/nls.c $(topdir)/search.c \ $(topdir)/shell.c $(topdir)/savestring.c $(topdir)/tilde.c \ $(topdir)/text.c $(topdir)/misc.c $(topdir)/compat.c \ - $(topdir)/mbutil.c + $(topdir)/mbutil.c $(topdir)/support/wcwidth.c # The header files for this library. HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ @@ -146,7 +148,7 @@ SHARED_OBJ = readline.so vi_mode.so funm rltty.so complete.so bind.so isearch.so display.so signals.so \ util.so kill.so undo.so macro.so input.so callback.so terminal.so \ text.so nls.so misc.so xmalloc.so $(SHARED_HISTOBJ) $(SHARED_TILDEOBJ) \ - compat.so + compat.so $(WCWIDTH_OBJ) ########################################################################## @@ -170,6 +172,10 @@ $(SHARED_HISTORY): $(SHARED_HISTOBJ) xma $(RM) $@ $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS) +wcwidth.o: $(srcdir)/support/wcwidth.c + $(RM) $@ + $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_FLAGS) $(srcdir)/support/wcwidth.c + # Since tilde.c is shared between readline and bash, make sure we compile # it with the right flags when it's built as part of readline tilde.so: tilde.c diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/terminal.c readline/terminal.c --- /space/symbian/readline/readline-5.1/terminal.c 2006-04-10 13:51:38.000000000 -0400 +++ readline/terminal.c 2006-04-07 14:11:12.000000000 -0400 @@ -55,6 +55,10 @@ # include #endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ +#ifdef __MSDOS__ +# include +#endif + #include "rltty.h" #include "tcap.h" @@ -66,6 +70,11 @@ #include "rlshell.h" #include "xmalloc.h" +#if defined (__MINGW32__) +# include +# include +#endif + #define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) #define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) @@ -77,8 +86,10 @@ int rl_prefer_env_winsize; /* */ /* **************************************************************** */ +#ifndef __MSDOS__ static char *term_buffer = (char *)NULL; static char *term_string_buffer = (char *)NULL; +#endif static int tcap_initialized; @@ -207,6 +218,20 @@ _rl_get_screen_size (tty, ignore_env) } #endif /* TIOCGWINSZ */ + /* For MinGW, we get the console size from the Windows API. */ +#if defined (__MINGW32__) + HANDLE hConOut = GetStdHandle (STD_OUTPUT_HANDLE); + if (hConOut != INVALID_HANDLE_VALUE) + { + CONSOLE_SCREEN_BUFFER_INFO scr; + if (GetConsoleScreenBufferInfo (hConOut, &scr)) + { + _rl_screenwidth = scr.dwSize.X; + _rl_screenheight = scr.srWindow.Bottom - scr.srWindow.Top + 1; + } + } +#endif + #if defined (__EMX__) _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); #endif @@ -230,7 +255,10 @@ _rl_get_screen_size (tty, ignore_env) if (_rl_screenwidth <= 0) _rl_screenwidth = wc; -#if !defined (__DJGPP__) +#if defined (__DJGPP__) + if (_rl_screenwidth <= 0) + _rl_screenwidth = ScreenCols (); +#else if (_rl_screenwidth <= 0 && term_string_buffer) _rl_screenwidth = tgetnum ("co"); #endif @@ -246,7 +274,10 @@ _rl_get_screen_size (tty, ignore_env) if (_rl_screenheight <= 0) _rl_screenheight = wr; -#if !defined (__DJGPP__) +#if defined (__DJGPP__) + if (_rl_screenheight <= 0) + _rl_screenheight = ScreenRows (); +#else if (_rl_screenheight <= 0 && term_string_buffer) _rl_screenheight = tgetnum ("li"); #endif @@ -400,6 +431,23 @@ _rl_init_terminal_io (terminal_name) if (term == 0) term = "dumb"; +#ifdef __MSDOS__ + _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; + _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; + _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; + _rl_term_mm = _rl_term_mo = (char *)NULL; + _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; + _rl_term_cr = "\r"; + _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL; + _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; + _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; + _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; +#if defined(HACK_TERMCAP_MOTION) + _rl_term_forward_char = (char *)NULL; +#endif + + _rl_get_screen_size (tty, 0); +#else /* !__MSDOS__ */ /* I've separated this out for later work on not calling tgetent at all if the calling application has supplied a custom redisplay function, (and possibly if the application has supplied a custom input function). */ @@ -502,6 +550,8 @@ _rl_init_terminal_io (terminal_name) if (!term_has_meta) _rl_term_mm = _rl_term_mo = (char *)NULL; +#endif /* !__MSDOS__ */ + /* Attempt to find and bind the arrow keys. Do not override already bound keys in an overzealous attempt, however. */ @@ -598,10 +648,12 @@ _rl_backspace (count) { register int i; +#ifndef __MSDOS__ if (_rl_term_backspace) for (i = 0; i < count; i++) tputs (_rl_term_backspace, 1, _rl_output_character_function); else +#endif for (i = 0; i < count; i++) putc ('\b', _rl_out_stream); return 0; @@ -631,12 +683,17 @@ rl_ding () default: break; case VISIBLE_BELL: +#ifdef __MSDOS__ + ScreenVisualBell (); + break; +#else if (_rl_visible_bell) { tputs (_rl_visible_bell, 1, _rl_output_character_function); break; } /* FALLTHROUGH */ +#endif case AUDIBLE_BELL: fprintf (stderr, "\007"); fflush (stderr); @@ -688,6 +745,7 @@ void _rl_set_cursor (im, force) int im, force; { +#ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) { if (force || im != rl_insert_mode) @@ -698,4 +756,5 @@ _rl_set_cursor (im, force) tputs (_rl_term_ve, 1, _rl_output_character_function); } } +#endif } diff -N -x '*.dvi' -x '*.html' -x '*.0' -x '*.info' -x '*.pdf' -x '*.ps' -urp -x CVS -x texinfo.tex /space/symbian/readline/readline-5.1/tilde.c readline/tilde.c --- /space/symbian/readline/readline-5.1/tilde.c 2005-05-07 14:49:51.000000000 -0400 +++ readline/tilde.c 2006-04-07 14:16:10.000000000 -0400 @@ -410,12 +410,12 @@ tilde_expand_word (filename) if (dirname == 0) dirname = savestring (filename); } +#if defined (HAVE_GETPWENT) else { free (username); dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); } -#if defined (HAVE_GETPWENT) endpwent (); #endif return (dirname);