summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaroly Lorentey <lorentey@elte.hu>2004-10-07 16:52:19 +0000
committerKaroly Lorentey <lorentey@elte.hu>2004-10-07 16:52:19 +0000
commitf86a8200c2f62435470d6281857bfab430d20b22 (patch)
treef1aa9dbbf88d21490b41af4124c7bcd0501f9760
parentc783f4429ed706dec8b7d581f24bd8b3b5efb9d4 (diff)
parent137b1fff63d8b2823ae2e6ab89cb40ef54bd5669 (diff)
downloademacs-f86a8200c2f62435470d6281857bfab430d20b22.tar.gz
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-593 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-594 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-595 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-596 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-597 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-598 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-599 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-600 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-601 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-602 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-603 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-42 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-43 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-44 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-253
-rw-r--r--ChangeLog10
-rw-r--r--admin/FOR-RELEASE4
-rwxr-xr-xconfigure767
-rw-r--r--configure.in79
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/DEBUG11
-rw-r--r--etc/NEWS19
-rw-r--r--etc/enriched.doc4
-rw-r--r--lisp/ChangeLog75
-rw-r--r--lisp/calendar/cal-iso.el53
-rw-r--r--lisp/calendar/cal-menu.el5
-rw-r--r--lisp/calendar/calendar.el5
-rw-r--r--lisp/calendar/icalendar.el1299
-rw-r--r--lisp/gnus/ChangeLog18
-rw-r--r--lisp/gnus/gnus-group.el3
-rw-r--r--lisp/gnus/gnus-msg.el3
-rw-r--r--lisp/gnus/gnus-sum.el21
-rw-r--r--lisp/gnus/message.el4
-rw-r--r--lisp/info.el29
-rw-r--r--lisp/isearch.el21
-rw-r--r--lisp/newcomment.el4
-rw-r--r--lisp/progmodes/gdb-ui.el1
-rw-r--r--lisp/textmodes/enriched.el4
-rw-r--r--lisp/textmodes/tex-mode.el74
-rw-r--r--lisp/url/ChangeLog5
-rw-r--r--lisp/url/url-handlers.el2
-rw-r--r--lisp/xml.el24
-rw-r--r--lispintro/emacs-lisp-intro.texi33
-rw-r--r--lispref/ChangeLog4
-rw-r--r--lispref/display.texi5
-rw-r--r--man/ChangeLog52
-rw-r--r--man/building.texi12
-rw-r--r--man/calendar.texi56
-rw-r--r--man/info.texi34
-rw-r--r--man/text.texi213
-rw-r--r--msdos/ChangeLog5
-rw-r--r--msdos/sed1v2.inp4
-rw-r--r--nt/ChangeLog2
-rw-r--r--src/.gdbinit20
-rw-r--r--src/ChangeLog69
-rw-r--r--src/Makefile.in2
-rw-r--r--src/config.in6
-rw-r--r--src/fileio.c3
-rw-r--r--src/fringe.c12
-rw-r--r--src/macfns.c33
-rw-r--r--src/macmenu.c4
-rw-r--r--src/macterm.c310
-rw-r--r--src/window.c15
-rw-r--r--src/xdisp.c9
-rw-r--r--src/xterm.c46
50 files changed, 2776 insertions, 726 deletions
diff --git a/ChangeLog b/ChangeLog
index 596fc6023a9..aa5d01c16f5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2004-10-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * configure.in (HAVE_RANDOM_HEAPSTART): Change AC_MSG_ERROR to
+ AC_MSG_WARN. Move output of warning message to end of configure run.
+
+2004-10-05 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
+
+ * configure.in (HAVE_RANDOM_HEAPSTART): Renamed HAVE_EXECSHIELD.
+ Run test to see if heap start address is random.
+
2004-09-29 Miles Bader <miles@gnu.org>
* configure.in (HAVE_EXECSHIELD): Test correct env variable to see
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 19f06efa4a7..1898cf4dea4 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -28,8 +28,6 @@ isearch faces.
** Finish updating the Emacs Lisp manual.
-*** New display properties (KFS to provide input).
-
** Update the Emacs manual.
*** Update man/info.texi.
@@ -88,7 +86,7 @@ man/rmail.texi
man/screen.texi "Luc Teirlinck"
man/search.texi "Luc Teirlinck"
man/sending.texi
-man/text.texi
+man/text.texi "Luc Teirlinck"
man/trouble.texi
man/windows.texi "Luc Teirlinck"
man/xresources.texi
diff --git a/configure b/configure
index 817d0fc09d9..83ac957143d 100755
--- a/configure
+++ b/configure
@@ -310,7 +310,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LN_S CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INSTALL_INFO EGREP SETARCH LIBSOUND SET_MAKE PKG_CONFIG GTK_CFLAGS GTK_LIBS ALLOCA liblockfile LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS version configuration canonical srcdir lispdir locallisppath lisppath x_default_search_path etcdir archlibdir docdir bitmapdir gamedir gameuser c_switch_system c_switch_machine LD_SWITCH_X_SITE LD_SWITCH_X_SITE_AUX C_SWITCH_X_SITE X_TOOLKIT_TYPE machfile opsysfile carbon_appdir LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LN_S CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INSTALL_INFO EGREP LIBSOUND SETARCH SET_MAKE PKG_CONFIG GTK_CFLAGS GTK_LIBS ALLOCA liblockfile LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS version configuration canonical srcdir lispdir locallisppath lisppath x_default_search_path etcdir archlibdir docdir bitmapdir gamedir gameuser c_switch_system c_switch_machine LD_SWITCH_X_SITE LD_SWITCH_X_SITE_AUX C_SWITCH_X_SITE X_TOOLKIT_TYPE machfile opsysfile carbon_appdir LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -984,7 +984,7 @@ esac
else
echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi
- cd "$ac_popdir"
+ cd $ac_popdir
done
fi
@@ -3250,7 +3250,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3308,7 +3309,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3424,7 +3426,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3478,7 +3481,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3523,7 +3527,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3567,7 +3572,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4200,7 +4206,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4271,91 +4278,6 @@ rm -f conftest*
-echo "$as_me:$LINENO: checking for /proc/sys/kernel/exec-shield" >&5
-echo $ECHO_N "checking for /proc/sys/kernel/exec-shield... $ECHO_C" >&6
-if test "${ac_cv_file__proc_sys_kernel_exec_shield+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- test "$cross_compiling" = yes &&
- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
- { (exit 1); exit 1; }; }
-if test -r "/proc/sys/kernel/exec-shield"; then
- ac_cv_file__proc_sys_kernel_exec_shield=yes
-else
- ac_cv_file__proc_sys_kernel_exec_shield=no
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_file__proc_sys_kernel_exec_shield" >&5
-echo "${ECHO_T}$ac_cv_file__proc_sys_kernel_exec_shield" >&6
-if test $ac_cv_file__proc_sys_kernel_exec_shield = yes; then
- emacs_cv_execshield=1
-else
- emacs_cv_execshield=0
-fi
-
-if test "$emacs_cv_execshield" = 1; then
- # Extract the first word of "setarch", so it can be a program name with args.
-set dummy setarch; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_SETARCH+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $SETARCH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_SETARCH="$SETARCH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SETARCH="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- test -z "$ac_cv_path_SETARCH" && ac_cv_path_SETARCH="no"
- ;;
-esac
-fi
-SETARCH=$ac_cv_path_SETARCH
-
-if test -n "$SETARCH"; then
- echo "$as_me:$LINENO: result: $SETARCH" >&5
-echo "${ECHO_T}$SETARCH" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
- if test "$SETARCH" != no && test "$machine" = "intel386"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXECSHIELD 1
-_ACEOF
-
- else
- case "`cat /proc/sys/kernel/exec-shield`" in
- 0) ;;
- *)
- { { echo "$as_me:$LINENO: error: Exec-shield is turned on.
-Emacs can not dump itself if exec-shield is turned on.
-See \`etc/PROBLEMS' for further information." >&5
-echo "$as_me: error: Exec-shield is turned on.
-Emacs can not dump itself if exec-shield is turned on.
-See \`etc/PROBLEMS' for further information." >&2;}
- { (exit 1); exit 1; }; }
- esac
- fi
-fi
#### Extract some information from the operating system and machine files.
@@ -4561,7 +4483,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4590,7 +4513,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4660,7 +4584,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4712,7 +4637,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4783,7 +4709,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4835,7 +4762,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4905,7 +4833,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5075,7 +5004,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5144,7 +5074,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5298,7 +5229,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5391,7 +5323,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5594,7 +5527,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5759,7 +5693,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5822,7 +5757,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5895,7 +5831,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5981,7 +5918,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6054,7 +5992,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6124,7 +6063,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6183,7 +6123,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6252,7 +6193,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6313,7 +6255,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6379,7 +6322,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6525,7 +6469,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6589,7 +6534,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6654,7 +6600,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6700,7 +6647,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6774,7 +6722,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6839,7 +6788,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6883,7 +6833,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6954,7 +6905,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7004,7 +6956,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7075,7 +7028,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7125,7 +7079,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7196,7 +7151,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7246,7 +7202,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7317,7 +7274,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7367,7 +7325,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7438,7 +7397,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7488,7 +7448,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7575,7 +7536,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7681,7 +7643,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7741,7 +7704,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7777,6 +7741,124 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking whether heap start address is randomized" >&5
+echo $ECHO_N "checking whether heap start address is randomized... $ECHO_C" >&6
+if test x"$ac_cv_header_unistd_h" != x && test x"$ac_cv_header_stdlib_h" != x
+then
+ if test "$cross_compiling" = yes; then
+ emacs_cv_randomheap='assuming no'
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+int main (int argc, char *argv[])
+{
+ unsigned long old_sbrk = 0;
+ unsigned long this_sbrk = (unsigned long) sbrk(0);
+ int nr = 1;
+ if (argc != 1) {
+ old_sbrk = strtoul (argv[1], 0, 0);
+ nr = atoi (argv[2])+1;
+ }
+ if (argc == 1 || (old_sbrk == this_sbrk && nr < 3))
+ {
+ char buf1[32], buf2[32];
+ sprintf (buf1, "%lu", this_sbrk);
+ sprintf (buf2, "%d", nr);
+ execl (argv[0], argv[0], buf1, buf2, 0);
+ exit (-1);
+ }
+ exit (this_sbrk == old_sbrk);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ emacs_cv_randomheap=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+emacs_cv_randomheap=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+else
+ emacs_cv_randomheap='assuming no'
+fi
+echo "$as_me:$LINENO: result: $emacs_cv_randomheap" >&5
+echo "${ECHO_T}$emacs_cv_randomheap" >&6
+
+if test "$emacs_cv_randomheap" = yes; then
+ # Extract the first word of "setarch", so it can be a program name with args.
+set dummy setarch; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_SETARCH+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $SETARCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SETARCH="$SETARCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SETARCH="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_SETARCH" && ac_cv_path_SETARCH="no"
+ ;;
+esac
+fi
+SETARCH=$ac_cv_path_SETARCH
+
+if test -n "$SETARCH"; then
+ echo "$as_me:$LINENO: result: $SETARCH" >&5
+echo "${ECHO_T}$SETARCH" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test "$SETARCH" != no && test "$machine" = "intel386"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RANDOM_HEAPSTART 1
+_ACEOF
+
+ else
+ emacs_cv_randomheap=warn
+ fi
+fi
+
+
echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
@@ -7863,7 +7945,6 @@ fi
echo "$as_me:$LINENO: checking for X" >&5
echo $ECHO_N "checking for X... $ECHO_C" >&6
-ac_path_x_has_been_run=yes
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -7956,7 +8037,7 @@ ac_x_header_dirs='
/usr/openwin/share/include'
if test "$ac_x_includes" = no; then
- # Guess where to find include files, by looking for a specified header file.
+ # Guess where to find include files, by looking for Intrinsic.h.
# First, try using that file with no special directory specified.
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -8030,7 +8111,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8090,12 +8172,8 @@ else
# Update the cache value to reflect the command line values.
ac_cv_have_x="have_x=yes \
ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
- # It might be that x_includes is empty (headers are found in the
- # standard search path. Then output the corresponding message
- ac_out_x_includes=$x_includes
- test "x$x_includes" = x && ac_out_x_includes="in standard search path"
- echo "$as_me:$LINENO: result: libraries $x_libraries, headers $ac_out_x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $ac_out_x_includes" >&6
+ echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
fi
if test "$no_x" = yes; then
@@ -8259,7 +8337,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8354,7 +8433,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8413,7 +8493,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8497,7 +8578,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8681,7 +8763,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8933,7 +9016,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9000,7 +9084,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9069,7 +9154,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9154,7 +9240,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9231,7 +9318,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9285,7 +9373,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9354,7 +9443,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9458,7 +9548,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9525,7 +9616,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9595,7 +9687,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9833,7 +9926,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9907,7 +10001,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9979,7 +10074,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10061,7 +10157,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10140,7 +10237,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10214,7 +10312,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10282,7 +10381,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10351,7 +10451,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10475,7 +10576,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10571,7 +10673,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10651,7 +10754,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10719,7 +10823,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10864,7 +10969,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10973,7 +11079,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11118,7 +11225,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11225,7 +11333,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11379,7 +11488,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11454,7 +11564,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11602,7 +11713,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11679,7 +11791,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11826,7 +11939,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11902,7 +12016,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12067,7 +12182,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12212,7 +12328,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12288,7 +12405,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12351,7 +12469,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12432,7 +12551,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12573,7 +12693,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12718,7 +12839,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12794,7 +12916,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12867,7 +12990,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13022,7 +13146,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13088,7 +13213,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13346,7 +13472,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13413,7 +13540,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13565,7 +13693,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13749,7 +13878,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14076,7 +14206,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14177,7 +14308,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14250,7 +14382,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14329,7 +14462,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14398,7 +14532,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14466,7 +14601,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14540,7 +14676,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14644,7 +14781,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14719,7 +14857,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14871,7 +15010,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14939,7 +15079,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15116,7 +15257,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15192,7 +15334,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15346,7 +15489,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15497,7 +15641,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15648,7 +15793,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15790,7 +15936,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15834,7 +15981,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15980,7 +16128,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16024,7 +16173,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16089,7 +16239,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16152,7 +16303,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16254,7 +16406,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16323,7 +16476,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16430,7 +16584,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16533,7 +16688,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16609,7 +16765,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16713,7 +16870,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16805,7 +16963,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16870,7 +17029,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16936,7 +17096,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17046,7 +17207,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17111,7 +17273,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17191,7 +17354,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17264,7 +17428,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17337,7 +17502,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17410,7 +17576,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17484,7 +17651,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17556,7 +17724,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17631,7 +17800,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17703,7 +17873,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17776,7 +17947,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17926,7 +18098,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18072,7 +18245,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18218,7 +18392,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18375,7 +18550,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18521,7 +18697,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18667,7 +18844,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18825,7 +19003,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18983,7 +19162,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19172,7 +19352,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19245,7 +19426,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19313,7 +19495,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19359,7 +19542,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19433,7 +19617,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19497,7 +19682,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19635,7 +19821,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19696,7 +19883,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19841,7 +20029,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19997,7 +20186,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20168,7 +20358,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20236,7 +20427,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20421,7 +20613,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20714,7 +20907,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20779,7 +20973,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20842,7 +21037,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20908,7 +21104,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -20949,7 +21146,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -21016,7 +21214,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -21234,6 +21433,29 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
echo
+if test "$emacs_cv_randomheap" = warn; then
+ { echo "$as_me:$LINENO: WARNING:
+**********************************************************************
+
+Heap start address is randomized and no workaround is known.
+Emacs will probably dump core when temacs is run in the build phase.
+Maybe exec-shield is turned on. Read about exec-shield in \`etc/PROBLEMS'
+for further information.
+
+**********************************************************************
+" >&5
+echo "$as_me: WARNING:
+**********************************************************************
+
+Heap start address is randomized and no workaround is known.
+Emacs will probably dump core when temacs is run in the build phase.
+Maybe exec-shield is turned on. Read about exec-shield in \`etc/PROBLEMS'
+for further information.
+
+**********************************************************************
+" >&2;}
+fi
+
# Remove any trailing slashes in these variables.
test "${prefix}" != NONE &&
prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
@@ -21921,8 +22143,8 @@ s,@RANLIB@,$RANLIB,;t t
s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
s,@INSTALL_INFO@,$INSTALL_INFO,;t t
s,@EGREP@,$EGREP,;t t
-s,@SETARCH@,$SETARCH,;t t
s,@LIBSOUND@,$LIBSOUND,;t t
+s,@SETARCH@,$SETARCH,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@PKG_CONFIG@,$PKG_CONFIG,;t t
s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
@@ -22123,6 +22345,11 @@ esac
*) ac_INSTALL=$ac_top_builddir$INSTALL ;;
esac
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
@@ -22161,12 +22388,6 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
fi;;
esac
done` || { (exit 1); exit 1; }
-
- if test x"$ac_file" != x-; then
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
sed "$ac_vpsub
diff --git a/configure.in b/configure.in
index 1f899a0808c..4e534a53485 100644
--- a/configure.in
+++ b/configure.in
@@ -1286,25 +1286,6 @@ AC_LINK_IFELSE([main(){return 0;}],
dnl checks for Unix variants
AC_AIX
-dnl check if exec-shield is present.
-AC_CHECK_FILE(/proc/sys/kernel/exec-shield, emacs_cv_execshield=1,
- emacs_cv_execshield=0)
-if test "$emacs_cv_execshield" = 1; then
- AC_PATH_PROG(SETARCH, setarch, no)
- AC_SUBST(SETARCH)
- if test "$SETARCH" != no && test "$machine" = "intel386"; then
- AC_DEFINE(HAVE_EXECSHIELD, 1,
- [Define to 1 if this OS has exec shield and we can handle it.])
- else
- case "`cat /proc/sys/kernel/exec-shield`" in
- 0) ;;
- *)
- AC_MSG_ERROR([Exec-shield is turned on.
-Emacs can not dump itself if exec-shield is turned on.
-See `etc/PROBLEMS' for further information.])
- esac
- fi
-fi
#### Extract some information from the operating system and machine files.
@@ -1591,6 +1572,53 @@ AH_TEMPLATE(POINTER_TYPE,
[Define as `void' if your compiler accepts `void *'; otherwise
define as `char'.])dnl
+dnl Test if heap start address is randomized (exec-shield does this).
+dnl The test program requires unistd.h and stdlib.h. They are present
+dnl on the systems that currently have exec-shield.
+AC_MSG_CHECKING(whether heap start address is randomized)
+if test x"$ac_cv_header_unistd_h" != x && test x"$ac_cv_header_stdlib_h" != x
+then
+ AC_TRY_RUN([#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+int main (int argc, char *argv[])
+{
+ unsigned long old_sbrk = 0;
+ unsigned long this_sbrk = (unsigned long) sbrk(0);
+ int nr = 1;
+ if (argc != 1) {
+ old_sbrk = strtoul (argv[1], 0, 0);
+ nr = atoi (argv[2])+1;
+ }
+ if (argc == 1 || (old_sbrk == this_sbrk && nr < 3))
+ {
+ char buf1[32], buf2[32];
+ sprintf (buf1, "%lu", this_sbrk);
+ sprintf (buf2, "%d", nr);
+ execl (argv[0], argv[0], buf1, buf2, 0);
+ exit (-1);
+ }
+ exit (this_sbrk == old_sbrk);
+}], emacs_cv_randomheap=yes, emacs_cv_randomheap=no,
+ emacs_cv_randomheap='assuming no')
+else
+ emacs_cv_randomheap='assuming no'
+fi
+AC_MSG_RESULT($emacs_cv_randomheap)
+
+if test "$emacs_cv_randomheap" = yes; then
+ AC_PATH_PROG(SETARCH, setarch, no)
+ AC_SUBST(SETARCH)
+ if test "$SETARCH" != no && test "$machine" = "intel386"; then
+ AC_DEFINE(HAVE_RANDOM_HEAPSTART, 1,
+ [Define to 1 if this OS randomizes the start address of the heap.])
+ else
+ dnl We do the warning at the end of the configure run so it is seen.
+ emacs_cv_randomheap=warn
+ fi
+fi
+
+
dnl This could be used for targets which can have both byte sexes.
dnl We could presumably replace the hardwired WORDS_BIG_ENDIAN generally.
dnl AC_C_BIGENDIAN
@@ -3058,6 +3086,19 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
echo
+if test "$emacs_cv_randomheap" = warn; then
+ AC_MSG_WARN([
+**********************************************************************
+
+Heap start address is randomized and no workaround is known.
+Emacs will probably dump core when temacs is run in the build phase.
+Maybe exec-shield is turned on. Read about exec-shield in `etc/PROBLEMS'
+for further information.
+
+**********************************************************************
+])
+fi
+
# Remove any trailing slashes in these variables.
[test "${prefix}" != NONE &&
prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 981fd88ba3a..e410e315417 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,12 @@
+2004-10-04 Luc Teirlinck <teirllm@auburn.edu>
+
+ * enriched.doc: Update for new bindings of `set-left-margin' and
+ `set-right-margin'.
+
+2004-10-04 Kim F. Storm <storm@cua.dk>
+
+ * DEBUG: Mention pp and ff commands.
+
2004-09-26 Luc Teirlinck <teirllm@auburn.edu>
* enriched.doc: `enriched-annotation-alist' is now called
diff --git a/etc/DEBUG b/etc/DEBUG
index bcc0bd84182..6419b3dfd81 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -69,9 +69,11 @@ fatal error, you can use the GDB command `pr'. First print the value
in the ordinary way, with the `p' command. Then type `pr' with no
arguments. This calls a subroutine which uses the Lisp printer.
-Note: It is not a good idea to try `pr' if you know that Emacs is in
-deep trouble: its stack smashed (e.g., if it encountered SIGSEGV due
-to stack overflow), or crucial data structures, such as `obarray',
+You can also use `pp value' to print the emacs value directly.
+
+Note: It is not a good idea to try `pr' or `pp' if you know that Emacs
+is in deep trouble: its stack smashed (e.g., if it encountered SIGSEGV
+due to stack overflow), or crucial data structures, such as `obarray',
corrupted, etc. In such cases, the Emacs subroutine called by `pr'
might make more damage, like overwrite some data that is important for
debugging the original problem.
@@ -442,6 +444,9 @@ Several more functions for debugging display code are available in
Emacs compiled with GLYPH_DEBUG defined; type "C-h f dump- TAB" and
"C-h f trace- TAB" to see the full list.
+When you debug display problems running emacs under X, you can use
+the `ff' command to flush all pending display updates to the screen.
+
** Debugging LessTif
diff --git a/etc/NEWS b/etc/NEWS
index 0f3d5b2ce7a..27521612a9e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -99,6 +99,11 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
* Changes in Emacs 21.4
+++
+** In Enriched mode, `set-left-margin' and `set-right-margin' are now
+by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
+and `C-c C-r'.
+
++++
** In processing a local variables list, Emacs strips the prefix and
suffix are from every line before processing all the lines.
@@ -1391,6 +1396,10 @@ controls whether or not the function `make-auto-save-file-name' will
attempt to construct a unique auto-save name (e.g. for remote files).
+++
+** There is a new calendar package, icalendar.el, that can be used to
+convert Emacs diary entries to/from the iCalendar format.
+
++++
** Diary sexp entries can have custom marking in the calendar.
Diary sexp functions which only apply to certain days (such as
`diary-block' or `diary-cyclic') now take an optional parameter MARK,
@@ -1406,6 +1415,11 @@ appointments, paydays or anything else using a sexp.
year and day number, and moves to that date. Negative day numbers
count backward from the end of the year.
++++
+** The new Calendar function `calendar-goto-iso-week' (g w)
+prompts for a year and a week number, and moves to the first
+day of that ISO week.
+
---
** The functions `holiday-easter-etc' and `holiday-advent' now take
arguments, and only report on the specified holiday rather than all.
@@ -2483,9 +2497,8 @@ symbol identifying a fringe bitmap, either built-in or defined with
`define-fringe-bitmap', and FACE is an optional face name to be used
for displaying the bitmap.
-*** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT)
-identifying the current fringe bitmaps in the display line at a given
-buffer position. A nil value means no bitmap.
+*** New function `fringe-bitmaps-at-pos' returns the current fringe
+bitmaps in the display line at a given buffer position.
** Multiple overlay arrows can now be defined and managed via the new
variable `overlay-arrow-variable-list'. It contains a list of
diff --git a/etc/enriched.doc b/etc/enriched.doc
index 55e11004f05..122652f005a 100644
--- a/etc/enriched.doc
+++ b/etc/enriched.doc
@@ -98,8 +98,8 @@ direct request, such as using the return key or the <fixed>C-o
<indent>The fill functions also understand margins, which can be set for
any region of a document. In addition to the menu items, which
increase or decrease the margins, there are two commands for
-setting the margins absolutely: <fixed>C-c C-l (set-left-margin)</fixed> and <fixed>C-c
-C-r (set-right-margin)</fixed>.
+setting the margins absolutely: <fixed>C-c [ (set-left-margin)</fixed> and <fixed>C-c
+] (set-right-margin)</fixed>.
You <indent>can change indentation at any point in a paragraph, which
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index dd26fb647bc..ceb72e1eebb 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,69 @@
+2004-10-06 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gdb-ui.el (gdb-ann3): (Re-)initialise gdb-input-queue.
+
+2004-10-06 John Paul Wallington <jpw@gnu.org>
+
+ * xml.el (xml-parse-dtd): Fix `error' call.
+
+2004-10-05 Mark A. Hershberger <mah@everybody.org>
+
+ * xml.el (xml-substitute-special): Return a single string instead
+ of a list of strings if an entity substitution is made.
+
+2004-10-05 Ulf Jasper <ulf.jasper@web.de>
+
+ * calendar/icalendar.el: New file.
+
+2004-10-05 Juri Linkov <juri@jurta.org>
+
+ * isearch.el (isearch-done): Set mark after running hook.
+ Suggested by Drew Adams <drew.adams@oracle.com>.
+
+ * info.el (Info-history, Info-toc): Fix Info headers.
+ (Info-toc): Narrow buffer before Info-fontify-node.
+ (Info-build-toc): Don't check for special Info file names.
+ Set main-file to nil if Info-find-file returns a symbol.
+
+2004-10-05 Emilio C. Lopes <eclig@gmx.net>:
+
+ * calendar/calendar.el (calendar-goto-iso-week): Add autoload.
+ (calendar-mode-map): Add binding for `calendar-goto-iso-week'.
+ * calendar/cal-menu.el (calendar-mode-map): Ditto.
+
+2004-10-05 Glenn Morris <gmorris@ast.cam.ac.uk>
+
+ * calendar/cal-iso.el (calendar-iso-read-args): New function,
+ for old interactive spec from calendar-goto-iso-date.
+ (calendar-goto-iso-date): Use it.
+ (calendar-goto-iso-week): New function. Suggested by Emilio
+ C. Lopes <eclig@gmx.net>.
+
+2004-10-04 Luc Teirlinck <teirllm@auburn.edu>
+
+ * textmodes/enriched.el (enriched-mode-map): Give
+ `set-left-margin' and `set-right-margin' bindings that follow the
+ minor mode conventions.
+
+2004-10-03 Stefan <monnier@iro.umontreal.ca>
+
+ * textmodes/tex-mode.el (tex-dvi-view-command): Use `yap' on w32.
+ (tex-font-lock-keywords-1): Add url and nolinkurl for args with `_'.
+ (latex-block-args-alist): Add minipage and picture.
+ (latex-block-body-alist): Use reftex-label if enabled.
+ (latex-insert-block): Don't insert a \n if not necessary.
+ (tex-compile-commands): Make sure dvips doesn't send to printer.
+ (tex-compile-default): Handle the case where no executable is found.
+ (latex-noindent-environments): New var.
+ (latex-find-indent): Use it. Take an empty line as an arg-breaker.
+ If tex-indent-allhanging is non-nil, make sure we only align for macros
+ at beginning of line.
+
+2004-10-03 Daniel Pfeiffer <occitan@esperanto.org>
+
+ * newcomment.el (comment-beginning): Doc fix and don't choke on
+ unset `comment-end-skip' when at beginning of comment.
+
2004-10-02 Dan Nicolaescu <dann@ics.uci.edu>
* term.el (term-adjust-current-row-cache): Don't allow the current
@@ -5,9 +71,8 @@
(term-emulate-terminal): Fix insert mode. Handle tab insertion at
the end of the line. Fix scroll down. Add comments.
(term-handle-ansi-escape): Don't exceed terminal width when moving
- right.
- (term-scroll-region): Move the cursor after setting the scroll
- region.
+ right.
+ (term-scroll-region): Move the cursor after setting the scroll region.
2004-10-01 Luc Teirlinck <teirllm@auburn.edu>
@@ -33,8 +98,8 @@
2004-09-29 Luc Teirlinck <teirllm@auburn.edu>
- * textmodes/paragraphs.el (forward-paragraph): Avoid
- args-out-of-range error when point winds up at the beginning of
+ * textmodes/paragraphs.el (forward-paragraph):
+ Avoid args-out-of-range error when point winds up at the beginning of
the buffer and hard newlines are enabled.
* newcomment.el (comment-multi-line): Doc fix.
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index 0d9ad45c7d6..058bdf071d7 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -1,8 +1,9 @@
;;; cal-iso.el --- calendar functions for the ISO calendar
-;; Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2004 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
+;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
;; Keywords: calendar
;; Human-Keywords: ISO calendar, calendar, diary
@@ -96,27 +97,39 @@ Defaults to today's date if DATE is not given."
(message "ISO date: %s"
(calendar-iso-date-string (calendar-cursor-to-date t))))
+(defun calendar-iso-read-args (&optional dayflag)
+ "Interactively read the arguments for an iso date command."
+ (let* ((today (calendar-current-date))
+ (year (calendar-read
+ "ISO calendar year (>0): "
+ '(lambda (x) (> x 0))
+ (int-to-string (extract-calendar-year today))))
+ (no-weeks (extract-calendar-month
+ (calendar-iso-from-absolute
+ (1-
+ (calendar-dayname-on-or-before
+ 1 (calendar-absolute-from-gregorian
+ (list 1 4 (1+ year))))))))
+ (week (calendar-read
+ (format "ISO calendar week (1-%d): " no-weeks)
+ '(lambda (x) (and (> x 0) (<= x no-weeks)))))
+ (day (if dayflag (calendar-read
+ "ISO day (1-7): "
+ '(lambda (x) (and (<= 1 x) (<= x 7))))
+ 1)))
+ (list (list week day year))))
+
(defun calendar-goto-iso-date (date &optional noecho)
"Move cursor to ISO DATE; echo ISO date unless NOECHO is t."
- (interactive
- (let* ((today (calendar-current-date))
- (year (calendar-read
- "ISO calendar year (>0): "
- '(lambda (x) (> x 0))
- (int-to-string (extract-calendar-year today))))
- (no-weeks (extract-calendar-month
- (calendar-iso-from-absolute
- (1-
- (calendar-dayname-on-or-before
- 1 (calendar-absolute-from-gregorian
- (list 1 4 (1+ year))))))))
- (week (calendar-read
- (format "ISO calendar week (1-%d): " no-weeks)
- '(lambda (x) (and (> x 0) (<= x no-weeks)))))
- (day (calendar-read
- "ISO day (1-7): "
- '(lambda (x) (and (<= 1 x) (<= x 7))))))
- (list (list week day year))))
+ (interactive (calendar-iso-read-args t))
+ (calendar-goto-date (calendar-gregorian-from-absolute
+ (calendar-absolute-from-iso date)))
+ (or noecho (calendar-print-iso-date)))
+
+(defun calendar-goto-iso-week (date &optional noecho)
+ "Move cursor to ISO DATE; echo ISO date unless NOECHO is t.
+Interactively, goes to the first day of the specified week."
+ (interactive (calendar-iso-read-args))
(calendar-goto-date (calendar-gregorian-from-absolute
(calendar-absolute-from-iso date)))
(or noecho (calendar-print-iso-date)))
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index a652e7ca768..ceb4c56f7fd 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -1,9 +1,10 @@
;;; cal-menu.el --- calendar functions for menu bar and popup menu support
-;; Copyright (C) 1994, 1995, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 2001, 2003, 2004 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Lara Rios <lrios@coewl.cen.uiuc.edu>
+;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
;; Keywords: calendar
;; Human-Keywords: calendar, popup menus, menu bar
@@ -121,6 +122,8 @@
'("Astronomical Date" . calendar-goto-astro-day-number))
(define-key calendar-mode-map [menu-bar goto iso]
'("ISO Date" . calendar-goto-iso-date))
+(define-key calendar-mode-map [menu-bar goto iso-week]
+ '("ISO Week" . calendar-goto-iso-week))
(define-key calendar-mode-map [menu-bar goto day-of-year]
'("Day of Year" . calendar-goto-day-of-year))
(define-key calendar-mode-map [menu-bar goto gregorian]
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 9d38cde21ce..aa0b3005fad 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1769,6 +1769,10 @@ Driven by the variable `calendar-date-display-form'.")
"Move cursor to ISO date."
t)
+(autoload 'calendar-goto-iso-week "cal-iso"
+ "Move cursor to start of ISO week."
+ t)
+
(autoload 'calendar-print-iso-date "cal-iso"
"Show the ISO date equivalents of date."
t)
@@ -2204,6 +2208,7 @@ the inserted text. Value is always t."
(define-key calendar-mode-map "ge" 'calendar-goto-ethiopic-date)
(define-key calendar-mode-map "gp" 'calendar-goto-persian-date)
(define-key calendar-mode-map "gc" 'calendar-goto-iso-date)
+ (define-key calendar-mode-map "gw" 'calendar-goto-iso-week)
(define-key calendar-mode-map "gf" 'calendar-goto-french-date)
(define-key calendar-mode-map "gml" 'calendar-goto-mayan-long-count-date)
(define-key calendar-mode-map "gmpc" 'calendar-previous-calendar-round-date)
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
new file mode 100644
index 00000000000..e83e8e980b6
--- /dev/null
+++ b/lisp/calendar/icalendar.el
@@ -0,0 +1,1299 @@
+;;; icalendar.el --- iCalendar implementation
+
+;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+
+;; Author: Ulf Jasper <ulf.jasper@web.de>
+;; Created: August 2002
+;; Keywords: calendar
+;; Human-Keywords: calendar, diary, iCalendar, vCalendar
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This package is documented in the Emacs Manual.
+
+
+;;; History:
+
+;; 0.06 Bugfixes regarding icalendar-import-format-*.
+;; Fix in icalendar-convert-diary-to-ical -- thanks to Philipp Grau.
+
+;; 0.05: New import format scheme: Replaced icalendar-import-prefix-*,
+;; icalendar-import-ignored-properties, and
+;; icalendar-import-separator with icalendar-import-format(-*).
+;; icalendar-import-file and icalendar-convert-diary-to-ical
+;; have an extra parameter which should prevent them from
+;; erasing their target files (untested!).
+;; Tested with Emacs 21.3.2
+
+;; 0.04: Bugfix: import: double quoted param values did not work
+;; Read DURATION property when importing.
+;; Added parameter icalendar-duration-correction.
+
+;; 0.03: Export takes care of european-calendar-style.
+;; Tested with Emacs 21.3.2 and XEmacs 21.4.12
+
+;; 0.02: Should work in XEmacs now. Thanks to Len Trigg for the
+;; XEmacs patches!
+;; Added exporting from Emacs diary to ical.
+;; Some bugfixes, after testing with calendars from
+;; http://icalshare.com.
+;; Tested with Emacs 21.3.2 and XEmacs 21.4.12
+
+;; 0.01: First published version. Trial version. Alpha version.
+
+;; ======================================================================
+;; To Do:
+
+;; * Import from ical:
+;; + Need more properties for icalendar-import-format
+;; + check vcalendar version
+;; + check (unknown) elements
+;; + recurring events!
+;; + works for european style calendars only! Does it?
+;; + alarm
+;; + exceptions in recurring events
+;; + the parser is too soft
+;; + error log is incomplete
+;; + nice to have: #include "webcal://foo.com/some-calendar.ics"
+
+;; * Export into ical
+;; + diary-date, diary-float, and self-made sexp entries are not
+;; understood
+;; + timezones, currently all times are local!
+
+;; * Other things
+;; + defcustom icalendar-import-ignored-properties does not work with
+;; XEmacs.
+;; + clean up all those date/time parsing functions
+;; + Handle todo items?
+;; + Check iso 8601 for datetime and period
+;; + Which chars to (un)escape?
+;; + Time to find out how the profiler works?
+
+
+;;; Code:
+
+(defconst icalendar-version 0.06
+ "Version number of icalendar.el.")
+
+;; ======================================================================
+;; Customizables
+;; ======================================================================
+(defgroup icalendar nil
+ "Icalendar support."
+ :prefix "icalendar-"
+ :group 'calendar)
+
+(defcustom icalendar-import-format
+ "%s%d%l%o"
+ "Format string for importing events from iCalendar into Emacs diary.
+This string defines how iCalendar events are inserted into diary
+file. Meaning of the specifiers:
+%d Description, see `icalendar-import-format-description'
+%l Location, see `icalendar-import-format-location'
+%o Organizer, see `icalendar-import-format-organizer'
+%s Subject, see `icalendar-import-format-subject'"
+ :type 'string
+ :group 'icalendar)
+
+(defcustom icalendar-import-format-subject
+ "%s"
+ "Format string defining how the subject element is formatted.
+This applies only if the subject is not empty! `%s' is replaced
+by the subject."
+ :type 'string
+ :group 'icalendar)
+
+(defcustom icalendar-import-format-description
+ "\n Desc: %s"
+ "Format string defining how the description element is formatted.
+This applies only if the description is not empty! `%s' is
+replaced by the description."
+ :type 'string
+ :group 'icalendar)
+
+(defcustom icalendar-import-format-location
+ "\n Location: %s"
+ "Format string defining how the location element is formatted.
+This applies only if the location is not empty! `%s' is replaced
+by the location."
+ :type 'string
+ :group 'icalendar)
+
+(defcustom icalendar-import-format-organizer
+ "\n Organizer: %s"
+ "Format string defining how the organizer element is formatted.
+This applies only if the organizer is not empty! `%s' is
+replaced by the organizer."
+ :type 'string
+ :group 'icalendar)
+
+(defcustom icalendar-duration-correction
+ t
+ "Workaround for all-day events.
+If non-nil the length=duration of iCalendar appointments that
+have a length of exactly n days is decreased by one day. This
+fixes problems with all-day events, which appear to be one day
+longer than they are."
+ :type 'boolean
+ :group 'icalendar)
+
+
+;; ======================================================================
+;; NO USER SERVICABLE PARTS BELOW THIS LINE
+;; ======================================================================
+
+(defconst icalendar-weekdayabbrev-table
+ '(("mon\\(day\\)?" . "MO")
+ ("tue\\(sday\\)?" . "TU")
+ ("wed\\(nesday\\)?" . "WE")
+ ("thu\\(rsday\\)?" . "TH")
+ ("fri\\(day\\)?" . "FR")
+ ("sat\\(urday\\)?" . "SA")
+ ("sun\\(day\\)?" . "SU"))
+ "Translation table for weekdays.")
+
+(defconst icalendar-monthnumber-table
+ '(("^jan\\(uar\\)?y?$" . 1)
+ ("^feb\\(ruar\\)?y?$" . 2)
+ ("^mar\\(ch\\)?\\|märz?$" . 3)
+ ("^apr\\(il\\)?$" . 4)
+ ("^ma[iy]$" . 5)
+ ("^jun[ie]?$" . 6)
+ ("^jul[iy]?$" . 7)
+ ("^aug\\(ust\\)?$" . 8)
+ ("^sep\\(tember\\)?$" . 9)
+ ("^o[ck]t\\(ober\\)?$" . 10)
+ ("^nov\\(ember\\)?$" . 11)
+ ("^de[cz]\\(ember\\)?$" . 12))
+ "Regular expressions for month names.
+Currently this matches only German and English.")
+
+(defvar icalendar-debug nil ".")
+
+;; ======================================================================
+;; all the other libs we need
+;; ======================================================================
+(require 'calendar)
+(require 'appt)
+
+;; ======================================================================
+;; Core functionality
+;; Functions for parsing icalendars, importing and so on
+;; ======================================================================
+
+(defun icalendar-get-unfolded-buffer (folded-ical-buffer)
+ "Return a new buffer containing the unfolded contents of a buffer.
+Folding is the iCalendar way of wrapping long lines. In the
+created buffer all occurrences of CR LF BLANK are replaced by the
+empty string. Argument FOLDED-ICAL-BUFFER is the unfolded input
+buffer."
+ (let ((unfolded-buffer (get-buffer-create " *icalendar-work*")))
+ (save-current-buffer
+ (set-buffer unfolded-buffer)
+ (erase-buffer)
+ (insert-buffer folded-ical-buffer)
+ (while (re-search-forward "\r?\n[ \t]" nil t)
+ (replace-match "" nil nil))
+ )
+ unfolded-buffer))
+
+;; Replace regexp RE with RP in string ST and return the new string.
+;; This is here for compatibility with XEmacs.
+(defsubst icalendar-rris (re rp st)
+ ;; XEmacs:
+ (if (fboundp 'replace-in-string)
+ (save-match-data ;; apparently XEmacs needs save-match-data
+ (replace-in-string st re rp))
+ ;; Emacs:
+ (replace-regexp-in-string re rp st)))
+
+(defun icalendar-read-element (invalue inparams)
+ "Recursively read the next iCalendar element in the current buffer.
+INVALUE gives the current iCalendar element we are reading.
+INPARAMS gives the current parameters.....
+This function calls itself recursively for each nested calendar element
+it finds"
+ (let (element children line name params param param-name param-value
+ value
+ (continue t))
+ (setq children '())
+ (while (and continue
+ (re-search-forward "^\\([A-Za-z0-9-]+\\)[;:]" nil t))
+ (setq name (intern (match-string 1)))
+ (backward-char 1)
+ (setq params '())
+ (setq line '())
+ (while (looking-at ";")
+ (re-search-forward ";\\([A-Za-z0-9-]+\\)=" nil nil)
+ (setq param-name (intern (match-string 1)))
+ (re-search-forward "\\(\\([^;,:\"]+\\)\\|\"\\([^\"]+\\)\"\\)[;:]"
+ nil t)
+ (backward-char 1)
+ (setq param-value (or (match-string 2) (match-string 3)))
+ (setq param (list param-name param-value))
+ (while (looking-at ",")
+ (re-search-forward "\\(\\([^;,:]+\\)\\|\"\\([^\"]+\\)\"\\)"
+ nil t)
+ (if (match-string 2)
+ (setq param-value (match-string 2))
+ (setq param-value (match-string 3)))
+ (setq param (append param param-value)))
+ (setq params (append params param)))
+ (unless (looking-at ":")
+ (error "Oops"))
+ (forward-char 1)
+ (re-search-forward "\\(.*\\)\\(\r?\n[ \t].*\\)*" nil t)
+ (setq value (icalendar-rris "\r?\n[ \t]" "" (match-string 0)))
+ (setq line (list name params value))
+ (cond ((eq name 'BEGIN)
+ (setq children
+ (append children
+ (list (icalendar-read-element (intern value)
+ params)))))
+ ((eq name 'END)
+ (setq continue nil))
+ (t
+ (setq element (append element (list line))))))
+ (if invalue
+ (list invalue inparams element children)
+ children)))
+
+;; ======================================================================
+;; helper functions for examining events
+;; ======================================================================
+
+(defsubst icalendar-get-all-event-properties (event)
+ "Return the list of properties in this EVENT."
+ (car (cddr event)))
+
+(defun icalendar-get-event-property (event prop)
+ "For the given EVENT return the value of the property PROP."
+ (catch 'found
+ (let ((props (car (cddr event))) pp)
+ (while props
+ (setq pp (car props))
+ (if (eq (car pp) prop)
+ (throw 'found (car (cddr pp))))
+ (setq props (cdr props))))
+ nil))
+
+(defun icalendar-set-event-property (event prop new-value)
+ "For the given EVENT set the property PROP to the value NEW-VALUE."
+ (catch 'found
+ (let ((props (car (cddr event))) pp)
+ (while props
+ (setq pp (car props))
+ (when (eq (car pp) prop)
+ (setcdr (cdr pp) new-value)
+ (throw 'found (car (cddr pp))))
+ (setq props (cdr props)))
+ (setq props (car (cddr event)))
+ (setcar (cddr event)
+ (append props (list (list prop nil new-value)))))))
+
+(defun icalendar-get-children (node name)
+ "Return all children of the given NODE which have a name NAME.
+For instance the VCALENDAR node can have VEVENT children as well as VTODO
+children."
+ (let ((result nil)
+ (children (cadr (cddr node))))
+ (when (eq (car node) name)
+ (setq result node))
+ ;;(message "%s" node)
+ (when children
+ (let ((subresult
+ (delq nil
+ (mapcar (lambda (n)
+ (icalendar-get-children n name))
+ children))))
+ (if subresult
+ (if result
+ (setq result (append result subresult))
+ (setq result subresult)))))
+ result))
+
+; private
+(defun icalendar-all-events (icalendar)
+ "Return the list of all existing events in the given ICALENDAR."
+ (interactive "")
+ (icalendar-get-children (car icalendar) 'VEVENT))
+
+(defun icalendar-split-value (value-string)
+ "Splits VALUE-STRING at ';='."
+ (let ((result '())
+ param-name param-value)
+ (when value-string
+ (save-current-buffer
+ (set-buffer (get-buffer-create " *ical-temp*"))
+ (set-buffer-modified-p nil)
+ (erase-buffer)
+ (insert value-string)
+ (goto-char (point-min))
+ (while
+ (re-search-forward
+ "\\([A-Za-z0-9-]+\\)=\\(\\([^;,:]+\\)\\|\"\\([^\"]+\\)\"\\);?"
+ nil t)
+ (setq param-name (intern (match-string 1)))
+ (setq param-value (match-string 2))
+ (setq result
+ (append result (list (list param-name param-value)))))))
+ result))
+
+(defun icalendar-decode-isodatetime (isodatetimestring)
+ "Return ISODATETIMESTRING in format like `decode-time'.
+Converts from ISO-8601 to Emacs representation. If ISODATETIMESTRING
+specifies UTC time (trailing letter Z) the decoded time is given in
+the local time zone! FIXME: TZID-attributes are ignored....! FIXME:
+multiple comma-separated values should be allowed!"
+ (icalendar-dmsg isodatetimestring)
+ (if isodatetimestring
+ ;; day/month/year must be present
+ (let ((year (read (substring isodatetimestring 0 4)))
+ (month (read (substring isodatetimestring 4 6)))
+ (day (read (substring isodatetimestring 6 8)))
+ (hour 0)
+ (minute 0)
+ (second 0))
+ (when (> (length isodatetimestring) 12)
+ ;; hour/minute present
+ (setq hour (read (substring isodatetimestring 9 11)))
+ (setq minute (read (substring isodatetimestring 11 13))))
+ (when (> (length isodatetimestring) 14)
+ ;; seconds present
+ (setq second (read (substring isodatetimestring 13 15))))
+ (when (and (> (length isodatetimestring) 15)
+ ;; UTC specifier present
+ (char-equal ?Z (aref isodatetimestring 15)))
+ ;; if not UTC add current-time-zone offset
+ (setq second (+ (car (current-time-zone)) second)))
+ ;; create the decoded date-time
+ ;; FIXME!?!
+ (condition-case nil
+ (decode-time (encode-time second minute hour day month year))
+ (error
+ (message "Cannot decode \"%s\"" isodatetimestring)
+ ;; hope for the best...
+ (list second minute hour day month year 0 nil 0))))
+ ;; isodatetimestring == nil
+ nil))
+
+(defun icalendar-decode-isoduration (isodurationstring)
+ "Return ISODURATIONSTRING in format like `decode-time'.
+Converts from ISO-8601 to Emacs representation. If ISODURATIONSTRING
+specifies UTC time (trailing letter Z) the decoded time is given in
+the local time zone! FIXME: TZID-attributes are ignored....! FIXME:
+multiple comma-separated values should be allowed!"
+ (if isodurationstring
+ (save-match-data
+ (string-match
+ (concat
+ "^P[+-]?\\("
+ "\\(\\([0-9]+\\)D\\)" ; days only
+ "\\|"
+ "\\(\\(\\([0-9]+\\)D\\)?T\\(\\([0-9]+\\)H\\)?" ; opt days
+ "\\(\\([0-9]+\\)M\\)?\\(\\([0-9]+\\)S\\)?\\)" ; mand. time
+ "\\|"
+ "\\(\\([0-9]+\\)W\\)" ; weeks only
+ "\\)$") isodurationstring)
+ (let ((seconds 0)
+ (minutes 0)
+ (hours 0)
+ (days 0)
+ (months 0)
+ (years 0))
+ (cond
+ ((match-beginning 2) ;days only
+ (setq days (read (substring isodurationstring
+ (match-beginning 3)
+ (match-end 3))))
+ (when icalendar-duration-correction
+ (setq days (1- days))))
+ ((match-beginning 4) ;days and time
+ (if (match-beginning 5)
+ (setq days (* 7 (read (substring isodurationstring
+ (match-beginning 6)
+ (match-end 6))))))
+ (if (match-beginning 7)
+ (setq hours (read (substring isodurationstring
+ (match-beginning 8)
+ (match-end 8)))))
+ (if (match-beginning 9)
+ (setq minutes (read (substring isodurationstring
+ (match-beginning 10)
+ (match-end 10)))))
+ (if (match-beginning 11)
+ (setq seconds (read (substring isodurationstring
+ (match-beginning 12)
+ (match-end 12)))))
+ )
+ ((match-beginning 13) ;weeks only
+ (setq days (* 7 (read (substring isodurationstring
+ (match-beginning 14)
+ (match-end 14))))))
+ )
+ (list seconds minutes hours days months years)))
+ ;; isodatetimestring == nil
+ nil))
+
+(defun icalendar-add-decoded-times (time1 time2)
+ "Add TIME1 to TIME2.
+Both times must be given in decoded form. One of these times must be
+valid (year > 1900 or something)."
+ ;; FIXME: does this function exist already?
+ (decode-time (encode-time
+ (+ (nth 0 time1) (nth 0 time2))
+ (+ (nth 1 time1) (nth 1 time2))
+ (+ (nth 2 time1) (nth 2 time2))
+ (+ (nth 3 time1) (nth 3 time2))
+ (+ (nth 4 time1) (nth 4 time2))
+ (+ (nth 5 time1) (nth 5 time2))
+ nil
+ nil
+ ;;(or (nth 6 time1) (nth 6 time2)) ;; FIXME?
+ )))
+
+(defun icalendar-datetime-to-noneuropean-date (datetime)
+ "Convert the decoded DATETIME to non-european-style format.
+Non-European format: (month day year)."
+ (if datetime
+ (list (nth 4 datetime) ;month
+ (nth 3 datetime) ;day
+ (nth 5 datetime));year
+ ;; datetime == nil
+ nil))
+
+(defun icalendar-datetime-to-european-date (datetime)
+ "Convert the decoded DATETIME to European format.
+European format: (day month year).
+FIXME"
+ (if datetime
+ (format "%d %d %d" (nth 3 datetime); day
+ (nth 4 datetime) ;month
+ (nth 5 datetime));year
+ ;; datetime == nil
+ nil))
+
+(defun icalendar-datetime-to-colontime (datetime)
+ "Extract the time part of a decoded DATETIME into 24-hour format.
+Note that this silently ignores seconds."
+ (format "%02d:%02d" (nth 2 datetime) (nth 1 datetime)))
+
+(defun icalendar-get-month-number (monthname)
+ "Return the month number for the given MONTHNAME."
+ (save-match-data
+ (let ((case-fold-search t))
+ (assoc-default monthname icalendar-monthnumber-table
+ 'string-match))))
+
+(defun icalendar-get-weekday-abbrev (weekday)
+ "Return the abbreviated WEEKDAY."
+ ;;FIXME: ISO-like(?).
+ (save-match-data
+ (let ((case-fold-search t))
+ (assoc-default weekday icalendar-weekdayabbrev-table
+ 'string-match))))
+
+(defun icalendar-datestring-to-isodate (datestring &optional day-shift)
+ "Convert diary-style DATESTRING to iso-style date.
+If DAY-SHIFT is non-nil, the result is shifted by DAY-SHIFT days
+-- DAY-SHIFT must be either nil or an integer. This function
+takes care of european-style."
+ (let ((day -1) month year)
+ (save-match-data
+ (cond (;; numeric date
+ (string-match (concat "\\s-*"
+ "0?\\([1-9][0-9]?\\)[ \t/]\\s-*"
+ "0?\\([1-9][0-9]?\\),?[ \t/]\\s-*"
+ "\\([0-9]\\{4\\}\\)")
+ datestring)
+ (setq day (read (substring datestring (match-beginning 1)
+ (match-end 1))))
+ (setq month (read (substring datestring (match-beginning 2)
+ (match-end 2))))
+ (setq year (read (substring datestring (match-beginning 3)
+ (match-end 3))))
+ (unless european-calendar-style
+ (let ((x month))
+ (setq month day)
+ (setq day x))))
+ (;; date contains month names -- european-style
+ (and european-calendar-style
+ (string-match (concat "\\s-*"
+ "0?\\([123]?[0-9]\\)[ \t/]\\s-*"
+ "\\([A-Za-z][^ ]+\\)[ \t/]\\s-*"
+ "\\([0-9]\\{4\\}\\)")
+ datestring))
+ (setq day (read (substring datestring (match-beginning 1)
+ (match-end 1))))
+ (setq month (icalendar-get-month-number
+ (substring datestring (match-beginning 2)
+ (match-end 2))))
+ (setq year (read (substring datestring (match-beginning 3)
+ (match-end 3)))))
+ (;; date contains month names -- non-european-style
+ (and (not european-calendar-style)
+ (string-match (concat "\\s-*"
+ "\\([A-Za-z][^ ]+\\)[ \t/]\\s-*"
+ "0?\\([123]?[0-9]\\),?[ \t/]\\s-*"
+ "\\([0-9]\\{4\\}\\)")
+ datestring))
+ (setq day (read (substring datestring (match-beginning 2)
+ (match-end 2))))
+ (setq month (icalendar-get-month-number
+ (substring datestring (match-beginning 1)
+ (match-end 1))))
+ (setq year (read (substring datestring (match-beginning 3)
+ (match-end 3)))))
+ (t
+ nil)))
+ (if (> day 0)
+ (let ((mdy (calendar-gregorian-from-absolute
+ (+ (calendar-absolute-from-gregorian (list month day year))
+ (or day-shift 0)))))
+ (format "%04d%02d%02d" (nth 2 mdy) (nth 0 mdy) (nth 1 mdy)))
+ nil)))
+
+(defun icalendar-dmsg (&rest args)
+ "Print message ARGS if `icalendar-debug' is non-nil."
+ (if icalendar-debug
+ (apply 'message args)))
+
+(defun icalendar-diarytime-to-isotime (timestring ampmstring)
+ "Convert a a time like 9:30pm to an iso-conform string like T213000.
+In this example the TIMESTRING would be \"9:30\" and the AMPMSTRING
+would be \"pm\"."
+ (if timestring
+ (let ((starttimenum (read (icalendar-rris ":" "" timestring))))
+ ;; take care of am/pm style
+ (if (and ampmstring (string= "pm" ampmstring))
+ (setq starttimenum (+ starttimenum 1200)))
+ (format "T%04d00" starttimenum))
+ nil))
+
+(defun icalendar-convert-string-for-export (s)
+ "Escape comma and other critical characters in string S."
+ (icalendar-rris "," "\\\\," s))
+
+(defun icalendar-convert-for-import (string)
+ "Remove escape chars for comma, semicolon etc. from STRING."
+ (icalendar-rris
+ "\\\\n" "\n " (icalendar-rris
+ "\\\\\"" "\"" (icalendar-rris
+ "\\\\;" ";" (icalendar-rris
+ "\\\\," "," string)))))
+
+;; ======================================================================
+;; export -- convert emacs-diary to icalendar
+;; ======================================================================
+
+(defun icalendar-convert-diary-to-ical (diary-filename ical-filename
+ &optional do-not-clear-diary-file)
+ "Export diary file to iCalendar format -- erases ical-filename!!!.
+Argument DIARY-FILENAME is the input `diary-file'.
+Argument ICAL-FILENAME is the output iCalendar file.
+If DO-NOT-CLEAR-DIARY-FILE is not nil the target iCalendar file
+is not erased."
+ (interactive "FExport diary data from file:
+Finto iCalendar file: ")
+ (let ((result "")
+ (start 0)
+ (entry-main "")
+ (entry-rest "")
+ (header "")
+ (contents)
+ (oops nil)
+ (nonmarker (concat "^" (regexp-quote diary-nonmarking-symbol)
+ "?")))
+ (save-current-buffer
+ (set-buffer (find-file diary-filename))
+ (goto-char (point-min))
+ (while (re-search-forward
+ "^\\([^ \t\n].*\\)\\(\n[ \t].*\\)*" nil t)
+ (setq entry-main (match-string 1))
+ (if (match-beginning 2)
+ (setq entry-rest (match-string 2))
+ (setq entry-rest ""))
+ (setq header (format "\nBEGIN:VEVENT\nUID:emacs%d%d%d"
+ (car (current-time))
+ (cadr (current-time))
+ (car (cddr (current-time)))))
+ (setq oops nil)
+ (cond
+ ;; anniversaries
+ ((string-match
+ (concat nonmarker
+ "%%(diary-anniversary \\([^)]+\\))\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "diary-anniversary %s" entry-main)
+ (let* ((datetime (substring entry-main (match-beginning 1)
+ (match-end 1)))
+ (summary (icalendar-convert-string-for-export
+ (substring entry-main (match-beginning 2)
+ (match-end 2))))
+ (startisostring (icalendar-datestring-to-isodate
+ datetime))
+ (endisostring (icalendar-datestring-to-isodate
+ datetime 1)))
+ (setq contents
+ (concat "\nDTSTART;VALUE=DATE:" startisostring
+ "\nDTEND;VALUE=DATE:" endisostring
+ "\nSUMMARY:" summary
+ "\nRRULE:FREQ=YEARLY;INTERVAL=1"
+ ;; the following is redundant,
+ ;; but korganizer seems to expect this... ;(
+ ;; and evolution doesn't understand it... :(
+ ;; so... who is wrong?!
+ ";BYMONTH=" (substring startisostring 4 6)
+ ";BYMONTHDAY=" (substring startisostring 6 8)
+ )))
+ (unless (string= entry-rest "")
+ (setq contents (concat contents "\nDESCRIPTION:"
+ (icalendar-convert-string-for-export
+ entry-rest)))))
+ ;; cyclic events
+ ;; %%(diary-cyclic )
+ ((string-match
+ (concat nonmarker
+ "%%(diary-cyclic \\([^ ]+\\) +"
+ "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\))\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "diary-cyclic %s" entry-main)
+ (let* ((frequency (substring entry-main (match-beginning 1)
+ (match-end 1)))
+ (datetime (substring entry-main (match-beginning 2)
+ (match-end 2)))
+ (summary (icalendar-convert-string-for-export
+ (substring entry-main (match-beginning 3)
+ (match-end 3))))
+ (startisostring (icalendar-datestring-to-isodate
+ datetime))
+ (endisostring (icalendar-datestring-to-isodate
+ datetime 1)))
+ (setq contents
+ (concat "\nDTSTART;VALUE=DATE:" startisostring
+ "\nDTEND;VALUE=DATE:" endisostring
+ "\nSUMMARY:" summary
+ "\nRRULE:FREQ=DAILY;INTERVAL=" frequency
+ ;; strange: korganizer does not expect
+ ;; BYSOMETHING here...
+ )))
+ (unless (string= entry-rest "")
+ (setq contents (concat contents "\nDESCRIPTION:"
+ (icalendar-convert-string-for-export
+ entry-rest)))))
+ ;; diary-date -- FIXME
+ ((string-match
+ (concat nonmarker
+ "%%(diary-date \\([^)]+\\))\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "diary-date %s" entry-main)
+ (setq oops t))
+ ;; float events -- FIXME
+ ((string-match
+ (concat nonmarker
+ "%%(diary-float \\([^)]+\\))\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "diary-float %s" entry-main)
+ (setq oops t))
+ ;; block events
+ ((string-match
+ (concat nonmarker
+ "%%(diary-block \\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\) +"
+ "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\))\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "diary-block %s" entry-main)
+ (let* ((startstring (substring entry-main (match-beginning 1)
+ (match-end 1)))
+ (endstring (substring entry-main (match-beginning 2)
+ (match-end 2)))
+ (summary (icalendar-convert-string-for-export
+ (substring entry-main (match-beginning 3)
+ (match-end 3))))
+ (startisostring (icalendar-datestring-to-isodate
+ startstring))
+ (endisostring (icalendar-datestring-to-isodate
+ endstring 1)))
+ (setq contents
+ (concat "\nDTSTART;VALUE=DATE:" startisostring
+ "\nDTEND;VALUE=DATE:" endisostring
+ "\nSUMMARY:" summary
+ ))
+ (unless (string= entry-rest "")
+ (setq contents (concat contents "\nDESCRIPTION:"
+ (icalendar-convert-string-for-export
+ entry-rest))))))
+ ;; other sexp diary entries -- FIXME
+ ((string-match
+ (concat nonmarker
+ "%%(\\([^)]+\\))\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "diary-sexp %s" entry-main)
+ (setq oops t))
+ ;; weekly by day
+ ;; Monday 8:30 Team meeting
+ ((and (string-match
+ (concat nonmarker
+ "\\([a-z]+\\)\\s-+"
+ "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?"
+ "\\(-0?"
+ "\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?"
+ "\\)?"
+ "\\s-*\\(.*\\)$")
+ entry-main)
+ (icalendar-get-weekday-abbrev
+ (substring entry-main (match-beginning 1) (match-end 1))))
+ (icalendar-dmsg "weekly %s" entry-main)
+ (let* ((day (icalendar-get-weekday-abbrev
+ (substring entry-main (match-beginning 1)
+ (match-end 1))))
+ (starttimestring (icalendar-diarytime-to-isotime
+ (if (match-beginning 3)
+ (substring entry-main
+ (match-beginning 3)
+ (match-end 3))
+ nil)
+ (if (match-beginning 4)
+ (substring entry-main
+ (match-beginning 4)
+ (match-end 4))
+ nil)))
+ (endtimestring (icalendar-diarytime-to-isotime
+ (if (match-beginning 6)
+ (substring entry-main
+ (match-beginning 6)
+ (match-end 6))
+ nil)
+ (if (match-beginning 7)
+ (substring entry-main
+ (match-beginning 7)
+ (match-end 7))
+ nil)))
+ (summary (icalendar-convert-string-for-export
+ (substring entry-main (match-beginning 8)
+ (match-end 8)))))
+ (when starttimestring
+ (unless endtimestring
+ (let ((time (read (icalendar-rris "^T0?" ""
+ starttimestring))))
+ (setq endtimestring (format "T%06d" (+ 10000 time))))))
+ (setq contents
+ (concat "\nDTSTART"
+ (if starttimestring "" ";VALUE=DATE")
+ ":19000101" ;; FIXME? Probability that this
+ ;; is the right day is 1/7
+ (or starttimestring "")
+ "\nDTEND"
+ (if endtimestring "" ";VALUE=DATE")
+ ":19000101" ;; FIXME?
+ (or endtimestring "")
+ "\nSUMMARY:" summary
+ "\nRRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=" day
+ )))
+ (unless (string= entry-rest "")
+ (setq contents (concat contents "\nDESCRIPTION:"
+ (icalendar-convert-string-for-export
+ entry-rest)))))
+ ;; yearly by day
+ ;; 1 May Tag der Arbeit
+ ((string-match
+ (concat nonmarker
+ (if european-calendar-style
+ "0?\\([1-9]+[0-9]?\\)\\s-+\\([a-z]+\\)\\s-+"
+ "\\([a-z]+\\)\\s-+0?\\([1-9]+[0-9]?\\)\\s-+")
+ "\\*?\\s-*"
+ "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?"
+ "\\("
+ "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?"
+ "\\)?"
+ "\\s-*\\([^0-9]+.*\\)$"; must not match years
+ )
+ entry-main)
+ (icalendar-dmsg "yearly %s" entry-main)
+ (let* ((daypos (if european-calendar-style 1 2))
+ (monpos (if european-calendar-style 2 1))
+ (day (read (substring entry-main (match-beginning daypos)
+ (match-end daypos))))
+ (month (icalendar-get-month-number
+ (substring entry-main (match-beginning monpos)
+ (match-end monpos))))
+ (starttimestring (icalendar-diarytime-to-isotime
+ (if (match-beginning 4)
+ (substring entry-main
+ (match-beginning 4)
+ (match-end 4))
+ nil)
+ (if (match-beginning 5)
+ (substring entry-main
+ (match-beginning 5)
+ (match-end 5))
+ nil)))
+ (endtimestring (icalendar-diarytime-to-isotime
+ (if (match-beginning 7)
+ (substring entry-main
+ (match-beginning 7)
+ (match-end 7))
+ nil)
+ (if (match-beginning 8)
+ (substring entry-main
+ (match-beginning 8)
+ (match-end 8))
+ nil)))
+ (summary (icalendar-convert-string-for-export
+ (substring entry-main (match-beginning 9)
+ (match-end 9)))))
+ (when starttimestring
+ (unless endtimestring
+ (let ((time (read (icalendar-rris "^T0?" ""
+ starttimestring))))
+ (setq endtimestring (format "T%06d" (+ 10000 time))))))
+ (setq contents
+ (concat "\nDTSTART"
+ (if starttimestring "" ";VALUE=DATE")
+ (format ":1900%02d%02d" month day)
+ (or starttimestring "")
+ "\nDTEND"
+ (if endtimestring "" ";VALUE=DATE")
+ (format ":1900%02d%02d" month day)
+ (or endtimestring "")
+ "\nSUMMARY:" summary
+ "\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH="
+ (format "%2d" month)
+ ";BYMONTHDAY="
+ (format "%2d" day)
+ )))
+ (unless (string= entry-rest "")
+ (setq contents (concat contents "\nDESCRIPTION:"
+ (icalendar-convert-string-for-export
+ entry-rest)))))
+ ;; "ordinary" events, start and end time given
+ ;; 1 Feb 2003 Hs Hochzeitsfeier, Dreieich
+ ((string-match
+ (concat nonmarker
+ "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\)\\s-+"
+ "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?"
+ "\\("
+ "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?"
+ "\\)?"
+ "\\s-*\\(.*\\)")
+ entry-main)
+ (icalendar-dmsg "ordinary %s" entry-main)
+ (let* ((datestring (icalendar-datestring-to-isodate
+ (substring entry-main (match-beginning 1)
+ (match-end 1))))
+ (starttimestring (icalendar-diarytime-to-isotime
+ (if (match-beginning 3)
+ (substring entry-main
+ (match-beginning 3)
+ (match-end 3))
+ nil)
+ (if (match-beginning 4)
+ (substring entry-main
+ (match-beginning 4)
+ (match-end 4))
+ nil)))
+ (endtimestring (icalendar-diarytime-to-isotime
+ (if (match-beginning 6)
+ (substring entry-main
+ (match-beginning 6)
+ (match-end 6))
+ nil)
+ (if (match-beginning 7)
+ (substring entry-main
+ (match-beginning 7)
+ (match-end 7))
+ nil)))
+ (summary (icalendar-convert-string-for-export
+ (substring entry-main (match-beginning 8)
+ (match-end 8)))))
+ (when starttimestring
+ (unless endtimestring
+ (let ((time (read (icalendar-rris "^T0?" ""
+ starttimestring))))
+ (setq endtimestring (format "T%06d" (+ 10000 time))))))
+ (setq contents (format
+ "\nDTSTART%s:%s%s\nDTEND%s:%s%s\nSUMMARY:%s"
+ (if starttimestring "" ";VALUE=DATE")
+ datestring
+ (or starttimestring "")
+ (if endtimestring ""
+ ";VALUE=DATE")
+ datestring
+ (or endtimestring "")
+ summary))
+ (unless (string= entry-rest "")
+ (setq contents (concat contents "\nDESCRIPTION:"
+ (icalendar-convert-string-for-export
+ entry-rest))))))
+ ;; everything else
+ (t
+ ;; Oops! what's that?
+ (setq oops t)))
+ (if oops
+ (message "Cannot export entry on line %d"
+ (count-lines (point-min) (point)))
+ (setq result (concat result header contents "\nEND:VEVENT"))))
+ ;; we're done, insert everything into the file
+ (let ((coding-system-for-write 'utf8))
+ (set-buffer (find-file ical-filename))
+ (unless do-not-clear-diary-file
+ (erase-buffer))
+ (insert
+ "BEGIN:VCALENDAR\nPRODID:-//Emacs//NONSGML icalendar.el//EN")
+ (insert "\nVERSION:2.0")
+ (insert result)
+ (insert "\nEND:VCALENDAR\n")))))
+
+
+;; ======================================================================
+;; import -- convert icalendar to emacs-diary
+;; ======================================================================
+
+;; user function
+(defun icalendar-import-file (ical-filename diary-filename
+ &optional non-marking
+ do-not-clear-diary-file)
+ "Import a iCalendar file and save to a diary file -- erases diary-file!
+Argument ICAL-FILENAME output iCalendar file.
+Argument DIARY-FILENAME input `diary-file'.
+Optional argument NON-MARKING determines whether events are created as
+non-marking or not.
+If DO-NOT-CLEAR-DIARY-FILE is not nil the target diary file is
+not erased."
+ (interactive "fImport iCalendar data from file:
+Finto diary file (will be erased!):
+p")
+ ;; clean up the diary file
+ (save-current-buffer
+ (unless do-not-clear-diary-file
+ ;; clear the target diary file
+ (set-buffer (find-file diary-filename))
+ (erase-buffer))
+ ;; now load and convert from the ical file
+ (set-buffer (find-file ical-filename))
+ (icalendar-extract-ical-from-buffer diary-filename t non-marking)))
+
+; user function
+(defun icalendar-extract-ical-from-buffer (&optional
+ diary-file do-not-ask
+ non-marking)
+ "Extract iCalendar events from current buffer.
+
+This function searches the current buffer for the first iCalendar
+object, reads it and adds all VEVENT elements to the diary
+DIARY-FILE.
+
+It will ask for each appointment whether to add it to the diary
+when DO-NOT-ASK is non-nil. When called interactively,
+DO-NOT-ASK is set to t, so that you are asked fore each event.
+
+NON-MARKING determines whether diary events are created as
+non-marking.
+
+This function attempts to notify about problems that occur when
+reading, parsing, or converting iCalendar data!"
+ (interactive)
+ (save-current-buffer
+ ;; prepare ical
+ (message "Preparing icalendar...")
+ (set-buffer (icalendar-get-unfolded-buffer (current-buffer)))
+ (goto-char (point-min))
+ (message "Preparing icalendar...done")
+ (if (re-search-forward "^BEGIN:VCALENDAR\\s-*$" nil t)
+ (let (ical-contents ical-errors)
+ ;; read ical
+ (message "Reading icalendar...")
+ (beginning-of-line)
+ (setq ical-contents (icalendar-read-element nil nil))
+ (message "Reading icalendar...done")
+ ;; convert ical
+ (message "Converting icalendar...")
+ (setq ical-errors (icalendar-convert-ical-to-diary
+ ical-contents
+ diary-file do-not-ask non-marking))
+ (when diary-file
+ ;; save the diary file
+ (save-current-buffer
+ (set-buffer (find-buffer-visiting diary-file))
+ (save-buffer)))
+ (message "Converting icalendar...done")
+ (if (and ical-errors (y-or-n-p
+ (concat "Something went wrong -- "
+ "do you want to see the "
+ "error log? ")))
+ (switch-to-buffer " *icalendar-errors*")))
+ (message
+ "Current buffer does not contain icalendar contents!"))))
+
+;; ----------------------------------------------------------------------
+;; private area
+;; ----------------------------------------------------------------------
+(defun icalendar-format-ical-event (event)
+ "Create a string representation of an iCalendar EVENT."
+ (let ((string icalendar-import-format)
+ (conversion-list
+ '(("%d" DESCRIPTION icalendar-import-format-description)
+ ("%s" SUMMARY icalendar-import-format-subject)
+ ("%l" LOCATION icalendar-import-format-location)
+ ("%o" ORGANIZER icalendar-import-format-organizer))))
+ ;; convert the specifiers in the format string
+ (mapcar (lambda (i)
+ (let* ((spec (car i))
+ (prop (cadr i))
+ (format (car (cddr i)))
+ (contents (icalendar-get-event-property event prop))
+ (formatted-contents ""))
+ ;;(message "%s" event)
+ ;;(message "contents%s = %s" prop contents)
+ (when (and contents (> (length contents) 0))
+ (setq formatted-contents
+ (icalendar-rris "%s"
+ (icalendar-convert-for-import
+ contents)
+ (symbol-value format))))
+ (setq string (icalendar-rris spec
+ formatted-contents
+ string))))
+ conversion-list)
+ string))
+
+(defun icalendar-convert-ical-to-diary (ical-list diary-file
+ &optional do-not-ask
+ non-marking)
+ "Convert an iCalendar file to an Emacs diary file.
+Import VEVENTS from the iCalendar object ICAL-LIST and saves them to a
+DIARY-FILE. If DO-NOT-ASK is nil the user is asked for each event
+whether to actually import it. NON-MARKING determines whether diary
+events are created as non-marking.
+This function attempts to return t if something goes wrong. In this
+case an error string which describes all the errors and problems is
+written into the buffer ` *icalendar-errors*'."
+ (let* ((ev (icalendar-all-events ical-list))
+ (error-string "")
+ (event-ok t)
+ (found-error nil)
+ e diary-string)
+ ;; step through all events/appointments
+ (while ev
+ (setq e (car ev))
+ (setq ev (cdr ev))
+ (setq event-ok nil)
+ (condition-case error-val
+ (let* ((dtstart (icalendar-decode-isodatetime
+ (icalendar-get-event-property e 'DTSTART)))
+ (start-d (calendar-date-string
+ (icalendar-datetime-to-noneuropean-date
+ dtstart)
+ t t))
+ (start-t (icalendar-datetime-to-colontime dtstart))
+ (dtend (icalendar-decode-isodatetime
+ (icalendar-get-event-property e 'DTEND)))
+ end-d
+ end-t
+ (subject (icalendar-convert-for-import
+ (or (icalendar-get-event-property e 'SUMMARY)
+ "No Subject")))
+ (rrule (icalendar-get-event-property e 'RRULE))
+ (rdate (icalendar-get-event-property e 'RDATE))
+ (duration (icalendar-get-event-property e 'DURATION)))
+ (icalendar-dmsg "%s: %s" start-d subject)
+ (when duration
+ (let ((dtend2 (icalendar-add-decoded-times
+ dtstart
+ (icalendar-decode-isoduration duration))))
+ (if (and dtend (not (eq dtend dtend2)))
+ (message "Inconsistent endtime and duration for %s"
+ subject))
+ (setq dtend dtend2)))
+ (setq end-d (if dtend
+ (calendar-date-string
+ (icalendar-datetime-to-noneuropean-date
+ dtend)
+ t t)
+ start-d))
+ (setq end-t (if dtend
+ (icalendar-datetime-to-colontime dtend)
+ start-t))
+ (icalendar-dmsg "start-d: %s, end-d: %s" start-d end-d)
+ (cond
+ ;; recurring event
+ (rrule
+ (icalendar-dmsg "recurring event")
+ (let* ((rrule-props (icalendar-split-value rrule))
+ (frequency (car (cdr (assoc 'FREQ rrule-props))))
+ (until (car (cdr (assoc 'UNTIL rrule-props))))
+ (interval (read (car (cdr (assoc 'INTERVAL
+ rrule-props))))))
+ (cond ((string-equal frequency "WEEKLY")
+ (if (not start-t)
+ (progn
+ ;; weekly and all-day
+ (icalendar-dmsg "weekly all-day")
+ (setq diary-string
+ (format
+ "%%%%(diary-cyclic %d %s)"
+ (* interval 7)
+ (icalendar-datetime-to-european-date
+ dtstart))))
+ ;; weekly and not all-day
+ (let* ((byday (cadr (assoc 'BYDAY rrule-props)))
+ (weekday
+ (cdr (rassoc
+ byday
+ icalendar-weekdayabbrev-table))))
+ (icalendar-dmsg "weekly not-all-day")
+ (if weekday
+ (setq diary-string
+ (format "%s %s%s%s" weekday
+ start-t (if end-t "-" "")
+ (or end-t "")))
+ ;; FIXME!!!!
+ ;; DTSTART;VALUE=DATE-TIME:20030919T090000
+ ;; DTEND;VALUE=DATE-TIME:20030919T113000
+ (setq diary-string
+ (format
+ "%%%%(diary-cyclic %s %s) %s%s%s"
+ (* interval 7)
+ (icalendar-datetime-to-european-date
+ dtstart)
+ start-t (if end-t "-" "") (or end-t ""))))
+ (setq event-ok t))))
+ ;; yearly
+ ((string-equal frequency "YEARLY")
+ (icalendar-dmsg "yearly")
+ (setq diary-string
+ (format
+ "%%%%(diary-anniversary %s)"
+ (icalendar-datetime-to-european-date dtstart)))
+ (setq event-ok t))
+ ;; FIXME: war auskommentiert:
+ ((and (string-equal frequency "DAILY")
+ ;;(not (string= start-d end-d))
+ ;;(not start-t)
+ ;;(not end-t)
+ )
+ (let ((ds (icalendar-datetime-to-noneuropean-date
+ (icalendar-decode-isodatetime
+ (icalendar-get-event-property e
+ 'DTSTART))))
+ (de (icalendar-datetime-to-noneuropean-date
+ (icalendar-decode-isodatetime
+ until))))
+ (setq diary-string
+ (format
+ "%%%%(diary-block %d %d %d %d %d %d)"
+ (nth 1 ds) (nth 0 ds) (nth 2 ds)
+ (nth 1 de) (nth 0 de) (nth 2 de))))
+ (setq event-ok t)))
+ ))
+ (rdate
+ (icalendar-dmsg "rdate event")
+ (setq diary-string "")
+ (mapcar (lambda (datestring)
+ (setq diary-string
+ (concat diary-string
+ (format "......"))))
+ (icalendar-split-value rdate)))
+ ;; non-recurring event
+ ;; long event
+ ((not (string= start-d end-d))
+ (icalendar-dmsg "non-recurring event")
+ (let ((ds (icalendar-datetime-to-noneuropean-date dtstart))
+ (de (icalendar-datetime-to-noneuropean-date dtend)))
+ (setq diary-string
+ (format "%%%%(diary-block %d %d %d %d %d %d)"
+ (nth 1 ds) (nth 0 ds) (nth 2 ds)
+ (nth 1 de) (nth 0 de) (nth 2 de))))
+ (setq event-ok t))
+ ;; not all-day
+ ((and start-t (or (not end-t)
+ (not (string= start-t end-t))))
+ (icalendar-dmsg "not all day event")
+ (cond (end-t
+ (setq diary-string (format "%s %s-%s" start-d
+ start-t end-t)))
+ (t
+ (setq diary-string (format "%s %s" start-d
+ start-t))))
+ (setq event-ok t))
+ ;; all-day event
+ (t
+ (icalendar-dmsg "all day event")
+ (setq diary-string start-d)
+ (setq event-ok t)))
+ ;; add all other elements unless the user doesn't want to have
+ ;; them
+ (if event-ok
+ (progn
+ (setq diary-string
+ (concat diary-string " "
+ (icalendar-format-ical-event e)))
+ (if do-not-ask (setq subject nil))
+ (icalendar-add-diary-entry diary-string diary-file
+ non-marking subject))
+ ;; event was not ok
+ (setq found-error t)
+ (setq error-string
+ (format "%s\nCannot handle this event:%s"
+ error-string e))))
+ ;; handle errors
+ (error
+ (message "Ignoring event \"%s\"" e)
+ (setq found-error t)
+ (setq error-string (format "%s\nCannot handle this event: %s"
+ error-string e)))))
+ (if found-error
+ (save-current-buffer
+ (set-buffer (get-buffer-create " *icalendar-errors*"))
+ (erase-buffer)
+ (insert error-string)))
+ (message "Converting icalendar...done")
+ found-error))
+
+(defun icalendar-add-diary-entry (string diary-file non-marking
+ &optional subject)
+ "Add STRING to the diary file DIARY-FILE.
+STRING must be a properly formatted valid diary entry. NON-MARKING
+determines whether diary events are created as non-marking. If
+SUBJECT is not nil it must be a string that gives the subject of the
+entry. In this case the user will be asked whether he wants to insert
+the entry."
+ (when (or (not subject) ;
+ (y-or-n-p (format "Add appointment for `%s' to diary? "
+ subject)))
+ (when subject
+ (setq non-marking
+ (y-or-n-p (format "Make appointment non-marking? "))))
+ (save-window-excursion
+ (unless diary-file
+ (setq diary-file
+ (read-file-name "Add appointment to this diary file: ")))
+ (make-diary-entry string non-marking diary-file))))
+
+;; ======================================================================
+;; (add-hook 'list-diary-entries-hook 'include-icalendar-files)
+;; ======================================================================
+(defun include-icalendar-files ()
+ "Not yet implemented.")
+
+(provide 'icalendar)
+
+;; arch-tag: 74fdbe8e-0451-4e38-bb61-4416e822f4fc
+;;; icalendar.el ends here
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 907ad5f3411..f4b77297867 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,21 @@
+2004-10-06 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-group.el (gnus-update-group-mark-positions):
+ * gnus-sum.el (gnus-update-summary-mark-positions):
+ * message.el (message-check-news-body-syntax):
+ * gnus-msg.el (gnus-debug): Use mm-string-as-multibyte instead
+ of string-as-multibyte.
+
+ * gnus-sum.el (gnus-summary-insert-subject): Remove redundant setq.
+
+2004-10-05 Juri Linkov <juri@jurta.org>
+
+ * gnus-group.el (gnus-update-group-mark-positions):
+ * gnus-sum.el (gnus-update-summary-mark-positions):
+ * message.el (message-check-news-body-syntax):
+ * gnus-msg.el (gnus-debug): Use `string-as-multibyte' to convert
+ 8-bit unibyte values to a multibyte string for search functions.
+
2004-10-01 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-sum.el (gnus-summary-toggle-header): Make it work even if
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 9f7b259e066..435acb1d6c2 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1046,7 +1046,8 @@ The following commands are available:
(gnus-group-insert-group-line "dummy.group" 0 nil 0 nil)
(goto-char (point-min))
(setq gnus-group-mark-positions
- (list (cons 'process (and (search-forward "\200" nil t)
+ (list (cons 'process (and (search-forward
+ (mm-string-as-multibyte "\200") nil t)
(- (point) 2))))))))
(defun gnus-mouse-pick-group (e)
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 33531e7f8a4..7dcef4b813b 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -1534,7 +1534,8 @@ The source file has to be in the Emacs load path."
;; Remove any control chars - they seem to cause trouble for some
;; mailers. (Byte-compiled output from the stuff above.)
(goto-char point)
- (while (re-search-forward "[\000-\010\013-\037\200-\237]" nil t)
+ (while (re-search-forward (mm-string-as-multibyte
+ "[\000-\010\013-\037\200-\237]") nil t)
(replace-match (format "\\%03o" (string-to-char (match-string 0)))
t t))))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 92ba2346949..84de9c4e1ab 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -3231,20 +3231,24 @@ buffer that was in action when the last article was fetched."
[0 "" "" "05 Apr 2001 23:33:09 +0400" "" "" 0 0 "" nil]
0 nil t 128 t nil "" nil 1)
(goto-char (point-min))
- (setq pos (list (cons 'unread (and (search-forward "\200" nil t)
- (- (point) (point-min) 1)))))
+ (setq pos (list (cons 'unread
+ (and (search-forward
+ (mm-string-as-multibyte "\200") nil t)
+ (- (point) (point-min) 1)))))
(goto-char (point-min))
- (push (cons 'replied (and (search-forward "\201" nil t)
+ (push (cons 'replied (and (search-forward
+ (mm-string-as-multibyte "\201") nil t)
(- (point) (point-min) 1)))
pos)
(goto-char (point-min))
- (push (cons 'score (and (search-forward "\202" nil t)
+ (push (cons 'score (and (search-forward
+ (mm-string-as-multibyte "\202") nil t)
(- (point) (point-min) 1)))
pos)
(goto-char (point-min))
- (push (cons 'download
- (and (search-forward "\203" nil t)
- (- (point) (point-min) 1)))
+ (push (cons 'download (and (search-forward
+ (mm-string-as-multibyte "\203") nil t)
+ (- (point) (point-min) 1)))
pos)))
(setq gnus-summary-mark-positions pos))))
@@ -6009,8 +6013,7 @@ the subject line on."
;; Remove list identifiers from subject.
(when gnus-list-identifiers
(let ((gnus-newsgroup-headers (list header)))
- (gnus-summary-remove-list-identifiers)
- (setq header (car gnus-newsgroup-headers))))
+ (gnus-summary-remove-list-identifiers)))
(when old-header
(mail-header-set-number header (mail-header-number old-header)))
(setq gnus-newsgroup-sparse
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 8e5edbc048a..bfaf1675703 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4399,7 +4399,9 @@ Otherwise, generate and save a value for `canlock-password' first."
nil))))
;; Check for control characters.
(message-check 'control-chars
- (if (re-search-forward "[\000-\007\013\015-\032\034-\037\200-\237]" nil t)
+ (if (re-search-forward
+ (mm-string-as-multibyte "[\000-\007\013\015-\032\034-\037\200-\237]")
+ nil t)
(y-or-n-p
"The article contains control characters. Really post? ")
t))
diff --git a/lisp/info.el b/lisp/info.el
index b779bb41ca6..2a20fc4898c 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1729,7 +1729,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
(let ((inhibit-read-only t))
(erase-buffer)
(goto-char (point-min))
- (insert "\n\^_\nFile: history Node: Top, Up: (dir)\n\n")
+ (insert "\n\^_\nFile: history, Node: Top, Up: (dir)\n\n")
(insert "Recently Visited Nodes\n**********************\n\n")
(insert "* Menu:\n\n")
(let ((hl (delete '("history" "Top") Info-history-list)))
@@ -1749,26 +1749,31 @@ If SAME-FILE is non-nil, do not move to a different Info file."
"Go to a node with table of contents of the current Info file.
Table of contents is created from the tree structure of menus."
(interactive)
- (let ((curr-file Info-current-file)
- (curr-node Info-current-node)
+ (let ((curr-file (substring-no-properties Info-current-file))
+ (curr-node (substring-no-properties Info-current-node))
p)
(with-current-buffer (get-buffer-create " *info-toc*")
(let ((inhibit-read-only t)
(node-list (Info-build-toc curr-file)))
(erase-buffer)
(goto-char (point-min))
- (insert "\n\^_\nFile: toc Node: Top, Up: (dir)\n\n")
+ (insert "\n\^_\nFile: toc, Node: Top, Up: (dir)\n\n")
(insert "Table of Contents\n*****************\n\n")
- (insert "*Note Top::\n")
+ (insert "*Note Top: (" curr-file ")Top.\n")
(Info-insert-toc
(nth 2 (assoc "Top" node-list)) ; get Top nodes
- node-list 0 (substring-no-properties curr-file)))
+ node-list 0 curr-file))
(if (not (bobp))
(let ((Info-hide-note-references 'hide)
(Info-fontify-visited-nodes nil))
(Info-mode)
(setq Info-current-file "toc" Info-current-node "Top")
- (Info-fontify-node)))
+ (goto-char (point-min))
+ (narrow-to-region (or (re-search-forward "\n[\^_\f]\n" nil t)
+ (point-min))
+ (point-max))
+ (Info-fontify-node)
+ (widen)))
(goto-char (point-min))
(if (setq p (search-forward (concat "*Note " curr-node ":") nil t))
(setq p (- p (length curr-node) 2))))
@@ -1789,14 +1794,12 @@ Table of contents is created from the tree structure of menus."
(defun Info-build-toc (file)
"Build table of contents from menus of Info FILE and its subfiles."
- (if (equal file "dir")
- (error "Table of contents for Info directory is not supported yet"))
(with-temp-buffer
- (let* ((default-directory (or (and (stringp file)
- (file-name-directory
- (setq file (Info-find-file file))))
+ (let* ((file (and (stringp file) (Info-find-file file)))
+ (default-directory (or (and (stringp file)
+ (file-name-directory file))
default-directory))
- (main-file file)
+ (main-file (and (stringp file) file))
(sections '(("Top" "Top")))
nodes subfiles)
(while (or main-file subfiles)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 117d1bfdc13..96a3e0e0ac2 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -680,16 +680,7 @@ is treated as a regexp. See \\[isearch-forward] for more info."
(if isearch-small-window
(goto-char found-point)
;; Exiting the save-window-excursion clobbers window-start; restore it.
- (set-window-start (selected-window) found-start t))
-
- ;; If there was movement, mark the starting position.
- ;; Maybe should test difference between and set mark iff > threshold.
- (if (/= (point) isearch-opoint)
- (or (and transient-mark-mode mark-active)
- (progn
- (push-mark isearch-opoint t)
- (or executing-kbd-macro (> (minibuffer-depth) 0)
- (message "Mark saved where search started"))))))
+ (set-window-start (selected-window) found-start t)))
(setq isearch-mode nil)
(if isearch-input-method-local-p
@@ -714,6 +705,16 @@ is treated as a regexp. See \\[isearch-forward] for more info."
(isearch-update-ring isearch-string isearch-regexp))
(run-hooks 'isearch-mode-end-hook)
+
+ ;; If there was movement, mark the starting position.
+ ;; Maybe should test difference between and set mark iff > threshold.
+ (if (/= (point) isearch-opoint)
+ (or (and transient-mark-mode mark-active)
+ (progn
+ (push-mark isearch-opoint t)
+ (or executing-kbd-macro (> (minibuffer-depth) 0)
+ (message "Mark saved where search started")))))
+
(and (not edit) isearch-recursive-edit (exit-recursive-edit)))
(defun isearch-update-ring (string &optional regexp)
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 120777ab704..5711e7903ad 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -423,7 +423,7 @@ and raises an error or returns nil if NOERROR is non-nil."
(defun comment-beginning ()
"Find the beginning of the enclosing comment.
Returns nil if not inside a comment, else moves point and returns
-the same as `comment-search-forward'."
+the same as `comment-search-backward'."
;; HACK ATTACK!
;; We should really test `in-string-p' but that can be expensive.
(unless (eq (get-text-property (point) 'face) 'font-lock-string-face)
@@ -435,7 +435,7 @@ the same as `comment-search-forward'."
(and
;; For modes where comment-start and comment-end are the same,
;; the search above may have found a `ce' rather than a `cs'.
- (or (not (looking-at comment-end-skip))
+ (or (if comment-end-skip (not (looking-at comment-end-skip)))
;; Maybe font-lock knows that it's a `cs'?
(eq (get-text-property (match-end 0) 'face)
'font-lock-comment-face)
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 612a2034e00..d8f2cf34867 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -188,6 +188,7 @@ detailed description of this mode.
(setq gdb-var-changed nil)
(setq gdb-first-prompt nil)
(setq gdb-prompting nil)
+ (setq gdb-input-queue nil)
(setq gdb-current-item nil)
(setq gdb-pending-triggers nil)
(setq gdb-output-sink 'user)
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index c2ed47cb48d..71bb6cf137d 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -258,8 +258,8 @@ Commands:
(define-key enriched-mode-map "\M-j" 'facemenu-justification-menu)
(define-key enriched-mode-map "\M-S" 'set-justification-center)
(define-key enriched-mode-map "\C-x\t" 'increase-left-margin)
-(define-key enriched-mode-map "\C-c\C-l" 'set-left-margin)
-(define-key enriched-mode-map "\C-c\C-r" 'set-right-margin)
+(define-key enriched-mode-map "\C-c[" 'set-left-margin)
+(define-key enriched-mode-map "\C-c]" 'set-right-margin)
;;;
;;; Some functions dealing with text-properties, especially indentation
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 1c4b89f0a62..2a9059e2f56 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -1,7 +1,7 @@
;;; tex-mode.el --- TeX, LaTeX, and SliTeX mode commands -*- coding: utf-8 -*-
-;; Copyright (C) 1985,86,89,92,94,95,96,97,98,1999,2002,03,2004
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1989, 1992, 1994, 1995, 1996, 1997, 1998, 1999,
+;; 2002, 2003, 2004 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: tex
@@ -196,7 +196,11 @@ use."
:group 'tex-view)
;;;###autoload
-(defcustom tex-dvi-view-command '(if (eq window-system 'x) "xdvi" "dvi2tty * | cat -s")
+(defcustom tex-dvi-view-command
+ '(cond
+ ((eq window-system 'x) "xdvi")
+ ((eq window-system 'w32) "yap")
+ (t "dvi2tty * | cat -s"))
"*Command used by \\[tex-view] to display a `.dvi' file.
If it is a string, that specifies the command directly.
If this string contains an asterisk (`*'), that is replaced by the file name;
@@ -453,7 +457,8 @@ An alternative value is \" . \", if you use a font with a narrow period."
'("input" "include" "includeonly" "bibliography"
"epsfig" "psfig" "epsf" "nofiles" "usepackage"
"documentstyle" "documentclass" "verbatiminput"
- "includegraphics" "includegraphics*")
+ "includegraphics" "includegraphics*"
+ "url" "nolinkurl")
t))
;; Miscellany.
(slash "\\\\")
@@ -771,8 +776,10 @@ Inherits `shell-mode-map' with a few additions.")
"part" "chapter" "newcommand"
"renewcommand") 'words)
"\\|NeedsTeXFormat{LaTeX")))
- (if (looking-at
- "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}")
+ (if (and (looking-at
+ "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}")
+ ;; SliTeX is almost never used any more nowadays.
+ (tex-executable-exists-p slitex-run-command))
'slitex-mode
'latex-mode)
'plain-tex-mode))))
@@ -1219,8 +1226,13 @@ A prefix arg inhibits the checking."
(defvar latex-block-default "enumerate")
(defvar latex-block-args-alist
- '(("array" nil ?\{ (skeleton-read "[options]: ") ?\})
- ("tabular" nil ?\{ (skeleton-read "[options]: ") ?\}))
+ '(("array" nil ?\{ (skeleton-read "Format: ") ?\})
+ ("tabular" nil ?\{ (skeleton-read "Format: ") ?\})
+ ("minipage" nil ?\{ (skeleton-read "Size: ") ?\})
+ ("picture" nil ?\( (skeleton-read "SizeX,SizeY: ") ?\))
+ ;; FIXME: This is right for Prosper, but not for seminar.
+ ;; ("slide" nil ?\{ (skeleton-read "Title: ") ?\})
+ )
"Skeleton element to use for arguments to particular environments.
Every element of the list has the form (NAME . SKEL-ELEM) where NAME is
the name of the environment and SKEL-ELEM is an element to use in
@@ -1229,8 +1241,11 @@ a skeleton (see `skeleton-insert').")
(defvar latex-block-body-alist
'(("enumerate" nil '(latex-insert-item) > _)
("itemize" nil '(latex-insert-item) > _)
- ("table" nil "\\caption{" > - "}" > \n _)
- ("figure" nil > _ \n "\\caption{" > _ "}" >))
+ ("table" nil "\\caption{" > (skeleton-read "Caption: ") "}" > \n
+ '(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table"))
+ \n _)
+ ("figure" nil > _ \n "\\caption{" > (skeleton-read "Caption: ") "}" > \n
+ '(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table"))))
"Skeleton element to use for the body of particular environments.
Every element of the list has the form (NAME . SKEL-ELEM) where NAME is
the name of the environment and SKEL-ELEM is an element to use in
@@ -1254,7 +1269,8 @@ Puts point on a blank line between them."
choice)
\n "\\begin{" str "}"
(cdr (assoc str latex-block-args-alist))
- > \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _)) \n
+ > \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _))
+ (unless (bolp) '\n)
"\\end{" str "}" > \n)
(define-skeleton latex-insert-item
@@ -1598,7 +1614,7 @@ If NOT-ALL is non-nil, save the `.dvi' file."
("texindex %r.??")
("dvipdfm %r" "%r.dvi" "%r.pdf")
("dvipdf %r" "%r.dvi" "%r.pdf")
- ("dvips %r" "%r.dvi" "%r.ps")
+ ("dvips -o %r.ps %r" "%r.dvi" "%r.ps")
("ps2pdf %r.ps" "%r.ps" "%r.pdf")
("gv %r.ps &" "%r.ps")
("gv %r.pdf &" "%r.pdf")
@@ -1767,7 +1783,7 @@ FILE is typically the output DVI or PDF file."
(not (tex-uptodate-p (format-spec out fspec)))))))
(defun tex-compile-default (fspec)
- "Guess a default command given the format-spec FSPEC."
+ "Guess a default command given the `format-spec' FSPEC."
;; TODO: Learn to do latex+dvips!
(let ((cmds nil)
(unchanged-in nil))
@@ -1777,6 +1793,9 @@ FILE is typically the output DVI or PDF file."
(if (tex-command-active-p cmd fspec)
(push cmd cmds)
(push (nth 1 cmd) unchanged-in))))
+ ;; If no command seems to be applicable, arbitrarily pick the first one.
+ (unless cmds
+ (setq cmds (list (car tex-compile-commands))))
;; Remove those commands whose input was considered stable for
;; some other command (typically if (t . "%.pdf") is inactive
;; then we're using pdflatex and the fact that the dvi file
@@ -2261,6 +2280,7 @@ Runs the shell command defined by `tex-show-queue-command'."
(defvar tex-indent-basic 2)
(defvar tex-indent-item tex-indent-basic)
(defvar tex-indent-item-re "\\\\\\(bib\\)?item\\>")
+(defvar latex-noindent-environments '("document"))
(defvar tex-latex-indent-syntax-table
(let ((st (make-syntax-table tex-mode-syntax-table)))
@@ -2311,7 +2331,6 @@ There might be text before point."
(latex-find-indent 'virtual))))
;; Default (maybe an argument)
(let ((pos (point))
- (char (char-after))
;; Outdent \item if necessary.
(indent (if (looking-at tex-indent-item-re) (- tex-indent-item) 0))
up-list-pos)
@@ -2329,6 +2348,17 @@ There might be text before point."
;; Have to indent relative to the open-paren.
(goto-char up-list-pos)
(if (and (not tex-indent-allhanging)
+ (save-excursion
+ ;; Make sure we're an argument to a macro and
+ ;; that the macro is at the beginning of a line.
+ (condition-case nil
+ (progn
+ (while (eq (char-syntax (char-after)) ?\()
+ (forward-sexp -1))
+ (and (eq (char-syntax (char-after)) ?/)
+ (progn (skip-chars-backward " \t&")
+ (bolp))))
+ (scan-error nil)))
(> pos (progn (latex-down-list)
(forward-comment (point-max))
(point))))
@@ -2336,18 +2366,24 @@ There might be text before point."
(current-column)
;; We're the first element after a hanging brace.
(goto-char up-list-pos)
- (+ indent tex-indent-basic (latex-find-indent 'virtual))))
+ (+ (if (and (looking-at "\\\\begin *{\\([^\n}]+\\)")
+ (member (match-string 1)
+ latex-noindent-environments))
+ 0 tex-indent-basic)
+ indent (latex-find-indent 'virtual))))
;; We're now at the "beginning" of a line.
((not (and (not virtual) (eq (char-after) ?\\)))
;; Nothing particular here: just keep the same indentation.
(+ indent (current-column)))
;; We're now looking at a macro call.
- ((looking-at tex-indent-item-re)
- ;; Indenting relative to an item, have to re-add the outdenting.
+ ((looking-at tex-indent-item-re)
+ ;; Indenting relative to an item, have to re-add the outdenting.
(+ indent (current-column) tex-indent-item))
(t
(let ((col (current-column)))
- (if (or (null char) (not (eq (char-syntax char) ?\()))
+ (if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\())
+ ;; Can't be an arg if there's an empty line inbetween.
+ (save-excursion (re-search-forward "^[ \t]*$" pos t)))
;; If the first char was not an open-paren, there's
;; a risk that this is really not an argument to the
;; macro at all.
@@ -2422,5 +2458,5 @@ There might be text before point."
(provide 'tex-mode)
-;;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080
+;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080
;;; tex-mode.el ends here
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 69851ac5046..0da4297bb86 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * url-handlers.el (url-insert-file-contents): Use the URL to decide the
+ encoding, not the buffer-file-name (which might not even exist).
+
2004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-insert-file-contents): Decode contents.
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index 56497b00119..18a2e273637 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -208,7 +208,7 @@ accessible."
;; annotation which we could use as a hint of the locale in use
;; at the remote site. Not sure how/if that should be done. --Stef
(decode-coding-inserted-region
- start (point) buffer-file-name visit beg end replace)))
+ start (point) url visit beg end replace)))
(list url (length data))))
(defun url-file-name-completion (url directory)
diff --git a/lisp/xml.el b/lisp/xml.el
index 993ef59b276..f1d8cbb1f00 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -598,8 +598,8 @@ This follows the rule [28] in the XML specifications."
nil)
(t
(if xml-validating-parser
- error "XML: (Validity) Invalid element type in the DTD")))
-
+ (error "XML: (Validity) Invalid element type in the DTD"))))
+
;; rule [45]: the element declaration must be unique
(if (and (assoc element dtd)
xml-validating-parser)
@@ -727,13 +727,13 @@ This follows the rule [28] in the XML specifications."
(match-string 1 this-part)))))))
(cond ((null children)
- (if (stringp expansion)
+ (if (and (eq (length expansion) 1)
+ (stringp (cadr expansion)))
(setq children (concat prev-part expansion))
- (if (stringp (car (last expansion)))
- (progn
- (setq children
- (list (concat prev-part (car expansion))
- (cdr expansion))))
+ (if (stringp (car expansion))
+ (setq children
+ (list (concat prev-part (car expansion))
+ (append (cdr expansion))))
(setq children (append expansion prev-part)))))
((stringp children)
(if (stringp expansion)
@@ -756,11 +756,15 @@ This follows the rule [28] in the XML specifications."
(cond ((stringp children)
(concat children (substring string point)))
((stringp (car (last children)))
- (concat (car children) (substring string point)))
+ (concat (car (last children)) (substring string point)))
((null children)
string)
(t
- (nreverse children)))))
+ (concat (mapconcat 'identity
+ (nreverse children)
+ "")
+ (substring string point))))))
+
;;*******************************************************************
;;**
;;** Printing a tree.
diff --git a/lispintro/emacs-lisp-intro.texi b/lispintro/emacs-lisp-intro.texi
index 2096a60928f..4130eefd2cf 100644
--- a/lispintro/emacs-lisp-intro.texi
+++ b/lispintro/emacs-lisp-intro.texi
@@ -1,6 +1,7 @@
-@c \input texinfo @c -*-texinfo-*-
+\input texinfo @c -*-texinfo-*-
@comment %**start of header
@setfilename ../info/eintr
+@c setfilename emacs-lisp-intro.info
@c sethtmlfilename emacs-lisp-intro.html
@settitle Programming in Emacs Lisp
@syncodeindex vr cp
@@ -21,8 +22,8 @@
@comment %**end of header
-@set edition-number 2.12
-@set update-date 2003 Nov 19
+@set edition-number 2.13
+@set update-date 2004 Oct 5
@ignore
## Summary of shell commands to create various output formats:
@@ -61,6 +62,8 @@
## View Info output with standalone reader
info emacs-lisp-intro.info
+ ## popd
+
@end ignore
@c ================ Included Figures ================
@@ -180,7 +183,7 @@ people who are not programmers.
Edition @value{edition-number}, @value{update-date}
@sp 1
Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1997, 2001,
-2002, 2003 Free Software Foundation, Inc.
+2002, 2003, 2004 Free Software Foundation, Inc.
@sp 1
@iftex
@@ -1050,13 +1053,16 @@ Robert J. Chassell
@chapter List Processing
To the untutored eye, Lisp is a strange programming language. In Lisp
-code there are parentheses everywhere. Some people even claim that the
-name stands for `Lots of Isolated Silly Parentheses'. But the claim is
-unwarranted. Lisp stands for LISt Processing, and the programming
-language handles @emph{lists} (and lists of lists) by putting them
-between parentheses. The parentheses mark the boundaries of the list.
-Sometimes a list is preceded by a single apostrophe or quotation mark,
-@samp{'}. Lists are the basis of Lisp.
+code there are parentheses everywhere. Some people even claim that
+the name stands for `Lots of Isolated Silly Parentheses'. But the
+claim is unwarranted. Lisp stands for LISt Processing, and the
+programming language handles @emph{lists} (and lists of lists) by
+putting them between parentheses. The parentheses mark the boundaries
+of the list. Sometimes a list is preceded by a single apostrophe or
+quotation mark, @samp{'}@footnote{The single apostrophe or quotation
+mark is an abbreviation for the function @code{quote}; you need not
+think about functions now; functions are defined in @ref{Making
+Errors, , Generate an Error Message}.} Lists are the basis of Lisp.
@menu
* Lisp Lists:: What are lists?
@@ -2135,7 +2141,8 @@ Debugger entered--Lisp error:
@need 1250
As usual, the error message tries to be helpful and makes sense after you
-learn how to read it.
+learn how to read it.@footnote{@code{(quote hello)} is an expansion of
+the abbreviation @code{'hello}.}
The first part of the error message is straightforward; it says
@samp{wrong type argument}. Next comes the mysterious jargon word
@@ -20638,6 +20645,7 @@ each column."
@end smallexample
@end ifnottex
+@c qqq
@ignore
Graphing Definitions Re-listed
@@ -21137,6 +21145,7 @@ each column."
(print-X-axis numbers-list horizontal-step)))
@end group
@end smallexample
+@c qqq
@end ignore
@page
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index b568e99fb58..aef4746eef7 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,7 @@
+2004-10-05 Kim F. Storm <storm@cua.dk>
+
+ * display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
+
2004-09-29 Kim F. Storm <storm@cua.dk>
* display.texi (Fringe Bitmaps): Use symbols rather than numbers
diff --git a/lispref/display.texi b/lispref/display.texi
index 00b91fe1fd8..518234ff4f8 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -2655,9 +2655,10 @@ symbols have their own name space.
@defun fringe-bitmaps-at-pos &optional pos window
This function returns the fringe bitmaps of the display line
containing position @var{pos} in window @var{window}. The return
-value has the form @code{(@var{left} . @var{right})}, where @var{left}
+value has the form @code{(@var{left} @var{right} @var{ov})}, where @var{left}
is the symbol for the fringe bitmap in the left fringe (or @code{nil}
-if no bitmap), and @var{right} is similar for the right fringe.
+if no bitmap), @var{right} is similar for the right fringe, and @var{ov}
+is non-@code{nil} if there is an overlay arrow in the left fringe.
The value is @code{nil} if @var{pos} is not visible in @var{window}.
If @var{window} is @code{nil}, that stands for the selected window.
diff --git a/man/ChangeLog b/man/ChangeLog
index fc0bd61497a..8d35fe1024e 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,53 @@
+2004-10-06 Karl Berry <karl@gnu.org>
+
+ * info.texi (@kbd{1}--@kbd{9}): no space around --, for
+ consistency with other uses of dashes.
+
+2004-10-06 Nick Roberts <nickrob@snap.net.nz>
+
+ * building.texi (Starting GUD): Note that multiple debugging
+ sessions requires `gdb --fullname'.
+
+2004-10-05 Karl Berry <karl@gnu.org>
+
+ * info.texi: consistently use --- throughout, periods at end of
+ menu descriptions, and a couple typos.
+ From: Benno Schulenberg <benno@nietvergeten.nl>,
+ in bug-texinfo mail.
+
+2004-10-05 Luc Teirlinck <teirllm@auburn.edu>
+
+ * text.texi: Various small changes in addition to the following.
+ (Text): Replace xref for autotype with inforef.
+ (Sentences): Explain nil value for `sentence-end'.
+ (Paragraphs): Update default values for `paragraph-start' and
+ `paragraph-separate'.
+ (Text Mode): Correct description of Text mode's effect on the
+ syntax table.
+ (Outline Visibility): `hide-other' does not hide top level headings.
+ `selective-display-ellipses' no longer has an effect on Outline mode.
+ (TeX Misc): Add missing @cindex.
+ Replace xref for RefTeX with inforef.
+ (Requesting Formatted Text): the variable
+ `enriched-fill-after-visiting' no longer exists.
+ (Editing Format Info): Update names of menu items and commands.
+ (Format Faces): Mention special effect of specifying the default face.
+ Describe inheritance of text properties.
+ Correct description of `fixed' face.
+ (Format Indentation): Correct description of effect of setting
+ margins. Mention `set-left-margin' and `set-right-margin'.
+ (Format Justification): Update names of menu items.
+ `set-justification-full' is now bound to `M-j b'.
+ Mention that `default-justification' is a per buffer variable.
+ (Format Properties): Update name of menu item.
+ (Forcing Enriched Mode): `format-decode-buffer' automatically
+ turns on Enriched mode if the buffer is in text/enriched format.
+
+
+2004-10-05 Emilio C. Lopes <eclig@gmx.net>
+
+ * calendar.texi (From Other Calendar): Add calendar-goto-iso-week.
+
2004-09-28 Kim F. Storm <storm@cua.dk>
* display.texi (Display Custom) <indicate-buffer-boundaries>:
@@ -893,7 +943,7 @@
* misc.texi: Section "Saving Emacs Sessions" rewritten.
-2003-09-29 Jan D. <jhd@gaffa.gaia.swipnet.se>
+2003-09-29 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
* xresources.texi (GTK names in Emacs): Correct typo.
diff --git a/man/building.texi b/man/building.texi
index 972f88abbde..2ec96b0f6bf 100644
--- a/man/building.texi
+++ b/man/building.texi
@@ -336,11 +336,13 @@ to a particular debugger program.
@findex gdb
Run GDB as a subprocess of Emacs. If the variable
@code{gud-gdb-command-name} is ``gdb --annotate=3'' (the default
-value) then GDB starts as for @kbd{M-x gdba} below. If you want to
-GDB to start as in Emacs 21.3 and earlier then set
-@code{gud-gdb-command-name} to ``gdb --fullname''. In this case, the
-command creates a buffer for input and output to GDB, and switches to
-it. If a GDB buffer already exists, it just switches to that buffer.
+value) then GDB starts as for @kbd{M-x gdba} below. If you want GDB
+to start as in Emacs 21.3 and earlier then edit the string in the
+minibuffer or set @code{gud-gdb-command-name} to ``gdb --fullname''.
+You need to do this if you want to run multiple debugging sessions
+within one Emacs session. In this case, the command creates a buffer
+for input and output to GDB, and switches to it. If a GDB buffer
+already exists, it just switches to that buffer.
@item M-x gdba @key{RET} @var{file} @key{RET}
Run GDB as a subprocess of Emacs, providing a graphical interface
diff --git a/man/calendar.texi b/man/calendar.texi
index 9e3d3cf9f41..f85527ad0ea 100644
--- a/man/calendar.texi
+++ b/man/calendar.texi
@@ -37,6 +37,7 @@ information about the calendar and diary.
* Other Calendars:: Converting dates to other calendar systems.
* Diary:: Displaying events from your diary.
* Appointments:: Reminders when it's time to do something.
+* iCalendar:: Converting diary events to/from iCalendar format.
* Daylight Savings:: How to specify when daylight savings time is active.
* Time Intervals:: Keeping track of time intervals.
@end menu
@@ -754,6 +755,7 @@ other than Mayan; for the Mayan calendar, see the following section.
@kindex g @var{char} @r{(Calendar mode)}
@findex calendar-goto-iso-date
+@findex calendar-goto-iso-week
@findex calendar-goto-julian-date
@findex calendar-goto-astro-day-number
@findex calendar-goto-hebrew-date
@@ -767,6 +769,9 @@ other than Mayan; for the Mayan calendar, see the following section.
@item g c
Move to a date specified in the ISO commercial calendar
(@code{calendar-goto-iso-date}).
+@item g w
+Move to a week specified in the ISO commercial calendar
+(@code{calendar-goto-iso-week}).
@item g j
Move to a date specified in the Julian calendar
(@code{calendar-goto-julian-date}).
@@ -1379,6 +1384,57 @@ clock. The command @kbd{M-x appt-add} adds entries to the appointment
list without affecting your diary file. You delete entries from the
appointment list with @kbd{M-x appt-delete}.
+@node iCalendar
+@section iCalendar
+@cindex iCalendar support
+
+ The icalendar package aims at providing an implementation of the
+iCalendar standard, as defined in ``RFC 2445 -- Internet Calendaring and
+Scheduling Core Object Specification (iCalendar)''. It provides a means
+for importing [iv]Calendar data into Emacs diary files and vice versa.
+
+ Importing should work correctly for ``ordinary'', i.e. non-recurring,
+events. Recurring events may not be imported correctly, if they are
+imported at all. Exporting of diary files into iCalendar files should
+work correctly for most diary entries. Please note that
+@file{icalendar.el} is work in progress, so usage may evolve in future.
+
+@subsection Usage
+
+ To activate the package, use @code{(require 'icalendar)}.
+
+@findex icalendar-extract-ical-from-buffer
+ The command @code{icalendar-extract-ical-from-buffer} extracts
+iCalendar data from the current buffer and adds it to your (default)
+diary file. It can be used interactively, or for automatic extraction
+of iCalendar data; for example with the VM mail reader one could use:
+
+@example
+(add-hook 'vm-select-new-message-hook 'icalendar-extract-ical-from-buffer)
+@end example
+
+@findex icalendar-import-file
+ The function @code{icalendar-import-file} can be used
+non-interactively to import an iCalendar file. @strong{Caution:} the
+contents of the target diary file are @emph{deleted} by default! It is
+highly recommended to use a dedicated diary file for importing. For
+example:
+
+@example
+(icalendar-import-file "/here/is/calendar.ics" "/there/goes/ical-diary")
+@end example
+
+@noindent
+The import file can be added to the diary using an @code{#include}
+directive. @xref{Fancy Diary Display,,, elisp, The Emacs Lisp Reference
+Manual}.
+
+@findex icalendar-convert-diary-to-ical
+ Use @code{icalendar-convert-diary-to-ical} to interactively export an
+Emacs diary file to iCalendar format. @strong{Caution:} the contents of
+the target file are @emph{deleted} by default!
+
+
@node Daylight Savings
@section Daylight Savings Time
@cindex daylight savings time
diff --git a/man/info.texi b/man/info.texi
index 2e42a0b9edc..014e9165087 100644
--- a/man/info.texi
+++ b/man/info.texi
@@ -130,15 +130,15 @@ the screen.
@end ifnotinfo
@menu
-* Help-Small-Screen:: Starting Info on a Small Screen
-* Help:: How to use Info
-* Help-P:: Returning to the Previous node
+* Help-Small-Screen:: Starting Info on a Small Screen.
+* Help:: How to use Info.
+* Help-P:: Returning to the Previous node.
* Help-^L:: The Space, DEL, B and ^L commands.
* Help-Inv:: Invisible text in Emacs Info.
-* Help-M:: Menus
-* Help-Xref:: Following cross-references
-* Help-Int:: Some intermediate Info commands
-* Help-Q:: Quitting Info
+* Help-M:: Menus.
+* Help-Xref:: Following cross-references.
+* Help-Int:: Some intermediate Info commands.
+* Help-Q:: Quitting Info.
@end menu
@node Help-Small-Screen
@@ -212,8 +212,8 @@ This is line 59
If you have managed to get here, go back to the beginning with
@kbd{DEL} (or @key{BACKSPACE}), and come back here again, then you
understand the about the @samp{Space} and @samp{Backspace} keys. So
-now type an @kbd{n} ---just one character; don't type the quotes and
-don't type the Return key afterward--- to get to the normal start of
+now type an @kbd{n}---just one character; don't type the quotes and
+don't type the Return key afterward---to get to the normal start of
the course.
@end ifinfo
@@ -243,8 +243,8 @@ well. In Emacs, the header line is duplicated in a special typeface,
and the duplicate remains at the top of the window all the time even
if you scroll through the node.
- Besides a @samp{Next}, a node can have a @samp{Previous} or an
-@samp{Up} links, or both. As you can see, this node has all of these
+ Besides a @samp{Next}, a node can have a @samp{Previous} link, or an
+@samp{Up} link, or both. As you can see, this node has all of these
links.
@kindex n @r{(Info mode)}
@@ -375,7 +375,7 @@ scroll beyond the beginning or the end of the current node.
@kindex C-l @r{(Info mode)}
If your screen is ever garbaged, you can tell Info to display it
-again by typing @kbd{C-l} (@kbd{Control-L}, that is---hold down
+again by typing @kbd{C-l} (@kbd{Control-L}---that is, hold down
@key{CTRL} and type @kbd{L} or @kbd{l}).
@format
@@ -414,8 +414,8 @@ the list, make it go away by typing a @key{SPC} repeatedly.
(If you are using the stand-alone Info reader, type @kbd{C-x 0} to
return here, that is---press and hold @key{CTRL}, type an @kbd{x},
-then release @key{CTRL} and @kbd{x}, and press @kbd{0}---a zero, not
-the letter ``o''.)
+then release @key{CTRL} and @kbd{x}, and press @kbd{0}; that's a zero,
+not the letter ``o''.)
From now on, you will encounter large nodes without warning, and
will be expected to know how to use @key{SPC} and @key{BACKSPACE} to
@@ -971,7 +971,7 @@ the node @samp{Top} in the Info file @file{dir}. Likewise,
all of the current file by typing @kbd{g*@key{RET}} or all of any
other file with @kbd{g(@var{filename})@key{RET}}.
-@subheading @kbd{1} -- @kbd{9} choose a menu subtopic by its number
+@subheading @kbd{1}--@kbd{9} choose a menu subtopic by its number
@kindex 1 @r{through} 9 @r{(Info mode)}
@findex Info-nth-menu-item
@@ -1061,7 +1061,7 @@ you typed @emph{as a substring}. For each match, Info shows in the
echo area the full index entry it found. Often, the text of the full
index entry already gives you enough information to decide whether it
is relevant to what you are looking for, so we recommend that you read
-what Emacs shows in the echo area before looking at the node it
+what Info shows in the echo area before looking at the node it
displays.
Since @kbd{i} looks for a substring, you can search for subjects even
@@ -1205,7 +1205,7 @@ reads from the terminal.
A menu begins with a line starting with @w{@samp{* Menu:}}. The
rest of the line is a comment. After the starting line, every line
that begins with a @samp{* } lists a single topic. The name of the
-topic--what the user must type at the @kbd{m}'s command prompt to
+topic---what the user must type at the @kbd{m}'s command prompt to
select this topic---comes right after the star and space, and is
followed by a colon, spaces and tabs, and the name of the node which
discusses that topic. The node name, like node names following
diff --git a/man/text.texi b/man/text.texi
index dbf990a2b57..01405ae525b 100644
--- a/man/text.texi
+++ b/man/text.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001, 2002
+@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001, 2002, 2004
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Text, Programs, Indentation, Top
@@ -55,7 +55,7 @@ Then the formatting appears on the screen in Emacs while you edit.
@cindex autotyping
@cindex automatic typing
The ``automatic typing'' features may be useful when writing text.
-@xref{Top,, Autotyping, autotype, Features for Automatic Typing}.
+@inforef{Top,, autotype}.
@menu
* Words:: Moving over and killing words.
@@ -215,10 +215,12 @@ followed by the end of a line or two spaces, with any number of
A sentence also begins or ends wherever a paragraph begins or ends.
@vindex sentence-end
- The variable @code{sentence-end} controls recognition of the end of a
-sentence. It is a regexp that matches the last few characters of a
-sentence, together with the whitespace following the sentence. Its
-normal value is
+ The variable @code{sentence-end} controls recognition of the end of
+a sentence. If non-@code{nil}, it is a regexp that matches the last
+few characters of a sentence, together with the whitespace following
+the sentence. If the value is @code{nil}, the default, then Emacs
+computes the regexp according to various criteria. The result is
+normally similar to the following regexp:
@example
"[.?!][]\"')]*\\($\\| $\\|\t\\| \\)[ \t\n]*"
@@ -298,9 +300,10 @@ that either starts or separates paragraphs. The value of
that separate paragraphs without being part of any paragraph (for
example, blank lines). Lines that start a new paragraph and are
contained in it must match only @code{paragraph-start}, not
-@code{paragraph-separate}. For example, in Fundamental mode,
-@code{paragraph-start} is @w{@code{"[ \t\n\f]"}}, and
-@code{paragraph-separate} is @w{@code{"\f\\|[ \t]*$"}}.
+@code{paragraph-separate}. Each regular expression must match at the
+left margin. For example, in Fundamental mode, @code{paragraph-start}
+is @w{@code{"\f\\|[ \t]*$"}}, and @code{paragraph-separate} is
+@w{@code{"[ \t\f]*$"}}.
Normally it is desirable for page boundaries to separate paragraphs.
The default values of these variables recognize the usual separator for
@@ -312,9 +315,9 @@ pages.
@cindex pages
@cindex formfeed
Files are often thought of as divided into @dfn{pages} by the
-@dfn{formfeed} character (@acronym{ASCII} control-L, octal code 014). When you
-print hardcopy for a file, this character forces a page break; thus,
-each page of the file goes on a separate page on paper. Most Emacs
+@dfn{formfeed} character (@acronym{ASCII} control-L, octal code 014).
+When you print hardcopy for a file, this character forces a page break;
+thus, each page of the file goes on a separate page on paper. Most Emacs
commands treat the page-separator character just like any other
character: you can insert it with @kbd{C-q C-l}, and delete it with
@key{DEL}. Thus, you are free to paginate your file or not. However,
@@ -575,7 +578,7 @@ period. Set the variable @code{sentence-end-without-period} to
conditions for where line-breaking is allowed. Its value is either
@code{nil} or a Lisp function; the function is called with no
arguments, and if it returns a non-@code{nil} value, then point is not
-a good place to break the line. The standard functions you can use
+a good place to break the line. Two standard functions you can use are
@code{fill-single-word-nobreak-p} (don't break after the first word of
a sentence or before the last) and @code{fill-french-nobreak-p} (don't
break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}).
@@ -606,11 +609,12 @@ a new paragraph.
@kindex C-x .
@findex set-fill-prefix
- To specify a fill prefix, move to a line that starts with the desired
-prefix, put point at the end of the prefix, and give the command
-@w{@kbd{C-x .}}@: (@code{set-fill-prefix}). That's a period after the
-@kbd{C-x}. To turn off the fill prefix, specify an empty prefix: type
-@w{@kbd{C-x .}}@: with point at the beginning of a line.@refill
+ To specify a fill prefix for the current buffer, move to a line that
+starts with the desired prefix, put point at the end of the prefix,
+and give the command @w{@kbd{C-x .}}@: (@code{set-fill-prefix}).
+That's a period after the @kbd{C-x}. To turn off the fill prefix,
+specify an empty prefix: type @w{@kbd{C-x .}}@: with point at the
+beginning of a line.@refill
When a fill prefix is in effect, the fill commands remove the fill
prefix from each line before filling and insert it on each line after
@@ -824,14 +828,14 @@ filling determines what indentation to use when filling a paragraph.
@kindex TAB @r{(Text mode)}
Text mode defines @key{TAB} to run @code{indent-relative}
(@pxref{Indentation}), so that you can conveniently indent a line like
-the previous line. When the previous line is not indented,
-@code{indent-relative} runs @code{tab-to-tab-stop}, which uses Emacs tab
-stops that you can set (@pxref{Tab Stops}).
+the previous line.
Text mode turns off the features concerned with comments except when
-you explicitly invoke them. It changes the syntax table so that periods
-are not considered part of a word, while apostrophes, backspaces and
-underlines are considered part of words.
+you explicitly invoke them. It changes the syntax table so that
+single-quotes are considered part of words. However, if a word starts
+with single-quotes, then these are treated as a prefix for purposes
+such as capitalization. That is, @kbd{M-c} will convert
+@samp{'hello'} into @samp{'Hello'}, as expected.
@cindex Paragraph-Indent Text mode
@cindex mode, Paragraph-Indent Text
@@ -896,8 +900,8 @@ invisible lines follow).
Editing commands that operate on lines, such as @kbd{C-n} and
@kbd{C-p}, treat the text of the invisible line as part of the previous
-visible line. Killing an entire visible line, including its terminating
-newline, really kills all the following invisible lines along with it.
+visible line. Killing the ellipsis at the end of a visible line
+really kills all the following invisible lines.
Outline minor mode provides the same commands as the major mode,
Outline mode, but you can use it in conjunction with other major modes.
@@ -1137,12 +1141,9 @@ except the top @var{n} levels of heading lines.
@findex hide-other
@kindex C-c C-o @r{(Outline mode)}
The command @kbd{C-c C-o} (@code{hide-other}) hides everything except
-the heading or body text that point is in, plus its parents (the headers
-leading up from there to top level in the outline).
-
- You can turn off the use of ellipses at the ends of visible lines by
-setting @code{selective-display-ellipses} to @code{nil}. Then there is
-no visible indication of the presence of invisible lines.
+the heading and body text that point is in, plus its parents (the headers
+leading up from there to top level in the outline) and the top level
+headings.
@findex reveal-mode
When incremental search finds text that is hidden by Outline mode,
@@ -1180,7 +1181,7 @@ buffers.
nested portion of the outline, while hiding its relatives at higher
levels.
- Consider an Outline mode buffer all the text and subheadings under
+ Consider an Outline mode buffer with all the text and subheadings under
level-1 headings hidden. To look at what is hidden under one of these
headings, you could use @kbd{C-c C-e} (@kbd{M-x show-entry}) to expose
the body, or @kbd{C-c C-i} to expose the child (level-2) headings.
@@ -1215,8 +1216,8 @@ particular chapter or section of your document.
To unzoom (exit) a fold, use @kbd{C-c C-x} (@kbd{M-x foldout-exit-fold}).
This hides all the text and subheadings under the top-level heading and
returns you to the previous view of the buffer. Specifying a numeric
-argument exits that many levels of folds. Specifying a zero argument exits all
-folds.
+argument exits that many levels of folds. Specifying a zero argument
+exits all folds.
To cancel the narrowing of a fold without hiding the text and
subheadings, specify a negative argument. For example, @kbd{M--2 C-c
@@ -1633,7 +1634,7 @@ current buffer's file. Generally, you need to do @kbd{C-c C-f}
@findex iso-iso2gtex
@findex iso-gtex2iso
@cindex Latin-1 @TeX{} encoding
-@TeX{} encoding
+@cindex @TeX{} encoding
The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x
iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert
between Latin-1 encoded files and @TeX{}-encoded equivalents.
@@ -1659,7 +1660,7 @@ required. This is set up for Czech---customize the group
@cindex references, La@TeX{}
@cindex La@TeX{} references
For managing all kinds of references for La@TeX{}, you can use
-Ref@TeX{}. @xref{Top, , RefTeX, reftex}.
+Ref@TeX{}. @inforef{Top,, reftex}.
@node HTML Mode
@section SGML, XML, and HTML Modes
@@ -1880,16 +1881,6 @@ into the file. When you visit the file again, Emacs will automatically
recognize the format, reconvert the text, and turn on Enriched mode
again.
-@vindex enriched-fill-after-visiting
- Normally, after visiting a file in text/enriched format, Emacs refills
-each paragraph to fit the specified right margin. You can turn off this
-refilling, to save time, by setting the variable
-@code{enriched-fill-after-visiting} to @code{nil} or to @code{ask}.
-
- However, when visiting a file that was saved from Enriched mode, there
-is no need for refilling, because Emacs saves the right margin settings
-along with the text.
-
@vindex enriched-translations
You can add annotations for saving additional text properties, which
Emacs normally does not save, by adding to @code{enriched-translations}.
@@ -1951,22 +1942,22 @@ commands directly:
@table @code
@findex facemenu-remove-face-props
@item Remove Face Properties
-Delete from the region all the text properties that the Text Properties
-menu works with (@code{facemenu-remove-face-props}).
+Delete from the region all face and color text properties
+(@code{facemenu-remove-face-props}).
@findex facemenu-remove-all
-@item Remove All
+@item Remove Text Properties
Delete @emph{all} text properties from the region
(@code{facemenu-remove-all}).
-@findex describe-text-at
+@findex describe-text-properties
@cindex text properties of characters
@cindex overlays at character position
@cindex widgets at buffer position
@cindex buttons at buffer position
-@item Describe Text
+@item Describe Properties
List all the text properties, widgets, buttons, and overlays of the
-character following point (@code{describe-text-at}).
+character following point (@code{describe-text-properties}).
@item Display Faces
Display a list of all the defined faces (@code{list-faces-display}).
@@ -2018,8 +2009,20 @@ Set the region, or the next inserted character, to the face @var{face}
If you use these commands with a prefix argument---or, in Transient Mark
mode, if the region is not active---then these commands specify a face
-to use for your next self-inserting input. @xref{Transient Mark}. This
-applies to both the keyboard commands and the menu commands.
+to use for any immediately following self-inserting input.
+@xref{Transient Mark}. This applies to both the keyboard commands and
+the menu commands.
+
+ Specifying the @code{default} face also resets foreground and
+background color to their defaults.(@pxref{Format Colors}).
+
+ Any self-inserting character you type inherits, by default, the face
+properties (as well as most other text properties) of the preceding
+character. Specifying any face property, including foreground or
+background color, for your next self-inserting character will prevent
+it from inheriting any face properties from the preceding character,
+although it will still inherit other text properties. Characters
+inserted by yanking do not inherit text properties.
Enriched mode defines two additional faces: @code{excerpt} and
@code{fixed}. These correspond to codes used in the text/enriched file
@@ -2029,20 +2032,17 @@ format.
same as @code{italic} unless you customize it (@pxref{Face Customization}).
The @code{fixed} face means, ``Use a fixed-width font for this part
-of the text.'' This makes a visible difference only if you have
-specified a variable-width font in the default face; however, even if
-the default font is fixed-width, applying the @code{fixed} face to a
-part of the text will cause that part of the text to appear in a
-fixed-width font, if the file is ever displayed with a variable-width
-default font. This applies to Emacs and to other systems that display
-text/enriched format. So if you specifically want a certain part of
-the text to use a fixed-width font, you should specify the
-@code{fixed} face for that part.
-
- The @code{fixed} face is normally set up to use a different font
-from the default, even if the default face is also fixed-width.
-Different systems have different fonts installed, so you may need to
-customize this. @xref{Face Customization}.
+of the text.'' Applying the @code{fixed} face to a part of the text
+will cause that part of the text to appear in a fixed-width font, even
+if the default font is variable-width. This applies to Emacs and to
+other systems that display text/enriched format. So if you
+specifically want a certain part of the text to use a fixed-width
+font, you should specify the @code{fixed} face for that part.
+
+ By default, the @code{fixed} face looks the same as @code{bold}.
+This is an attempt to distinguish it from @code{default}. You may
+wish to customize @code{fixed} to some other fixed-width medium font.
+@xref{Face Customization}.
If your terminal cannot display different faces, you will not be
able to see them, but you can still edit documents containing faces,
@@ -2058,20 +2058,20 @@ text. There is a menu for specifying the foreground color and a menu
for specifying the background color. Each color menu lists all the
colors that you have used in Enriched mode in the current Emacs session.
- If you specify a color with a prefix argument---or, in Transient Mark
-mode, if the region is not active---then it applies to your next
-self-inserting input. @xref{Transient Mark}. Otherwise, the command
-applies to the region.
+ If you specify a color with a prefix argument---or, in Transient
+Mark mode, if the region is not active---then it applies to any
+immediately following self-inserting input. @xref{Transient Mark}.
+Otherwise, the command applies to the region.
Each color menu contains one additional item: @samp{Other}. You can use
this item to specify a color that is not listed in the menu; it reads
-the color name with the minibuffer. To display list of available colors
+the color name with the minibuffer. To display a list of available colors
and their names, use the @samp{Display Colors} menu item in the Text
Properties menu (@pxref{Editing Format Info}).
Any color that you specify in this way, or that is mentioned in a
-formatted text file that you read in, is added to both color menus for
-the duration of the Emacs session.
+formatted text file that you read in, is added to the corresponding
+color menu for the duration of the Emacs session.
@findex facemenu-set-foreground
@findex facemenu-set-background
@@ -2113,33 +2113,42 @@ Remove 4 columns of indentation from the right margin.
You can use these commands repeatedly to increase or decrease the
indentation.
- The most common way to use these commands is to change the indentation
-of an entire paragraph. However, that is not the only use. You can
-change the margins at any point; the new values take effect at the end
-of the line (for right margins) or the beginning of the next line (for
-left margins).
+ The most common way to use them is to change the indentation of an
+entire paragraph. For other uses, the effects of refilling can be
+hard to predict, except in some special cases like the one described
+next.
- This makes it possible to format paragraphs with @dfn{hanging indents},
-which means that the first line is indented less than subsequent lines.
-To set up a hanging indent, increase the indentation of the region
-starting after the first word of the paragraph and running until the end
-of the paragraph.
+ The most common other use is to format paragraphs with @dfn{hanging
+indents}, which means that the first line is indented less than
+subsequent lines. To set up a hanging indent, increase the
+indentation of the region starting after the first word of the
+paragraph and running until the end of the paragraph.
Indenting the first line of a paragraph is easier. Set the margin for
the whole paragraph where you want it to be for the body of the
paragraph, then indent the first line by inserting extra spaces or tabs.
- Sometimes, as a result of editing, the filling of a paragraph becomes
-messed up---parts of the paragraph may extend past the left or right
-margins. When this happens, use @kbd{M-q} (@code{fill-paragraph}) to
-refill the paragraph.
-
@vindex standard-indent
The variable @code{standard-indent} specifies how many columns these
commands should add to or subtract from the indentation. The default
value is 4. The overall default right margin for Enriched mode is
controlled by the variable @code{fill-column}, as usual.
+@kindex C-c [ @r{(Enriched mode)}
+@kindex C-c ] @r{(Enriched mode)}
+@findex set-left-margin
+@findex set-right-margin
+ There are also two commands for setting the left or right margin of
+the region absolutely: @code{set-left-margin} and
+@code{set-right-margin}. Enriched mode binds these commands to
+@kbd{C-c [} and @kbd{C-c ]}, respectively. You can specify the
+margin width either with a numeric argument or in the minibuffer.
+
+ Sometimes, as a result of editing, the filling of a paragraph becomes
+messed up---parts of the paragraph may extend past the left or right
+margins. When this happens, use @kbd{M-q} (@code{fill-paragraph}) to
+refill the paragraph.
+
The fill prefix, if any, works in addition to the specified paragraph
indentation: @kbd{C-x .} does not include the specified indentation's
whitespace in the new value for the fill prefix, and the fill commands
@@ -2157,11 +2166,11 @@ affects the Emacs fill commands.
the style. The submenu contains five items:
@table @code
-@item Flush Left
+@item Left
This is the most common style of justification (at least for English).
Lines are aligned at the left margin but left uneven at the right.
-@item Flush Right
+@item Right
This aligns each line with the right margin. Spaces and tabs are added
on the left, if necessary, to make lines line up on the right.
@@ -2175,7 +2184,7 @@ the width of spaces in a line to achieve elegant justification.
@item Center
This centers every line between the current margins.
-@item None
+@item Unfilled
This turns off filling entirely. Each line will remain as you wrote it;
the fill and auto-fill functions will have no effect on text which has
this setting. You can, however, still indent the left margin. In
@@ -2195,9 +2204,9 @@ Make the region left-filled (@code{set-justification-left}).
@findex set-justification-right
@item M-j r
Make the region right-filled (@code{set-justification-right}).
-@kindex M-j f @r{(Enriched mode)}
+@kindex M-j b @r{(Enriched mode)}
@findex set-justification-full
-@item M-j f
+@item M-j b
Make the region fully justified (@code{set-justification-full}).
@kindex M-j c @r{(Enriched mode)}
@kindex M-S @r{(Enriched mode)}
@@ -2220,11 +2229,15 @@ region.
The default justification style is specified by the variable
@code{default-justification}. Its value should be one of the symbols
@code{left}, @code{right}, @code{full}, @code{center}, or @code{none}.
+This is a per-buffer variable. Setting the variable directly affects
+only the current buffer. However, customizing it in a Custom buffer
+sets (as always) the default value for buffers that do not override it.
+@xref{Locals}, and @ref{Easy Customization}.
@node Format Properties
@subsection Setting Other Text Properties
- The Other Properties menu lets you add or remove three other useful text
+ The Special Properties menu lets you add or remove three other useful text
properties: @code{read-only}, @code{invisible} and @code{intangible}.
The @code{intangible} property disallows moving point within the text,
the @code{invisible} text property hides text from display, and the
@@ -2253,10 +2266,10 @@ When you visit a file that was created with some other editor, Emacs may
not recognize the file as being in the text/enriched format. In this
case, when you visit the file you will see the formatting commands
rather than the formatted text. Type @kbd{M-x format-decode-buffer} to
-translate it.
+translate it. This also automatically turns on Enriched mode.
@item
-When you @emph{insert} a file into a buffer, rather than visiting it.
+When you @emph{insert} a file into a buffer, rather than visiting it,
Emacs does the necessary conversions on the text which you insert, but
it does not enable Enriched mode. If you wish to do that, type @kbd{M-x
enriched-mode}.
@@ -2268,7 +2281,7 @@ to translate from; however, normally you can type just @key{RET}, which
tells Emacs to guess the format.
@findex format-find-file
- If you wish to look at text/enriched file in its raw form, as a
+ If you wish to look at a text/enriched file in its raw form, as a
sequence of characters rather than as formatted text, use the @kbd{M-x
find-file-literally} command. This visits a file, like
@code{find-file}, but does not do format conversion. It also inhibits
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 1722153dc51..e906a8f4954 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-06 Eli Zaretskii <eliz@gnu.org>
+
+ * sed1v2.inp (LC_ALL=C): Fix src/Makefile breakage caused by
+ recent (2004-09-24) changes in src/Makefile.in.
+
2004-08-14 Eli Zaretskii <eliz@gnu.org>
* sedleim.inp: Remove the lines which say "<TAB>@true", to avoid
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index dc316819a5d..8edc1616f23 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -20,9 +20,9 @@ s/^#.*//
s/^[ \f\t][ \f\t]*$//
s/^ / /
s/\.h\.in/.h-in/
-/^ LC_ALL=C \.\/temacs/i\
+/^ LC_ALL=C \$(RUN_TEMACS)/i\
stubedit temacs.exe minstack=100k
-/^ LC_ALL=C.*temacs/s/LC_ALL=C/set &;/
+/^ LC_ALL=C.*\$(RUN_TEMACS)/s/LC_ALL=C/set &;/
/^MAKE *=/s/^/# /
/^SHELL *=/s/^/# /
/^srcdir *=/s/@[^@\n]*@/./
diff --git a/nt/ChangeLog b/nt/ChangeLog
index af6e93c3ff5..8866a179e0a 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -77,7 +77,7 @@
* multi-install-info.bat: New file.
-2003-06-27 Jan D. <jan.h.d@swipnet.se>
+2003-06-27 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* config.nt (my_strftime): New define.
diff --git a/src/.gdbinit b/src/.gdbinit
index 3af7e369923..b7716f0e904 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -60,6 +60,16 @@ Print the emacs s-expression which is $.
Works only when an inferior emacs is executing.
end
+# Print out s-expressions
+define pp
+ set $tmp = $arg0
+ set debug_print ($tmp)
+end
+document pp
+Print the argument as an emacs s-expression
+Works only when an inferior emacs is executing.
+end
+
define xtype
xgettype $
output $type
@@ -429,6 +439,16 @@ document xreload
end
xreload
+# Flush display (X only)
+define ff
+ set x_flush (0)
+end
+document ff
+Flush pending X window display updates to screen.
+Works only when an inferior emacs is executing.
+end
+
+
define hook-run
xreload
end
diff --git a/src/ChangeLog b/src/ChangeLog
index 7e4d0f945ec..cd4412b8e9a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,72 @@
+2004-10-06 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macfns.c (mac_get_window_bounds): Add extern.
+ (x_real_positions): Use mac_get_window_bounds.
+
+ * macmenu.c (update_submenu_strings): Apply 2004-09-07 change for
+ xmenu.c (YAILOM).
+
+ * macterm.c [!MAC_OSX]: Include Windows.h.
+ (front_emacs_window): Rename from mac_front_window. All uses
+ changed. Return the frontmost non-tooltip emacs window.
+ (mac_get_window_bounds): New function.
+ (x_calc_absolute_position): Use the difference of width and height
+ between the inner and outer window.
+ (x_set_offset): Specify window position by the coordinae of the
+ outer window. Adjust the position if the title bar is completely
+ outside the screen.
+ (app_is_suspended, app_sleep_time): Remove unused variables.
+ (do_app_resume, do_app_suspend): Remove their contents because
+ window-activate/deactivate events will do the job.
+ (do_zoom_window): Remove unused variables. Make compliant to the
+ standard way of zooming. Set f->left_pos and f->top_pos.
+ (XTread_socket): Don't use argument `expected'. Don't use
+ FrontWindow to determine the clicked window. Exclude unprocessed
+ mouseUp cases in the early stage. Add parentheses to fix operator
+ precedence.
+ (XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area.
+
+
+2004-10-05 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
+
+ * config.in: Regenerate.
+
+ * Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of
+ HAVE_EXECSHIELD.
+
+2004-10-05 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
+ a row if Alt or Meta has been found for that row. Also stop scanning
+ for Keysyms for that row.
+
+2004-10-04 Kim F. Storm <storm@cua.dk>
+
+ * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons
+ to list. Include overlay arrow bitmap in return value.
+
+ * xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll
+ bars with fractional column width. If scroll bar separates two
+ windows, move it towards the window it belongs to. Only update
+ the padding area below the scroll bar widget when necessary,
+ i.e. when scroll bar widget is created, moved, or resized.
+
+ * xdisp.c (define_frame_cursor1): Do not change frame cursor
+ while tracking/dragging mouse.
+ (x_draw_vertical_border): Do not draw line if frame has scroll bars.
+
+ * window.c (coordinates_in_window): Relax check for cursor
+ on vertial border between mode lines.
+ (Fset_window_fringes): Do not allow negative widths.
+ (Fset_window_scroll_bars): Likewise.
+
+ * .gdbinit (pp): Shorthand for p ARG + pr.
+ (ff): New command: flush frame updates (X only).
+
+2004-10-03 Michael Albinus <michael.albinus@gmx.de>
+
+ * fileio.c (auto_save_1) Call Ffile_modes for remote files.
+
2004-09-30 Kenichi Handa <handa@m17n.org>
* process.c (send_process): Free composition data.
diff --git a/src/Makefile.in b/src/Makefile.in
index dc8964a42ca..f85811c970a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -909,7 +909,7 @@ LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) \
#define OBJECTS_MACHINE
#endif
-#ifdef HAVE_EXECSHIELD
+#ifdef HAVE_RANDOM_HEAPSTART
#undef i386
RUN_TEMACS = @SETARCH@ i386 ./temacs
#else
diff --git a/src/config.in b/src/config.in
index e5d112ee81c..6e6d61b4e02 100644
--- a/src/config.in
+++ b/src/config.in
@@ -136,9 +136,6 @@ Boston, MA 02111-1307, USA. */
/* Define to 1 if you have the `euidaccess' function. */
#undef HAVE_EUIDACCESS
-/* Define to 1 if this OS has exec shield and we can handle it. */
-#undef HAVE_EXECSHIELD
-
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
@@ -432,6 +429,9 @@ Boston, MA 02111-1307, USA. */
/* Define to 1 if you have the `random' function. */
#undef HAVE_RANDOM
+/* Define to 1 if this OS randomizes the start address of the heap. */
+#undef HAVE_RANDOM_HEAPSTART
+
/* Define to 1 if you have the `recvfrom' function. */
#undef HAVE_RECVFROM
diff --git a/src/fileio.c b/src/fileio.c
index 0cfea99b469..ece909ea8b3 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5720,6 +5720,9 @@ auto_save_1 ()
&& stat (SDATA (current_buffer->filename), &st) >= 0)
/* But make sure we can overwrite it later! */
auto_save_mode_bits = st.st_mode | 0600;
+ else if (! NILP (current_buffer->filename))
+ /* Remote files don't cooperate with stat. */
+ auto_save_mode_bits = XINT (Ffile_modes (current_buffer->filename)) | 0600;
else
auto_save_mode_bits = 0666;
diff --git a/src/fringe.c b/src/fringe.c
index 529004c7ed8..2da5439b039 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1348,9 +1348,10 @@ DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos,
0, 2, 0,
doc: /* Return fringe bitmaps of row containing position POS in window WINDOW.
If WINDOW is nil, use selected window. If POS is nil, use value of point
-in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT
-are the fringe bitmap numbers for the bitmaps in the left and right fringe,
-resp. If left or right fringe is empty, the corresponding element is nil.
+in that window. Return value is a list (LEFT RIGHT OV), where LEFT
+is the symbol for the bitmap in the left fringe (or nil if no bitmap),
+RIGHT is similar for the right fringe, and OV is non-nil if there is an
+overlay arrow in the left fringe.
Return nil if POS is not visible in WINDOW. */)
(pos, window)
Lisp_Object pos, window;
@@ -1377,8 +1378,9 @@ Return nil if POS is not visible in WINDOW. */)
row = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
row = row_containing_pos (w, textpos, row, NULL, 0);
if (row)
- return Fcons (get_fringe_bitmap_name (row->left_fringe_bitmap),
- get_fringe_bitmap_name (row->right_fringe_bitmap));
+ return list3 (get_fringe_bitmap_name (row->left_fringe_bitmap),
+ get_fringe_bitmap_name (row->right_fringe_bitmap),
+ (row->overlay_arrow_p ? Qt : Qnil));
else
return Qnil;
}
diff --git a/src/macfns.c b/src/macfns.c
index 3b09b344a55..f7594e9c6c2 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -312,6 +312,9 @@ static Lisp_Object x_default_scroll_bar_color_parameter P_ ((struct frame *,
Lisp_Object,
char *, char *,
int));
+
+extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
+
/* Store the screen positions of frame F into XPTR and YPTR.
These are the positions of the containing window manager window,
not Emacs's own window. */
@@ -321,33 +324,15 @@ x_real_positions (f, xptr, yptr)
FRAME_PTR f;
int *xptr, *yptr;
{
- Point pt;
- GrafPtr oldport;
+ Rect inner, outer;
- GetPort (&oldport);
- SetPortWindowPort (FRAME_MAC_WINDOW (f));
+ mac_get_window_bounds (f, &inner, &outer);
-#if TARGET_API_MAC_CARBON
- {
- Rect r;
+ f->x_pixels_diff = inner.left - outer.left;
+ f->y_pixels_diff = inner.top - outer.top;
- GetWindowPortBounds (FRAME_MAC_WINDOW (f), &r);
- SetPt (&pt, r.left, r.top);
- }
-#else /* not TARGET_API_MAC_CARBON */
- SetPt (&pt,
- FRAME_MAC_WINDOW (f)->portRect.left,
- FRAME_MAC_WINDOW (f)->portRect.top);
-#endif /* not TARGET_API_MAC_CARBON */
- LocalToGlobal (&pt);
- SetPort (oldport);
-
- /* MAC has no frame pixel diff. */
- f->x_pixels_diff = 0;
- f->y_pixels_diff = 0;
-
- *xptr = pt.h;
- *yptr = pt.v;
+ *xptr = outer.left;
+ *yptr = outer.top;
}
diff --git a/src/macmenu.c b/src/macmenu.c
index 740bda261d8..007fab15eab 100644
--- a/src/macmenu.c
+++ b/src/macmenu.c
@@ -1322,7 +1322,7 @@ update_submenu_strings (first_wv)
for (wv = first_wv; wv; wv = wv->next)
{
- if (wv->lname && ! NILP (wv->lname))
+ if (STRINGP (wv->lname))
{
wv->name = SDATA (wv->lname);
@@ -1336,7 +1336,7 @@ update_submenu_strings (first_wv)
}
}
- if (wv->lkey && ! NILP (wv->lkey))
+ if (STRINGP (wv->lkey))
wv->key = SDATA (wv->lkey);
if (wv->contents)
diff --git a/src/macterm.c b/src/macterm.c
index 4f721fff304..56c4653bf43 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -50,6 +50,7 @@ Boston, MA 02111-1307, USA. */
#include <TextUtils.h>
#include <LowMem.h>
#include <Controls.h>
+#include <Windows.h>
#if defined (__MRC__) || (__MSL__ >= 0x6000)
#include <ControlDefinitions.h>
#endif
@@ -3887,18 +3888,21 @@ remember_mouse_glyph (f1, gx, gy)
static WindowPtr
-mac_front_window ()
+front_emacs_window ()
{
#if TARGET_API_MAC_CARBON
- return GetFrontWindowOfClass (kDocumentWindowClass, true);
+ WindowPtr wp = GetFrontWindowOfClass (kDocumentWindowClass, true);
+
+ while (wp && !is_emacs_window (wp))
+ wp = GetNextWindowOfClass (wp, kDocumentWindowClass, true);
#else
- WindowPtr front_window = FrontWindow ();
+ WindowPtr wp = FrontWindow ();
- if (tip_window && front_window == tip_window)
- return GetNextWindow (front_window);
- else
- return front_window;
+ while (wp && (wp == tip_window || !is_emacs_window (wp)))
+ wp = GetNextWindow (wp);
#endif
+
+ return wp;
}
#define mac_window_to_frame(wp) (((mac_output *) GetWRefCon (wp))->mFP)
@@ -3934,7 +3938,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
{
Point mouse_pos;
int ignore1, ignore2;
- WindowPtr wp = mac_front_window ();
+ WindowPtr wp = front_emacs_window ();
struct frame *f;
Lisp_Object frame, tail;
@@ -4551,7 +4555,7 @@ x_scroll_bar_report_motion (fp, bar_window, part, x, y, time)
unsigned long *time;
{
struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
- WindowPtr wp = mac_front_window ();
+ WindowPtr wp = front_emacs_window ();
Point mouse_pos;
struct frame *f = mac_window_to_frame (wp);
int win_y, top_range;
@@ -5036,6 +5040,26 @@ xim_close_dpy (dpyinfo)
*/
+void
+mac_get_window_bounds (f, inner, outer)
+ struct frame *f;
+ Rect *inner, *outer;
+{
+#if TARGET_API_MAC_CARBON
+ GetWindowBounds (FRAME_MAC_WINDOW (f), kWindowContentRgn, inner);
+ GetWindowBounds (FRAME_MAC_WINDOW (f), kWindowStructureRgn, outer);
+#else /* not TARGET_API_MAC_CARBON */
+ RgnHandle region = NewRgn ();
+
+ GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowContentRgn, region);
+ *inner = (*region)->rgnBBox;
+ GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowStructureRgn, region);
+ *outer = (*region)->rgnBBox;
+ DisposeRgn (region);
+#endif /* not TARGET_API_MAC_CARBON */
+}
+
+
/* Calculate the absolute position in frame F
from its current recorded position values and gravity. */
@@ -5043,47 +5067,36 @@ void
x_calc_absolute_position (f)
struct frame *f;
{
- Point pt;
+ int width_diff = 0, height_diff = 0;
int flags = f->size_hint_flags;
+ Rect inner, outer;
- pt.h = pt.v = 0;
+ /* We have nothing to do if the current position
+ is already for the top-left corner. */
+ if (! ((flags & XNegative) || (flags & YNegative)))
+ return;
- /* Find the position of the outside upper-left corner of
+ /* Find the offsets of the outside upper-left corner of
the inner window, with respect to the outer window. */
- if (f->output_data.mac->parent_desc != FRAME_MAC_DISPLAY_INFO (f)->root_window)
- {
- GrafPtr savePort;
- GetPort (&savePort);
-
- SetPortWindowPort (FRAME_MAC_WINDOW (f));
+ mac_get_window_bounds (f, &inner, &outer);
-#if TARGET_API_MAC_CARBON
- {
- Rect r;
-
- GetWindowPortBounds (FRAME_MAC_WINDOW (f), &r);
- SetPt(&pt, r.left, r.top);
- }
-#else /* not TARGET_API_MAC_CARBON */
- SetPt(&pt, FRAME_MAC_WINDOW (f)->portRect.left, FRAME_MAC_WINDOW (f)->portRect.top);
-#endif /* not TARGET_API_MAC_CARBON */
- LocalToGlobal (&pt);
- SetPort (savePort);
- }
+ width_diff = (outer.right - outer.left) - (inner.right - inner.left);
+ height_diff = (outer.bottom - outer.top) - (inner.bottom - inner.top);
/* Treat negative positions as relative to the leftmost bottommost
position that fits on the screen. */
if (flags & XNegative)
f->left_pos = (FRAME_MAC_DISPLAY_INFO (f)->width
- - 2 * f->border_width - pt.h
+ - width_diff
- FRAME_PIXEL_WIDTH (f)
+ f->left_pos);
- /* NTEMACS_TODO: Subtract menubar height? */
+
if (flags & YNegative)
f->top_pos = (FRAME_MAC_DISPLAY_INFO (f)->height
- - 2 * f->border_width - pt.v
+ - height_diff
- FRAME_PIXEL_HEIGHT (f)
+ f->top_pos);
+
/* The left_pos and top_pos
are now relative to the top and left screen edges,
so the flags should correspond. */
@@ -5102,8 +5115,6 @@ x_set_offset (f, xoff, yoff, change_gravity)
register int xoff, yoff;
int change_gravity;
{
- int modified_top, modified_left;
-
if (change_gravity > 0)
{
f->top_pos = yoff;
@@ -5120,11 +5131,55 @@ x_set_offset (f, xoff, yoff, change_gravity)
BLOCK_INPUT;
x_wm_set_size_hint (f, (long) 0, 0);
- modified_left = f->left_pos;
- modified_top = f->top_pos;
-
- MoveWindow (FRAME_MAC_WINDOW (f), modified_left + 6,
- modified_top + 42, false);
+#if TARGET_API_MAC_CARBON
+ MoveWindowStructure (FRAME_MAC_WINDOW (f), f->left_pos, f->top_pos);
+ /* If the title bar is completely outside the screen, adjust the
+ position. */
+ ConstrainWindowToScreen (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn,
+ kWindowConstrainMoveRegardlessOfFit
+ | kWindowConstrainAllowPartial, NULL, NULL);
+ x_real_positions (f, &f->left_pos, &f->top_pos);
+#else
+ {
+ Rect inner, outer, screen_rect, dummy;
+ RgnHandle region = NewRgn ();
+
+ mac_get_window_bounds (f, &inner, &outer);
+ f->x_pixels_diff = inner.left - outer.left;
+ f->y_pixels_diff = inner.top - outer.top;
+ MoveWindow (FRAME_MAC_WINDOW (f), f->left_pos + f->x_pixels_diff,
+ f->top_pos + f->y_pixels_diff, false);
+
+ /* If the title bar is completely outside the screen, adjust the
+ position. The variable `outer' holds the title bar rectangle.
+ The variable `inner' holds slightly smaller one than `outer',
+ so that the calculation of overlapping may not become too
+ strict. */
+ GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn, region);
+ outer = (*region)->rgnBBox;
+ DisposeRgn (region);
+ inner = outer;
+ InsetRect (&inner, 8, 8);
+ screen_rect = qd.screenBits.bounds;
+ screen_rect.top += GetMBarHeight ();
+
+ if (!SectRect (&inner, &screen_rect, &dummy))
+ {
+ if (inner.right <= screen_rect.left)
+ f->left_pos = screen_rect.left;
+ else if (inner.left >= screen_rect.right)
+ f->left_pos = screen_rect.right - (outer.right - outer.left);
+
+ if (inner.bottom <= screen_rect.top)
+ f->top_pos = screen_rect.top;
+ else if (inner.top >= screen_rect.bottom)
+ f->top_pos = screen_rect.bottom - (outer.bottom - outer.top);
+
+ MoveWindow (FRAME_MAC_WINDOW (f), f->left_pos + f->x_pixels_diff,
+ f->top_pos + f->y_pixels_diff, false);
+ }
+ }
+#endif
UNBLOCK_INPUT;
}
@@ -6900,6 +6955,7 @@ x_find_ccl_program (fontp)
/* true when cannot handle any Mac OS events */
static int handling_window_update = 0;
+#if 0
/* the flag appl_is_suspended is used both for determining the sleep
time to be passed to WaitNextEvent and whether the cursor should be
drawn when updating the display. The cursor is turned off when
@@ -6909,6 +6965,7 @@ static int handling_window_update = 0;
suspended. */
static Boolean app_is_suspended = false;
static long app_sleep_time = WNE_SLEEP_AT_RESUME;
+#endif
#define EXTRA_STACK_ALLOC (256 * 1024)
@@ -7235,11 +7292,13 @@ is_emacs_window (WindowPtr win)
static void
do_app_resume ()
{
+ /* Window-activate events will do the job. */
+#if 0
WindowPtr wp;
struct frame *f;
- wp = mac_front_window ();
- if (is_emacs_window (wp))
+ wp = front_emacs_window ();
+ if (wp)
{
f = mac_window_to_frame (wp);
@@ -7252,16 +7311,19 @@ do_app_resume ()
app_is_suspended = false;
app_sleep_time = WNE_SLEEP_AT_RESUME;
+#endif
}
static void
do_app_suspend ()
{
+ /* Window-deactivate events will do the job. */
+#if 0
WindowPtr wp;
struct frame *f;
- wp = mac_front_window ();
- if (is_emacs_window (wp))
+ wp = front_emacs_window ();
+ if (wp)
{
f = mac_window_to_frame (wp);
@@ -7274,6 +7336,7 @@ do_app_suspend ()
app_is_suspended = true;
app_sleep_time = WNE_SLEEP_AT_SUSPEND;
+#endif
}
@@ -7282,10 +7345,10 @@ do_mouse_moved (mouse_pos, f)
Point mouse_pos;
FRAME_PTR *f;
{
- WindowPtr wp = mac_front_window ();
+ WindowPtr wp = front_emacs_window ();
struct x_display_info *dpyinfo;
- if (is_emacs_window (wp))
+ if (wp)
{
*f = mac_window_to_frame (wp);
dpyinfo = FRAME_MAC_DISPLAY_INFO (*f);
@@ -7347,7 +7410,7 @@ do_menu_choice (SInt32 menu_choice)
default:
{
- struct frame *f = mac_window_to_frame (mac_front_window ());
+ struct frame *f = mac_window_to_frame (front_emacs_window ());
MenuHandle menu = GetMenuHandle (menu_id);
if (menu)
{
@@ -7400,41 +7463,43 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
GrafPtr save_port;
Rect zoom_rect, port_rect;
Point top_left;
- int w_title_height, columns, rows, width, height, dummy, x, y;
+ int w_title_height, columns, rows;
struct frame *f = mac_window_to_frame (w);
- GetPort (&save_port);
-
- SetPortWindowPort (w);
-
- /* Clear window to avoid flicker. */
#if TARGET_API_MAC_CARBON
{
- Rect r;
- BitMap bm;
+ Point standard_size;
- GetWindowPortBounds (w, &r);
- EraseRect (&r);
+ standard_size.h = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, DEFAULT_NUM_COLS);
+ standard_size.v = FRAME_MAC_DISPLAY_INFO (f)->height;
- if (zoom_in_or_out == inZoomOut)
+ if (IsWindowInStandardState (w, &standard_size, &zoom_rect))
+ zoom_in_or_out = inZoomIn;
+ else
{
- /* calculate height of window's title bar (hard card it for now). */
- w_title_height = 20 + GetMBarHeight ();
-
- /* get maximum height of window into zoom_rect.bottom -
- zoom_rect.top */
- GetQDGlobalsScreenBits (&bm);
- zoom_rect = bm.bounds;
- zoom_rect.top += w_title_height;
- InsetRect (&zoom_rect, 8, 4); /* not too tight */
-
- zoom_rect.right = zoom_rect.left
- + FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, DEFAULT_NUM_COLS);
-
- SetWindowStandardState (w, &zoom_rect);
+ /* Adjust the standard size according to character boundaries. */
+
+ columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, zoom_rect.right - zoom_rect.left);
+ rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, zoom_rect.bottom - zoom_rect.top);
+ standard_size.h = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, columns);
+ standard_size.v = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows);
+ GetWindowBounds (w, kWindowContentRgn, &port_rect);
+ if (IsWindowInStandardState (w, &standard_size, &zoom_rect)
+ && port_rect.left == zoom_rect.left
+ && port_rect.top == zoom_rect.top)
+ zoom_in_or_out = inZoomIn;
+ else
+ zoom_in_or_out = inZoomOut;
}
+
+ ZoomWindowIdeal (w, zoom_in_or_out, &standard_size);
}
#else /* not TARGET_API_MAC_CARBON */
+ GetPort (&save_port);
+
+ SetPortWindowPort (w);
+
+ /* Clear window to avoid flicker. */
EraseRect (&(w->portRect));
if (zoom_in_or_out == inZoomOut)
{
@@ -7453,12 +7518,19 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
zoom_rect.right = zoom_rect.left
+ FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, DEFAULT_NUM_COLS);
+ /* Adjust the standard size according to character boundaries. */
+ rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, zoom_rect.bottom - zoom_rect.top);
+ zoom_rect.bottom =
+ zoom_rect.top + FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows);
+
(**((WStateDataHandle) ((WindowPeek) w)->dataHandle)).stdState
= zoom_rect;
}
-#endif /* not TARGET_API_MAC_CARBON */
- ZoomWindow (w, zoom_in_or_out, w == mac_front_window ());
+ ZoomWindow (w, zoom_in_or_out, w == front_emacs_window ());
+
+ SetPort (save_port);
+#endif /* not TARGET_API_MAC_CARBON */
/* retrieve window size and update application values */
#if TARGET_API_MAC_CARBON
@@ -7469,8 +7541,7 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, port_rect.bottom - port_rect.top);
columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, port_rect.right - port_rect.left);
x_set_window_size (f, 0, columns, rows);
-
- SetPort (save_port);
+ x_real_positions (f, &f->left_pos, &f->top_pos);
}
/* Initialize Drag And Drop to allow files to be dropped onto emacs frames */
@@ -8020,19 +8091,15 @@ XTread_socket (sd, expected, hold_quit)
if (NILP (Fboundp (Qmac_ready_for_drag_n_drop)))
event_mask -= highLevelEventMask;
- while (WaitNextEvent (event_mask, &er,
- (expected ? app_sleep_time : 0L), NULL))
-#else
- while (!ReceiveNextEvent (0, NULL,
- (expected ? TicksToEventTime (app_sleep_time) : 0),
+ while (WaitNextEvent (event_mask, &er, 0L, NULL))
+#else /* USE_CARBON_EVENTS */
+ while (!ReceiveNextEvent (0, NULL, kEventDurationNoWait,
kEventRemoveFromQueue, &eventRef))
-#endif /* !USE_CARBON_EVENTS */
+#endif /* USE_CARBON_EVENTS */
{
int do_help = 0;
struct frame *f;
- expected = 0;
-
/* It is necessary to set this (additional) argument slot of an
event to nil because keyboard.c protects incompletely
processed event from being garbage collected by placing them
@@ -8055,13 +8122,7 @@ XTread_socket (sd, expected, hold_quit)
NULL, &window_ptr);
f = mac_window_to_frame (window_ptr);
if (f && !f->async_iconified)
- {
- int x, y;
-
- x_real_positions (f, &x, &y);
- f->left_pos = x;
- f->top_pos = y;
- }
+ x_real_positions (f, &f->left_pos, &f->top_pos);
SendEventToEventTarget (eventRef, toolbox_dispatcher);
}
break;
@@ -8070,7 +8131,7 @@ XTread_socket (sd, expected, hold_quit)
{
SInt32 delta;
Point point;
- WindowPtr window_ptr = mac_front_window ();
+ WindowPtr window_ptr = front_emacs_window ();
if (!IsValidWindowPtr (window_ptr))
{
@@ -8132,33 +8193,28 @@ XTread_socket (sd, expected, hold_quit)
}
else
{
- window_ptr = FrontWindow ();
+ part_code = FindWindow (er.where, &window_ptr);
if (tip_window && window_ptr == tip_window)
{
HideWindow (tip_window);
- window_ptr = FrontWindow ();
+ part_code = FindWindow (er.where, &window_ptr);
}
-
- if (!is_emacs_window (window_ptr))
- break;
-
- part_code = FindWindow (er.where, &window_ptr);
}
+ if (er.what != mouseDown && part_code != inContent)
+ break;
+
switch (part_code)
{
case inMenuBar:
- if (er.what == mouseDown)
- {
- f = mac_window_to_frame (mac_front_window ());
- saved_menu_event_location = er.where;
- inev.kind = MENU_BAR_ACTIVATE_EVENT;
- XSETFRAME (inev.frame_or_window, f);
- }
+ f = mac_window_to_frame (front_emacs_window ());
+ saved_menu_event_location = er.where;
+ inev.kind = MENU_BAR_ACTIVATE_EVENT;
+ XSETFRAME (inev.frame_or_window, f);
break;
case inContent:
- if (window_ptr != mac_front_window ())
+ if (window_ptr != front_emacs_window ())
SelectWindow (window_ptr);
else
{
@@ -8255,7 +8311,7 @@ XTread_socket (sd, expected, hold_quit)
}
else
{
- if (dpyinfo->grabbed & (1 << inev.code) == 0)
+ if ((dpyinfo->grabbed & (1 << inev.code)) == 0)
/* If a button is released though it was not
previously pressed, that would be because
of multi-button emulation. */
@@ -8278,27 +8334,16 @@ XTread_socket (sd, expected, hold_quit)
case inDrag:
#if TARGET_API_MAC_CARBON
- if (er.what == mouseDown)
- {
- BitMap bm;
-
- GetQDGlobalsScreenBits (&bm);
- DragWindow (window_ptr, er.where, &bm.bounds);
- }
+ DragWindow (window_ptr, er.where, NULL);
#else /* not TARGET_API_MAC_CARBON */
DragWindow (window_ptr, er.where, &qd.screenBits.bounds);
#endif /* not TARGET_API_MAC_CARBON */
/* Update the frame parameters. */
{
struct frame *f = mac_window_to_frame (window_ptr);
+
if (f && !f->async_iconified)
- {
- int x, y;
-
- x_real_positions (f, &x, &y);
- f->left_pos = x;
- f->top_pos = y;
- }
+ x_real_positions (f, &f->left_pos, &f->top_pos);
}
break;
@@ -8313,11 +8358,8 @@ XTread_socket (sd, expected, hold_quit)
/* window resize handling added --ben */
case inGrow:
- if (er.what == mouseDown)
- {
- do_grow_window(window_ptr, &er);
- break;
- }
+ do_grow_window (window_ptr, &er);
+ break;
/* window zoom handling added --ben */
case inZoomIn:
@@ -8460,7 +8502,7 @@ XTread_socket (sd, expected, hold_quit)
#endif
#if TARGET_API_MAC_CARBON
- if (!IsValidWindowPtr (mac_front_window ()))
+ if (!IsValidWindowPtr (front_emacs_window ()))
{
SysBeep (1);
break;
@@ -8564,7 +8606,7 @@ XTread_socket (sd, expected, hold_quit)
inev.modifiers = mac_to_emacs_modifiers (er.modifiers);
#endif
XSETFRAME (inev.frame_or_window,
- mac_window_to_frame (mac_front_window ()));
+ mac_window_to_frame (front_emacs_window ()));
inev.timestamp = er.when * (1000 / 60); /* ticks to milliseconds */
break;
@@ -8581,16 +8623,16 @@ XTread_socket (sd, expected, hold_quit)
WindowPtr wp;
Lisp_Object frame;
- wp = mac_front_window ();
+ wp = front_emacs_window ();
if (!wp)
{
struct frame *f = XFRAME (XCAR (Vframe_list));
CollapseWindow (FRAME_MAC_WINDOW (f), false);
- wp = mac_front_window ();
+ wp = front_emacs_window ();
}
- if (wp && is_emacs_window (wp))
+ if (wp)
f = mac_window_to_frame (wp);
inev.kind = DRAG_N_DROP_EVENT;
@@ -9047,7 +9089,7 @@ mac_check_for_quit_char ()
e.arg = Qnil;
e.modifiers = NULL;
e.timestamp = EventTimeToTicks (GetEventTime (event)) * (1000/60);
- XSETFRAME (e.frame_or_window, mac_window_to_frame (mac_front_window ()));
+ XSETFRAME (e.frame_or_window, mac_window_to_frame (front_emacs_window ()));
/* Remove event from queue to prevent looping. */
RemoveEventFromQueue (GetMainEventQueue (), event);
ReleaseEvent (event);
diff --git a/src/window.c b/src/window.c
index c64e8557b56..22ca145b206 100644
--- a/src/window.c
+++ b/src/window.c
@@ -609,9 +609,6 @@ coordinates_in_window (w, x, y)
int grabbable_width = ux;
int lmargin_width, rmargin_width, text_left, text_right;
- if (*x < x0 || *x >= x1)
- return ON_NOTHING;
-
/* In what's below, we subtract 1 when computing right_x because we
want the rightmost pixel, which is given by left_pixel+width-1. */
if (w->pseudo_window_p)
@@ -661,6 +658,9 @@ coordinates_in_window (w, x, y)
return ON_VERTICAL_BORDER;
}
+ if (*x < x0 || *x >= x1)
+ return ON_NOTHING;
+
/* Convert X and Y to window relative coordinates.
Mode line starts at left edge of window. */
*x -= x0;
@@ -675,6 +675,9 @@ coordinates_in_window (w, x, y)
goto header_vertical_border_check;
}
+ if (*x < x0 || *x >= x1)
+ return ON_NOTHING;
+
/* Outside any interesting column? */
if (*x < left_x || *x > right_x)
return ON_SCROLL_BAR;
@@ -6036,9 +6039,9 @@ display marginal areas and the text area. */)
struct window *w = decode_window (window);
if (!NILP (left))
- CHECK_NUMBER (left);
+ CHECK_NATNUM (left);
if (!NILP (right))
- CHECK_NUMBER (right);
+ CHECK_NATNUM (right);
if (!EQ (w->left_fringe_width, left)
|| !EQ (w->right_fringe_width, right)
@@ -6098,7 +6101,7 @@ If TYPE is t, use the frame's scroll-bar type. */)
struct window *w = decode_window (window);
if (!NILP (width))
- CHECK_NUMBER (width);
+ CHECK_NATNUM (width);
if (XINT (width) == 0)
vertical_type = Qnil;
diff --git a/src/xdisp.c b/src/xdisp.c
index 3d52e60c12f..0e25b0a3de3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -215,6 +215,8 @@ extern int pending_menu_activation;
extern int interrupt_input;
extern int command_loop_level;
+extern Lisp_Object do_mouse_tracking;
+
extern int minibuffer_auto_raise;
extern Lisp_Object Vminibuffer_list;
@@ -20762,6 +20764,10 @@ define_frame_cursor1 (f, cursor, pointer)
Cursor cursor;
Lisp_Object pointer;
{
+ /* Do not change cursor shape while dragging mouse. */
+ if (!NILP (do_mouse_tracking))
+ return;
+
if (!NILP (pointer))
{
if (EQ (pointer, Qarrow))
@@ -21625,6 +21631,9 @@ x_draw_vertical_border (w)
do it for frames with vertical scroll bars because either the
right scroll bar of a window, or the left scroll bar of its
neighbor will suffice as a border. */
+ if (FRAME_HAS_VERTICAL_SCROLL_BARS (XFRAME (w->frame)))
+ return;
+
if (!WINDOW_RIGHTMOST_P (w)
&& !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
{
diff --git a/src/xterm.c b/src/xterm.c
index 17efe655410..69e04de2eb8 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -3380,12 +3380,14 @@ x_find_modifier_meanings (dpyinfo)
Alt keysyms are on. */
{
int row, col; /* The row and column in the modifier table. */
+ int found_alt_or_meta;
for (row = 3; row < 8; row++)
+ {
+ found_alt_or_meta = 0;
for (col = 0; col < mods->max_keypermod; col++)
{
- KeyCode code
- = mods->modifiermap[(row * mods->max_keypermod) + col];
+ KeyCode code = mods->modifiermap[(row * mods->max_keypermod) + col];
/* Zeroes are used for filler. Skip them. */
if (code == 0)
@@ -3403,33 +3405,44 @@ x_find_modifier_meanings (dpyinfo)
{
case XK_Meta_L:
case XK_Meta_R:
+ found_alt_or_meta = 1;
dpyinfo->meta_mod_mask |= (1 << row);
break;
case XK_Alt_L:
case XK_Alt_R:
+ found_alt_or_meta = 1;
dpyinfo->alt_mod_mask |= (1 << row);
break;
case XK_Hyper_L:
case XK_Hyper_R:
- dpyinfo->hyper_mod_mask |= (1 << row);
+ if (!found_alt_or_meta)
+ dpyinfo->hyper_mod_mask |= (1 << row);
+ code_col = syms_per_code;
+ col = mods->max_keypermod;
break;
case XK_Super_L:
case XK_Super_R:
- dpyinfo->super_mod_mask |= (1 << row);
+ if (!found_alt_or_meta)
+ dpyinfo->super_mod_mask |= (1 << row);
+ code_col = syms_per_code;
+ col = mods->max_keypermod;
break;
case XK_Shift_Lock:
/* Ignore this if it's not on the lock modifier. */
- if ((1 << row) == LockMask)
+ if (!found_alt_or_meta && ((1 << row) == LockMask))
dpyinfo->shift_lock_mask = LockMask;
+ code_col = syms_per_code;
+ col = mods->max_keypermod;
break;
}
}
}
}
+ }
}
/* If we couldn't find any meta keys, accept any alt keys as meta keys. */
@@ -5050,9 +5063,15 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
/* Compute the left edge of the scroll bar. */
#ifdef USE_TOOLKIT_SCROLL_BARS
if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
- sb_left = left + width - sb_width - (width - sb_width) / 2;
+ sb_left = (left +
+ (WINDOW_RIGHTMOST_P (w)
+ ? width - sb_width - (width - sb_width) / 2
+ : 0));
else
- sb_left = left + (width - sb_width) / 2;
+ sb_left = (left +
+ (WINDOW_LEFTMOST_P (w)
+ ? (width - sb_width) / 2
+ : width - sb_width));
#else
if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
sb_left = left + width - sb_width;
@@ -5105,19 +5124,20 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
width);
#else /* not USE_GTK */
- /* Since toolkit scroll bars are smaller than the space reserved
- for them on the frame, we have to clear "under" them. */
- if (width > 0 && height > 0)
- x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- left, top, width, height, False);
/* Move/size the scroll bar widget. */
if (mask)
+ {
+ /* Since toolkit scroll bars are smaller than the space reserved
+ for them on the frame, we have to clear "under" them. */
+ if (width > 0 && height > 0)
+ x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+ left, top, width, height, False);
XtConfigureWidget (SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar),
sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
top,
sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
max (height, 1), 0);
-
+ }
#endif /* not USE_GTK */
#else /* not USE_TOOLKIT_SCROLL_BARS */