diff options
| author | Kenichi Handa | 2010-05-25 09:35:50 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2010-05-25 09:35:50 +0900 |
| commit | 8a2b8c4f7c2a18254fc0b34f236d7487fc7917d4 (patch) | |
| tree | 48e379874bd0bf796a12a5f43b369e0d6691a125 | |
| parent | 10f72a3793087770f131a0dc729f29ff50f08ad9 (diff) | |
| parent | 7eca871a82d582b986c638343f74d16b819a0f14 (diff) | |
| download | emacs-8a2b8c4f7c2a18254fc0b34f236d7487fc7917d4.tar.gz emacs-8a2b8c4f7c2a18254fc0b34f236d7487fc7917d4.zip | |
merge trunk
79 files changed, 2104 insertions, 1277 deletions
| @@ -1,3 +1,40 @@ | |||
| 1 | 2010-05-24 Romain Francoise <romain@orebokech.com> | ||
| 2 | |||
| 3 | * make-dist: Look for version in src/emacs.c. | ||
| 4 | Use lisp/subr.el rather than lisp/version.el for location check. | ||
| 5 | |||
| 6 | 2010-05-21 Glenn Morris <rgm@gnu.org> | ||
| 7 | |||
| 8 | * configure.in (MKDEPDIR): Parallel build tweak. | ||
| 9 | |||
| 10 | * configure.in (ns_frag): New output file. | ||
| 11 | |||
| 12 | * configure.in (OLDXMENU): Set to "nothing" if !HAVE_X11 || USE_GTK. | ||
| 13 | (OLDXMENU_TARGET): Set to empty if USE_GTK. | ||
| 14 | |||
| 15 | * configure.in (cannot_dump): New output variable. | ||
| 16 | |||
| 17 | 2010-05-20 enami tsugutomo <tsugutomo.enami@jp.sony.com> | ||
| 18 | |||
| 19 | * configure.in: On NetBSD, if terminfo is found, use it in | ||
| 20 | preference to termcap. (Bug#6190) | ||
| 21 | |||
| 22 | 2010-05-20 Glenn Morris <rgm@gnu.org> | ||
| 23 | |||
| 24 | * make-dist (src): Include *.mk. | ||
| 25 | * config.bat: Concatenate deps.mk onto the end of src/Makefile. | ||
| 26 | * configure.in (DEPFLAGS, MKDEPDIR): New output variables. | ||
| 27 | (deps_frag): New output file. | ||
| 28 | (AUTO_DEPEND): Remove this definition. | ||
| 29 | |||
| 30 | * configure.in (--with-gtk, --with-gcc): Remove option stubs. | ||
| 31 | |||
| 32 | 2010-05-19 Glenn Morris <rgm@gnu.org> | ||
| 33 | |||
| 34 | * configure.in (LINKER, YMF_PASS_LDFLAGS): New output variables. | ||
| 35 | (ORDINARY_LINK): New AC_DEFINE. | ||
| 36 | (LIB_GCC): No need to set if ORDINARY_LINK. | ||
| 37 | |||
| 1 | 2010-05-18 Glenn Morris <rgm@gnu.org> | 38 | 2010-05-18 Glenn Morris <rgm@gnu.org> |
| 2 | 39 | ||
| 3 | * configure.in (POST_ALLOC_OBJ) [cygwin]: Omit vm-limit.o. | 40 | * configure.in (POST_ALLOC_OBJ) [cygwin]: Omit vm-limit.o. |
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index 5936eead85a..fc74c4dcedf 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker | |||
| @@ -553,9 +553,13 @@ All discarded messages are stored in /var/lib/mailman/spam. | |||
| 553 | If a non-spam message accidentally gets discarded, just do: | 553 | If a non-spam message accidentally gets discarded, just do: |
| 554 | 554 | ||
| 555 | cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive | 555 | cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive |
| 556 | chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/* | ||
| 556 | ... check it works ... | 557 | ... check it works ... |
| 557 | mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/ | 558 | mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/ |
| 558 | 559 | ||
| 560 | Also check that the sender was not added to the auto-discard/reject list | ||
| 561 | in the debbugs-submit Mailman interface. | ||
| 562 | |||
| 559 | ** Administrivia | 563 | ** Administrivia |
| 560 | 564 | ||
| 561 | The debbugs-submit list should have the administrivia option off, | 565 | The debbugs-submit list should have the administrivia option off, |
diff --git a/config.bat b/config.bat index 20b8b285e59..ba31161962e 100644 --- a/config.bat +++ b/config.bat | |||
| @@ -190,10 +190,11 @@ rem On my system dir.h gets in the way. It's a VMS file so who cares. | |||
| 190 | if exist dir.h ren dir.h vmsdir.h | 190 | if exist dir.h ren dir.h vmsdir.h |
| 191 | 191 | ||
| 192 | rem Create "makefile" from "makefile.in". | 192 | rem Create "makefile" from "makefile.in". |
| 193 | rm -f Makefile junk.c | 193 | rm -f Makefile junk.c junk2.c |
| 194 | sed -e "1,/== start of cpp stuff ==/s@^##*[ ].*$@@" <Makefile.in >junk.c | 194 | sed -e "1,/== start of cpp stuff ==/s@^##*[ ].*$@@" <Makefile.in >junk.c |
| 195 | gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile | 195 | copy junk.c + deps.mk junk2.c |
| 196 | rm -f junk.c | 196 | gcc -E -traditional junk2.c | sed -f ../msdos/sed1v2.inp >Makefile |
| 197 | rm -f junk.c junk2.c | ||
| 197 | 198 | ||
| 198 | if "%X11%" == "" goto src5 | 199 | if "%X11%" == "" goto src5 |
| 199 | mv Makefile makefile.tmp | 200 | mv Makefile makefile.tmp |
| @@ -701,6 +701,7 @@ RANLIB | |||
| 701 | INSTALL_INFO | 701 | INSTALL_INFO |
| 702 | GZIP_PROG | 702 | GZIP_PROG |
| 703 | MAKEINFO | 703 | MAKEINFO |
| 704 | cannot_dump | ||
| 704 | LD_SWITCH_SYSTEM | 705 | LD_SWITCH_SYSTEM |
| 705 | C_SWITCH_MACHINE | 706 | C_SWITCH_MACHINE |
| 706 | C_SWITCH_SYSTEM | 707 | C_SWITCH_SYSTEM |
| @@ -714,6 +715,8 @@ ALSA_CFLAGS | |||
| 714 | ALSA_LIBS | 715 | ALSA_LIBS |
| 715 | CFLAGS_SOUND | 716 | CFLAGS_SOUND |
| 716 | SET_MAKE | 717 | SET_MAKE |
| 718 | MKDEPDIR | ||
| 719 | DEPFLAGS | ||
| 717 | XMKMF | 720 | XMKMF |
| 718 | LD_SWITCH_X_SITE_AUX | 721 | LD_SWITCH_X_SITE_AUX |
| 719 | LD_SWITCH_X_SITE_AUX_RPATH | 722 | LD_SWITCH_X_SITE_AUX_RPATH |
| @@ -818,12 +821,15 @@ PRE_ALLOC_OBJ | |||
| 818 | POST_ALLOC_OBJ | 821 | POST_ALLOC_OBJ |
| 819 | LD_SWITCH_SYSTEM_TEMACS | 822 | LD_SWITCH_SYSTEM_TEMACS |
| 820 | LD_SWITCH_SYSTEM_EXTRA | 823 | LD_SWITCH_SYSTEM_EXTRA |
| 824 | YMF_PASS_LDFLAGS | ||
| 825 | LINKER | ||
| 821 | LIB_GCC | 826 | LIB_GCC |
| 822 | MOUSE_SUPPORT | 827 | MOUSE_SUPPORT |
| 823 | TOOLTIP_SUPPORT | 828 | TOOLTIP_SUPPORT |
| 824 | WINDOW_SUPPORT | 829 | WINDOW_SUPPORT |
| 825 | LTLIBOBJS' | 830 | LTLIBOBJS' |
| 826 | ac_subst_files='' | 831 | ac_subst_files='deps_frag |
| 832 | ns_frag' | ||
| 827 | ac_user_opts=' | 833 | ac_user_opts=' |
| 828 | enable_option_checking | 834 | enable_option_checking |
| 829 | with_pop | 835 | with_pop |
| @@ -854,8 +860,6 @@ with_dbus | |||
| 854 | with_gconf | 860 | with_gconf |
| 855 | with_selinux | 861 | with_selinux |
| 856 | with_makeinfo | 862 | with_makeinfo |
| 857 | with_gtk | ||
| 858 | with_gcc | ||
| 859 | with_pkg_config_prog | 863 | with_pkg_config_prog |
| 860 | with_crt_dir | 864 | with_crt_dir |
| 861 | with_gnustep_conf | 865 | with_gnustep_conf |
| @@ -1569,7 +1573,6 @@ Optional Packages: | |||
| 1569 | --without-gconf don't compile with GConf support | 1573 | --without-gconf don't compile with GConf support |
| 1570 | --without-selinux don't compile with SELinux support | 1574 | --without-selinux don't compile with SELinux support |
| 1571 | --without-makeinfo don't require makeinfo for building manuals | 1575 | --without-makeinfo don't require makeinfo for building manuals |
| 1572 | |||
| 1573 | --with-pkg-config-prog=PATH | 1576 | --with-pkg-config-prog=PATH |
| 1574 | path to pkg-config for finding GTK and librsvg | 1577 | path to pkg-config for finding GTK and librsvg |
| 1575 | --with-crt-dir=DIR directory containing crtn.o etc. The default is | 1578 | --with-crt-dir=DIR directory containing crtn.o etc. The default is |
| @@ -2382,28 +2385,6 @@ fi | |||
| 2382 | 2385 | ||
| 2383 | 2386 | ||
| 2384 | 2387 | ||
| 2385 | # Check whether --with-gtk was given. | ||
| 2386 | if test "${with_gtk+set}" = set; then | ||
| 2387 | withval=$with_gtk; { { $as_echo "$as_me:$LINENO: error: --with-gtk has been removed. Use --with-x-toolkit to | ||
| 2388 | specify a toolkit." >&5 | ||
| 2389 | $as_echo "$as_me: error: --with-gtk has been removed. Use --with-x-toolkit to | ||
| 2390 | specify a toolkit." >&2;} | ||
| 2391 | { (exit 1); exit 1; }; } | ||
| 2392 | fi | ||
| 2393 | |||
| 2394 | |||
| 2395 | |||
| 2396 | # Check whether --with-gcc was given. | ||
| 2397 | if test "${with_gcc+set}" = set; then | ||
| 2398 | withval=$with_gcc; { { $as_echo "$as_me:$LINENO: error: --with-gcc has been removed. Set the \`CC' environment | ||
| 2399 | variable to specify a compiler." >&5 | ||
| 2400 | $as_echo "$as_me: error: --with-gcc has been removed. Set the \`CC' environment | ||
| 2401 | variable to specify a compiler." >&2;} | ||
| 2402 | { (exit 1); exit 1; }; } | ||
| 2403 | fi | ||
| 2404 | |||
| 2405 | |||
| 2406 | |||
| 2407 | # Check whether --with-pkg-config-prog was given. | 2388 | # Check whether --with-pkg-config-prog was given. |
| 2408 | if test "${with_pkg_config_prog+set}" = set; then | 2389 | if test "${with_pkg_config_prog+set}" = set; then |
| 2409 | withval=$with_pkg_config_prog; | 2390 | withval=$with_pkg_config_prog; |
| @@ -5851,6 +5832,12 @@ configure___ LIBX=-lX11 | |||
| 5851 | 5832 | ||
| 5852 | configure___ unexec=UNEXEC | 5833 | configure___ unexec=UNEXEC |
| 5853 | 5834 | ||
| 5835 | #ifdef CANNOT_DUMP | ||
| 5836 | configure___ cannot_dump=yes | ||
| 5837 | #else | ||
| 5838 | configure___ cannot_dump=no | ||
| 5839 | #endif | ||
| 5840 | |||
| 5854 | #ifdef SYSTEM_MALLOC | 5841 | #ifdef SYSTEM_MALLOC |
| 5855 | configure___ system_malloc=yes | 5842 | configure___ system_malloc=yes |
| 5856 | #else | 5843 | #else |
| @@ -5912,6 +5899,9 @@ fi | |||
| 5912 | rm ${tempcname} | 5899 | rm ${tempcname} |
| 5913 | 5900 | ||
| 5914 | 5901 | ||
| 5902 | |||
| 5903 | |||
| 5904 | |||
| 5915 | LD_SWITCH_SYSTEM= | 5905 | LD_SWITCH_SYSTEM= |
| 5916 | case "$opsys" in | 5906 | case "$opsys" in |
| 5917 | freebsd) | 5907 | freebsd) |
| @@ -9501,6 +9491,9 @@ $as_echo "no" >&6; } | |||
| 9501 | fi | 9491 | fi |
| 9502 | 9492 | ||
| 9503 | 9493 | ||
| 9494 | DEPFLAGS= | ||
| 9495 | MKDEPDIR=":" | ||
| 9496 | deps_frag=deps.mk | ||
| 9504 | if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then | 9497 | if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then |
| 9505 | { $as_echo "$as_me:$LINENO: checking whether we are using GNU Make" >&5 | 9498 | { $as_echo "$as_me:$LINENO: checking whether we are using GNU Make" >&5 |
| 9506 | $as_echo_n "checking whether we are using GNU Make... " >&6; } | 9499 | $as_echo_n "checking whether we are using GNU Make... " >&6; } |
| @@ -9567,13 +9560,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | |||
| 9567 | $as_echo "$ac_enable_autodepend" >&6; } | 9560 | $as_echo "$ac_enable_autodepend" >&6; } |
| 9568 | fi | 9561 | fi |
| 9569 | if test $ac_enable_autodepend = yes; then | 9562 | if test $ac_enable_autodepend = yes; then |
| 9570 | 9563 | DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d' | |
| 9571 | cat >>confdefs.h <<\_ACEOF | 9564 | ## In parallel builds, another make might create depdir between |
| 9572 | #define AUTO_DEPEND 1 | 9565 | ## the first test and mkdir, so stick another test on the end. |
| 9573 | _ACEOF | 9566 | ## Or use mkinstalldirs? mkdir -p is not portable. |
| 9574 | 9567 | MKDEPDIR='test -d ${DEPDIR} || mkdir ${DEPDIR} || test -d ${DEPDIR}' | |
| 9568 | deps_frag=autodeps.mk | ||
| 9575 | fi | 9569 | fi |
| 9576 | fi | 9570 | fi |
| 9571 | deps_frag=$srcdir/src/$deps_frag | ||
| 9572 | |||
| 9573 | |||
| 9574 | |||
| 9575 | |||
| 9577 | 9576 | ||
| 9578 | { $as_echo "$as_me:$LINENO: checking for long file names" >&5 | 9577 | { $as_echo "$as_me:$LINENO: checking for long file names" >&5 |
| 9579 | $as_echo_n "checking for long file names... " >&6; } | 9578 | $as_echo_n "checking for long file names... " >&6; } |
| @@ -9960,6 +9959,7 @@ if test "${with_ns}" != no; then | |||
| 9960 | GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)" | 9959 | GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)" |
| 9961 | GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)" | 9960 | GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)" |
| 9962 | ## Pull in stuff from GNUstep-make. | 9961 | ## Pull in stuff from GNUstep-make. |
| 9962 | ## FIXME? Cleaner to use AC_SUBST_FILE for this? | ||
| 9963 | NS_IMPL_GNUSTEP_INC="FOUNDATION_LIB=gnu | 9963 | NS_IMPL_GNUSTEP_INC="FOUNDATION_LIB=gnu |
| 9964 | GUI_LIB=gnu | 9964 | GUI_LIB=gnu |
| 9965 | include $GNUSTEP_MAKEFILES/Additional/base.make | 9965 | include $GNUSTEP_MAKEFILES/Additional/base.make |
| @@ -10164,6 +10164,7 @@ fi | |||
| 10164 | 10164 | ||
| 10165 | 10165 | ||
| 10166 | 10166 | ||
| 10167 | ns_frag=/dev/null | ||
| 10167 | NS_OBJ= | 10168 | NS_OBJ= |
| 10168 | NS_SUPPORT= | 10169 | NS_SUPPORT= |
| 10169 | if test "${HAVE_NS}" = yes; then | 10170 | if test "${HAVE_NS}" = yes; then |
| @@ -10175,6 +10176,7 @@ if test "${HAVE_NS}" = yes; then | |||
| 10175 | if test "${EN_NS_SELF_CONTAINED}" = yes; then | 10176 | if test "${EN_NS_SELF_CONTAINED}" = yes; then |
| 10176 | prefix=${ns_appresdir} | 10177 | prefix=${ns_appresdir} |
| 10177 | fi | 10178 | fi |
| 10179 | ns_frag=$srcdir/src/ns.mk | ||
| 10178 | NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o" | 10180 | NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o" |
| 10179 | NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc" | 10181 | NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc" |
| 10180 | fi | 10182 | fi |
| @@ -10184,6 +10186,7 @@ CPPFLAGS="$tmp_CPPFLAGS" | |||
| 10184 | 10186 | ||
| 10185 | 10187 | ||
| 10186 | 10188 | ||
| 10189 | |||
| 10187 | case "${window_system}" in | 10190 | case "${window_system}" in |
| 10188 | x11 ) | 10191 | x11 ) |
| 10189 | HAVE_X_WINDOWS=yes | 10192 | HAVE_X_WINDOWS=yes |
| @@ -21622,7 +21625,7 @@ HAVE_LIBNCURSES=yes | |||
| 21622 | 21625 | ||
| 21623 | ## Use terminfo instead of termcap? | 21626 | ## Use terminfo instead of termcap? |
| 21624 | ## Note only system files NOT using terminfo are: | 21627 | ## Note only system files NOT using terminfo are: |
| 21625 | ## freebsd < 40000, ms-w32, msdos, netbsd, and | 21628 | ## freebsd < 40000, ms-w32, msdos, netbsd < 599002500, and |
| 21626 | ## darwin|gnu without ncurses. | 21629 | ## darwin|gnu without ncurses. |
| 21627 | TERMINFO=no | 21630 | TERMINFO=no |
| 21628 | LIBS_TERMCAP= | 21631 | LIBS_TERMCAP= |
| @@ -21715,13 +21718,22 @@ $as_echo "$emacs_cv_freebsd_terminfo" >&6; } | |||
| 21715 | fi | 21718 | fi |
| 21716 | ;; | 21719 | ;; |
| 21717 | 21720 | ||
| 21721 | netbsd) | ||
| 21722 | if test $ac_cv_search_tputs = -lterminfo; then | ||
| 21723 | TERMINFO=yes | ||
| 21724 | LIBS_TERMCAP="-lterminfo" | ||
| 21725 | else | ||
| 21726 | LIBS_TERMCAP="-ltermcap" | ||
| 21727 | fi | ||
| 21728 | ;; | ||
| 21729 | |||
| 21718 | esac | 21730 | esac |
| 21719 | 21731 | ||
| 21720 | case "$opsys" in | 21732 | case "$opsys" in |
| 21721 | ## hpux: Make sure we get select from libc rather than from libcurses | 21733 | ## hpux: Make sure we get select from libc rather than from libcurses |
| 21722 | ## because libcurses on HPUX 10.10 has a broken version of select. | 21734 | ## because libcurses on HPUX 10.10 has a broken version of select. |
| 21723 | ## We used to use -lc -lcurses, but this may be cleaner. | 21735 | ## We used to use -lc -lcurses, but this may be cleaner. |
| 21724 | hpux*|netbsd) LIBS_TERMCAP="-ltermcap" ;; | 21736 | hpux*) LIBS_TERMCAP="-ltermcap" ;; |
| 21725 | 21737 | ||
| 21726 | openbsd) LIBS_TERMCAP="-lncurses" ;; | 21738 | openbsd) LIBS_TERMCAP="-lncurses" ;; |
| 21727 | 21739 | ||
| @@ -26491,7 +26503,6 @@ else | |||
| 26491 | fi | 26503 | fi |
| 26492 | 26504 | ||
| 26493 | 26505 | ||
| 26494 | |||
| 26495 | ## The X Menu stuff is present in the X10 distribution, but missing | 26506 | ## The X Menu stuff is present in the X10 distribution, but missing |
| 26496 | ## from X11. If we have X10, just use the installed library; | 26507 | ## from X11. If we have X10, just use the installed library; |
| 26497 | ## otherwise, use our own copy. | 26508 | ## otherwise, use our own copy. |
| @@ -26511,7 +26522,9 @@ _ACEOF | |||
| 26511 | LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" | 26522 | LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" |
| 26512 | OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}" | 26523 | OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}" |
| 26513 | else | 26524 | else |
| 26514 | OLDXMENU= | 26525 | ## For a syntactically valid Makefile; not actually used for anything. |
| 26526 | ## See comments in src/Makefile.in. | ||
| 26527 | OLDXMENU=nothing | ||
| 26515 | ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?). | 26528 | ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?). |
| 26516 | if test "${HAVE_X_WINDOWS}" = "yes"; then | 26529 | if test "${HAVE_X_WINDOWS}" = "yes"; then |
| 26517 | LIBXMENU="-lXMenu" | 26530 | LIBXMENU="-lXMenu" |
| @@ -26523,7 +26536,8 @@ else | |||
| 26523 | fi | 26536 | fi |
| 26524 | 26537 | ||
| 26525 | if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then | 26538 | if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then |
| 26526 | OLDXMENU= | 26539 | OLDXMENU_TARGET= |
| 26540 | OLDXMENU=nothing | ||
| 26527 | LIBXMENU= | 26541 | LIBXMENU= |
| 26528 | OLDXMENU_DEPS= | 26542 | OLDXMENU_DEPS= |
| 26529 | fi | 26543 | fi |
| @@ -26533,6 +26547,7 @@ fi | |||
| 26533 | 26547 | ||
| 26534 | 26548 | ||
| 26535 | 26549 | ||
| 26550 | |||
| 26536 | if test "${HAVE_MENUS}" = "yes" ; then | 26551 | if test "${HAVE_MENUS}" = "yes" ; then |
| 26537 | 26552 | ||
| 26538 | cat >>confdefs.h <<\_ACEOF | 26553 | cat >>confdefs.h <<\_ACEOF |
| @@ -26616,8 +26631,79 @@ fi | |||
| 26616 | 26631 | ||
| 26617 | 26632 | ||
| 26618 | 26633 | ||
| 26634 | LINKER= | ||
| 26635 | ORDINARY_LINK= | ||
| 26636 | case "$opsys" in | ||
| 26637 | ## gnu: GNU needs its own crt0. | ||
| 26638 | aix4-2|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;; | ||
| 26639 | |||
| 26640 | cygwin) LINKER="\$(CC)" ;; | ||
| 26641 | |||
| 26642 | ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the | ||
| 26643 | ## library search parth, i.e. it won't search /usr/lib for libc and | ||
| 26644 | ## friends. Using -nostartfiles instead avoids this problem, and | ||
| 26645 | ## will also work on earlier NetBSD releases. | ||
| 26646 | netbsd|openbsd) LINKER="\$(CC) -nostartfiles" ;; | ||
| 26647 | |||
| 26648 | ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says | ||
| 26649 | ## MkLinux/LinuxPPC needs this. | ||
| 26650 | ## ibms390x only supports opsys = gnu-linux so it can be added here. | ||
| 26651 | gnu-*) | ||
| 26652 | case "$machine" in | ||
| 26653 | macppc|ibms390x) LINKER="\$(CC) -nostdlib" ;; | ||
| 26654 | esac | ||
| 26655 | ;; | ||
| 26656 | esac | ||
| 26657 | |||
| 26658 | ## A macro which other sections of Makefile can redefine to munge the | ||
| 26659 | ## flags before they are passed to LD. This is helpful if you have | ||
| 26660 | ## redefined LD to something odd, like "gcc". | ||
| 26661 | ## (The YMF prefix is a holdover from the old name "ymakefile".) | ||
| 26662 | YMF_PASS_LDFLAGS=flags | ||
| 26663 | if test "x$ORDINARY_LINK" = "xyes"; then | ||
| 26664 | |||
| 26665 | LINKER="\$(CC)" | ||
| 26666 | |||
| 26667 | cat >>confdefs.h <<\_ACEOF | ||
| 26668 | #define ORDINARY_LINK 1 | ||
| 26669 | _ACEOF | ||
| 26670 | |||
| 26671 | |||
| 26672 | ## The system files defining neither ORDINARY_LINK nor LINKER are: | ||
| 26673 | ## (bsd-common), freebsd, gnu-* not on macppc|ibms390x, hpux*. | ||
| 26674 | elif test "x$GCC" = "xyes" && test "x$LINKER" = "x"; then | ||
| 26675 | |||
| 26676 | ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure | ||
| 26677 | ## places that are difficult to figure out at make time. Fortunately, | ||
| 26678 | ## these same versions allow you to pass arbitrary flags on to the | ||
| 26679 | ## linker, so there is no reason not to use it as a linker. | ||
| 26680 | ## | ||
| 26681 | ## Well, it is not quite perfect. The "-nostdlib" keeps GCC from | ||
| 26682 | ## searching for libraries in its internal directories, so we have to | ||
| 26683 | ## ask GCC explicitly where to find libgcc.a (LIB_GCC below). | ||
| 26684 | LINKER="\$(CC) -nostdlib" | ||
| 26685 | ## GCC passes any argument prefixed with -Xlinker directly to the linker. | ||
| 26686 | ## See prefix-args.c for an explanation of why we do not do this with the | ||
| 26687 | ## shell''s ``for'' construct. Note that sane people do not have '.' in | ||
| 26688 | ## their paths, so we must use ./prefix-args. | ||
| 26689 | ## TODO either make prefix-args check ORDINARY_LINK internally, | ||
| 26690 | ## or remove it altogether (bug#6184), removing the need for this macro. | ||
| 26691 | YMF_PASS_LDFLAGS='`./prefix-args -Xlinker flags`' | ||
| 26692 | fi | ||
| 26693 | |||
| 26694 | |||
| 26695 | test "x$LINKER" = "x" && LINKER=ld | ||
| 26696 | ## FIXME? What setting of YMF_PASS_LDFLAGS should this have? | ||
| 26697 | test "$NS_IMPL_GNUSTEP" = "yes" && LINKER="\$(CC) -rdynamic" | ||
| 26698 | |||
| 26699 | |||
| 26700 | |||
| 26701 | |||
| 26702 | ## FIXME? The logic here is not precisely the same as that above | ||
| 26703 | ## setting YMF_PASS_LDFLAGS. There is no check here for a pre-defined | ||
| 26704 | ## LINKER. Should we only be setting LIB_GCC if LD ~ -nostdlib? | ||
| 26619 | LIB_GCC= | 26705 | LIB_GCC= |
| 26620 | if test "x$GCC" = "xyes"; then | 26706 | if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then |
| 26621 | 26707 | ||
| 26622 | case "$opsys" in | 26708 | case "$opsys" in |
| 26623 | ## cygwin: don't link against static libgcc. | 26709 | ## cygwin: don't link against static libgcc. |
| @@ -27458,7 +27544,24 @@ $debug || | |||
| 27458 | # This happens for instance with `./config.status config.h'. | 27544 | # This happens for instance with `./config.status config.h'. |
| 27459 | if test -n "$CONFIG_FILES"; then | 27545 | if test -n "$CONFIG_FILES"; then |
| 27460 | 27546 | ||
| 27461 | 27547 | if $AWK 'BEGIN { getline <"/dev/null" }' </dev/null 2>/dev/null; then | |
| 27548 | ac_cs_awk_getline=: | ||
| 27549 | ac_cs_awk_pipe_init= | ||
| 27550 | ac_cs_awk_read_file=' | ||
| 27551 | while ((getline aline < (F[key])) > 0) | ||
| 27552 | print(aline) | ||
| 27553 | close(F[key])' | ||
| 27554 | ac_cs_awk_pipe_fini= | ||
| 27555 | else | ||
| 27556 | ac_cs_awk_getline=false | ||
| 27557 | ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" | ||
| 27558 | ac_cs_awk_read_file=' | ||
| 27559 | print "|#_!!_#|" | ||
| 27560 | print "cat " F[key] " &&" | ||
| 27561 | '$ac_cs_awk_pipe_init | ||
| 27562 | # The final `:' finishes the AND list. | ||
| 27563 | ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' | ||
| 27564 | fi | ||
| 27462 | ac_cr=' ' | 27565 | ac_cr=' ' |
| 27463 | ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` | 27566 | ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` |
| 27464 | if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then | 27567 | if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then |
| @@ -27470,6 +27573,19 @@ fi | |||
| 27470 | echo 'BEGIN {' >"$tmp/subs1.awk" && | 27573 | echo 'BEGIN {' >"$tmp/subs1.awk" && |
| 27471 | _ACEOF | 27574 | _ACEOF |
| 27472 | 27575 | ||
| 27576 | # Create commands to substitute file output variables. | ||
| 27577 | { | ||
| 27578 | echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && | ||
| 27579 | echo 'cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&' && | ||
| 27580 | echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && | ||
| 27581 | echo "_ACAWK" && | ||
| 27582 | echo "_ACEOF" | ||
| 27583 | } >conf$$files.sh && | ||
| 27584 | . ./conf$$files.sh || | ||
| 27585 | { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 | ||
| 27586 | $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} | ||
| 27587 | { (exit 1); exit 1; }; } | ||
| 27588 | rm -f conf$$files.sh | ||
| 27473 | 27589 | ||
| 27474 | { | 27590 | { |
| 27475 | echo "cat >conf$$subs.awk <<_ACEOF" && | 27591 | echo "cat >conf$$subs.awk <<_ACEOF" && |
| @@ -27551,7 +27667,7 @@ _ACAWK | |||
| 27551 | cat >>"\$tmp/subs1.awk" <<_ACAWK && | 27667 | cat >>"\$tmp/subs1.awk" <<_ACAWK && |
| 27552 | for (key in S) S_is_set[key] = 1 | 27668 | for (key in S) S_is_set[key] = 1 |
| 27553 | FS = "" | 27669 | FS = "" |
| 27554 | 27670 | \$ac_cs_awk_pipe_init | |
| 27555 | } | 27671 | } |
| 27556 | { | 27672 | { |
| 27557 | line = $ 0 | 27673 | line = $ 0 |
| @@ -27569,10 +27685,16 @@ cat >>"\$tmp/subs1.awk" <<_ACAWK && | |||
| 27569 | } else | 27685 | } else |
| 27570 | len += 1 + keylen | 27686 | len += 1 + keylen |
| 27571 | } | 27687 | } |
| 27572 | 27688 | if (nfields == 3 && !substed) { | |
| 27689 | key = field[2] | ||
| 27690 | if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { | ||
| 27691 | \$ac_cs_awk_read_file | ||
| 27692 | next | ||
| 27693 | } | ||
| 27694 | } | ||
| 27573 | print line | 27695 | print line |
| 27574 | } | 27696 | } |
| 27575 | 27697 | \$ac_cs_awk_pipe_fini | |
| 27576 | _ACAWK | 27698 | _ACAWK |
| 27577 | _ACEOF | 27699 | _ACEOF |
| 27578 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 | 27700 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
| @@ -27959,7 +28081,12 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t | |||
| 27959 | s&@INSTALL@&$ac_INSTALL&;t t | 28081 | s&@INSTALL@&$ac_INSTALL&;t t |
| 27960 | $ac_datarootdir_hack | 28082 | $ac_datarootdir_hack |
| 27961 | " | 28083 | " |
| 27962 | eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ | 28084 | eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | |
| 28085 | if $ac_cs_awk_getline; then | ||
| 28086 | $AWK -f "$tmp/subs.awk" | ||
| 28087 | else | ||
| 28088 | $AWK -f "$tmp/subs.awk" | $SHELL | ||
| 28089 | fi >$tmp/out \ | ||
| 27963 | || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 | 28090 | || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 |
| 27964 | $as_echo "$as_me: error: could not create $ac_file" >&2;} | 28091 | $as_echo "$as_me: error: could not create $ac_file" >&2;} |
| 27965 | { (exit 1); exit 1; }; } | 28092 | { (exit 1); exit 1; }; } |
diff --git a/configure.in b/configure.in index 57fb0548f53..36359e25072 100644 --- a/configure.in +++ b/configure.in | |||
| @@ -2,9 +2,11 @@ dnl Autoconf script for GNU Emacs | |||
| 2 | dnl To rebuild the `configure' script from this, execute the command | 2 | dnl To rebuild the `configure' script from this, execute the command |
| 3 | dnl autoconf | 3 | dnl autoconf |
| 4 | dnl in the directory containing this script. | 4 | dnl in the directory containing this script. |
| 5 | dnl If you changed any AC_DEFINES, also run autoheader. | ||
| 5 | dnl | 6 | dnl |
| 6 | dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, | 7 | dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004, |
| 7 | dnl 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. | 8 | dnl 2005, 2006, 2007, 2008, 2009, 2010 |
| 9 | dnl Free Software Foundation, Inc. | ||
| 8 | dnl | 10 | dnl |
| 9 | dnl This file is part of GNU Emacs. | 11 | dnl This file is part of GNU Emacs. |
| 10 | dnl | 12 | dnl |
| @@ -168,15 +170,6 @@ OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support]) | |||
| 168 | dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html | 170 | dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html |
| 169 | OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals]) | 171 | OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals]) |
| 170 | 172 | ||
| 171 | dnl Can remove these in Emacs 24. | ||
| 172 | AC_ARG_WITH([gtk],, | ||
| 173 | [AC_MSG_ERROR([--with-gtk has been removed. Use --with-x-toolkit to | ||
| 174 | specify a toolkit.])],,) | ||
| 175 | |||
| 176 | AC_ARG_WITH([gcc],, | ||
| 177 | [AC_MSG_ERROR([--with-gcc has been removed. Set the `CC' environment | ||
| 178 | variable to specify a compiler.])],,) | ||
| 179 | |||
| 180 | AC_ARG_WITH([pkg-config-prog],dnl | 173 | AC_ARG_WITH([pkg-config-prog],dnl |
| 181 | [AS_HELP_STRING([--with-pkg-config-prog=PATH], | 174 | [AS_HELP_STRING([--with-pkg-config-prog=PATH], |
| 182 | [path to pkg-config for finding GTK and librsvg])]) | 175 | [path to pkg-config for finding GTK and librsvg])]) |
| @@ -864,6 +857,12 @@ configure___ LIBX=-lX11 | |||
| 864 | 857 | ||
| 865 | configure___ unexec=UNEXEC | 858 | configure___ unexec=UNEXEC |
| 866 | 859 | ||
| 860 | #ifdef CANNOT_DUMP | ||
| 861 | configure___ cannot_dump=yes | ||
| 862 | #else | ||
| 863 | configure___ cannot_dump=no | ||
| 864 | #endif | ||
| 865 | |||
| 867 | #ifdef SYSTEM_MALLOC | 866 | #ifdef SYSTEM_MALLOC |
| 868 | configure___ system_malloc=yes | 867 | configure___ system_malloc=yes |
| 869 | #else | 868 | #else |
| @@ -925,6 +924,9 @@ fi] | |||
| 925 | rm ${tempcname} | 924 | rm ${tempcname} |
| 926 | 925 | ||
| 927 | 926 | ||
| 927 | AC_SUBST(cannot_dump) | ||
| 928 | |||
| 929 | |||
| 928 | LD_SWITCH_SYSTEM= | 930 | LD_SWITCH_SYSTEM= |
| 929 | case "$opsys" in | 931 | case "$opsys" in |
| 930 | freebsd) | 932 | freebsd) |
| @@ -1348,6 +1350,9 @@ dnl AC_C_BIGENDIAN | |||
| 1348 | dnl check for Make feature | 1350 | dnl check for Make feature |
| 1349 | AC_PROG_MAKE_SET | 1351 | AC_PROG_MAKE_SET |
| 1350 | 1352 | ||
| 1353 | DEPFLAGS= | ||
| 1354 | MKDEPDIR=":" | ||
| 1355 | deps_frag=deps.mk | ||
| 1351 | dnl check for GNU Make if we have GCC and autodepend is on. | 1356 | dnl check for GNU Make if we have GCC and autodepend is on. |
| 1352 | if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then | 1357 | if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then |
| 1353 | AC_MSG_CHECKING([whether we are using GNU Make]) | 1358 | AC_MSG_CHECKING([whether we are using GNU Make]) |
| @@ -1370,9 +1375,19 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then | |||
| 1370 | AC_MSG_RESULT([$ac_enable_autodepend]) | 1375 | AC_MSG_RESULT([$ac_enable_autodepend]) |
| 1371 | fi | 1376 | fi |
| 1372 | if test $ac_enable_autodepend = yes; then | 1377 | if test $ac_enable_autodepend = yes; then |
| 1373 | AC_DEFINE(AUTO_DEPEND, 1, [Generate dependencies with gcc.]) | 1378 | DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d' |
| 1379 | ## In parallel builds, another make might create depdir between | ||
| 1380 | ## the first test and mkdir, so stick another test on the end. | ||
| 1381 | ## Or use mkinstalldirs? mkdir -p is not portable. | ||
| 1382 | MKDEPDIR='test -d ${DEPDIR} || mkdir ${DEPDIR} || test -d ${DEPDIR}' | ||
| 1383 | deps_frag=autodeps.mk | ||
| 1374 | fi | 1384 | fi |
| 1375 | fi | 1385 | fi |
| 1386 | deps_frag=$srcdir/src/$deps_frag | ||
| 1387 | AC_SUBST(MKDEPDIR) | ||
| 1388 | AC_SUBST(DEPFLAGS) | ||
| 1389 | AC_SUBST_FILE(deps_frag) | ||
| 1390 | |||
| 1376 | 1391 | ||
| 1377 | dnl checks for operating system services | 1392 | dnl checks for operating system services |
| 1378 | AC_SYS_LONG_FILE_NAMES | 1393 | AC_SYS_LONG_FILE_NAMES |
| @@ -1480,6 +1495,7 @@ if test "${with_ns}" != no; then | |||
| 1480 | GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)" | 1495 | GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)" |
| 1481 | GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)" | 1496 | GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)" |
| 1482 | ## Pull in stuff from GNUstep-make. | 1497 | ## Pull in stuff from GNUstep-make. |
| 1498 | ## FIXME? Cleaner to use AC_SUBST_FILE for this? | ||
| 1483 | NS_IMPL_GNUSTEP_INC="FOUNDATION_LIB=gnu | 1499 | NS_IMPL_GNUSTEP_INC="FOUNDATION_LIB=gnu |
| 1484 | GUI_LIB=gnu | 1500 | GUI_LIB=gnu |
| 1485 | include $GNUSTEP_MAKEFILES/Additional/base.make | 1501 | include $GNUSTEP_MAKEFILES/Additional/base.make |
| @@ -1512,6 +1528,7 @@ AC_SUBST(NS_IMPL_GNUSTEP_INC) | |||
| 1512 | AC_SUBST(NS_IMPL_GNUSTEP_TEMACS_LDFLAGS) | 1528 | AC_SUBST(NS_IMPL_GNUSTEP_TEMACS_LDFLAGS) |
| 1513 | AC_SUBST(TEMACS_LDFLAGS2) | 1529 | AC_SUBST(TEMACS_LDFLAGS2) |
| 1514 | 1530 | ||
| 1531 | ns_frag=/dev/null | ||
| 1515 | NS_OBJ= | 1532 | NS_OBJ= |
| 1516 | NS_SUPPORT= | 1533 | NS_SUPPORT= |
| 1517 | if test "${HAVE_NS}" = yes; then | 1534 | if test "${HAVE_NS}" = yes; then |
| @@ -1523,6 +1540,7 @@ if test "${HAVE_NS}" = yes; then | |||
| 1523 | if test "${EN_NS_SELF_CONTAINED}" = yes; then | 1540 | if test "${EN_NS_SELF_CONTAINED}" = yes; then |
| 1524 | prefix=${ns_appresdir} | 1541 | prefix=${ns_appresdir} |
| 1525 | fi | 1542 | fi |
| 1543 | ns_frag=$srcdir/src/ns.mk | ||
| 1526 | NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o" | 1544 | NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o" |
| 1527 | NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc" | 1545 | NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc" |
| 1528 | fi | 1546 | fi |
| @@ -1531,6 +1549,7 @@ CPPFLAGS="$tmp_CPPFLAGS" | |||
| 1531 | AC_SUBST(NS_OBJ) | 1549 | AC_SUBST(NS_OBJ) |
| 1532 | AC_SUBST(NS_SUPPORT) | 1550 | AC_SUBST(NS_SUPPORT) |
| 1533 | AC_SUBST(LIB_STANDARD) | 1551 | AC_SUBST(LIB_STANDARD) |
| 1552 | AC_SUBST_FILE(ns_frag) | ||
| 1534 | 1553 | ||
| 1535 | case "${window_system}" in | 1554 | case "${window_system}" in |
| 1536 | x11 ) | 1555 | x11 ) |
| @@ -2640,7 +2659,7 @@ HAVE_LIBNCURSES=yes | |||
| 2640 | 2659 | ||
| 2641 | ## Use terminfo instead of termcap? | 2660 | ## Use terminfo instead of termcap? |
| 2642 | ## Note only system files NOT using terminfo are: | 2661 | ## Note only system files NOT using terminfo are: |
| 2643 | ## freebsd < 40000, ms-w32, msdos, netbsd, and | 2662 | ## freebsd < 40000, ms-w32, msdos, netbsd < 599002500, and |
| 2644 | ## darwin|gnu without ncurses. | 2663 | ## darwin|gnu without ncurses. |
| 2645 | TERMINFO=no | 2664 | TERMINFO=no |
| 2646 | LIBS_TERMCAP= | 2665 | LIBS_TERMCAP= |
| @@ -2682,13 +2701,22 @@ fail; | |||
| 2682 | fi | 2701 | fi |
| 2683 | ;; | 2702 | ;; |
| 2684 | 2703 | ||
| 2704 | netbsd) | ||
| 2705 | if test $ac_cv_search_tputs = -lterminfo; then | ||
| 2706 | TERMINFO=yes | ||
| 2707 | LIBS_TERMCAP="-lterminfo" | ||
| 2708 | else | ||
| 2709 | LIBS_TERMCAP="-ltermcap" | ||
| 2710 | fi | ||
| 2711 | ;; | ||
| 2712 | |||
| 2685 | esac | 2713 | esac |
| 2686 | 2714 | ||
| 2687 | case "$opsys" in | 2715 | case "$opsys" in |
| 2688 | ## hpux: Make sure we get select from libc rather than from libcurses | 2716 | ## hpux: Make sure we get select from libc rather than from libcurses |
| 2689 | ## because libcurses on HPUX 10.10 has a broken version of select. | 2717 | ## because libcurses on HPUX 10.10 has a broken version of select. |
| 2690 | ## We used to use -lc -lcurses, but this may be cleaner. | 2718 | ## We used to use -lc -lcurses, but this may be cleaner. |
| 2691 | hpux*|netbsd) LIBS_TERMCAP="-ltermcap" ;; | 2719 | hpux*) LIBS_TERMCAP="-ltermcap" ;; |
| 2692 | 2720 | ||
| 2693 | openbsd) LIBS_TERMCAP="-lncurses" ;; | 2721 | openbsd) LIBS_TERMCAP="-lncurses" ;; |
| 2694 | 2722 | ||
| @@ -3159,7 +3187,6 @@ else | |||
| 3159 | OLDXMENU_TARGET="really-lwlib" | 3187 | OLDXMENU_TARGET="really-lwlib" |
| 3160 | fi | 3188 | fi |
| 3161 | AC_SUBST(LIBXT_OTHER) | 3189 | AC_SUBST(LIBXT_OTHER) |
| 3162 | AC_SUBST(OLDXMENU_TARGET) | ||
| 3163 | 3190 | ||
| 3164 | ## The X Menu stuff is present in the X10 distribution, but missing | 3191 | ## The X Menu stuff is present in the X10 distribution, but missing |
| 3165 | ## from X11. If we have X10, just use the installed library; | 3192 | ## from X11. If we have X10, just use the installed library; |
| @@ -3178,7 +3205,9 @@ if test "${HAVE_X11}" = "yes" ; then | |||
| 3178 | LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" | 3205 | LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" |
| 3179 | OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}" | 3206 | OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}" |
| 3180 | else | 3207 | else |
| 3181 | OLDXMENU= | 3208 | ## For a syntactically valid Makefile; not actually used for anything. |
| 3209 | ## See comments in src/Makefile.in. | ||
| 3210 | OLDXMENU=nothing | ||
| 3182 | ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?). | 3211 | ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?). |
| 3183 | if test "${HAVE_X_WINDOWS}" = "yes"; then | 3212 | if test "${HAVE_X_WINDOWS}" = "yes"; then |
| 3184 | LIBXMENU="-lXMenu" | 3213 | LIBXMENU="-lXMenu" |
| @@ -3190,11 +3219,13 @@ else | |||
| 3190 | fi | 3219 | fi |
| 3191 | 3220 | ||
| 3192 | if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then | 3221 | if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then |
| 3193 | OLDXMENU= | 3222 | OLDXMENU_TARGET= |
| 3223 | OLDXMENU=nothing | ||
| 3194 | LIBXMENU= | 3224 | LIBXMENU= |
| 3195 | OLDXMENU_DEPS= | 3225 | OLDXMENU_DEPS= |
| 3196 | fi | 3226 | fi |
| 3197 | 3227 | ||
| 3228 | AC_SUBST(OLDXMENU_TARGET) | ||
| 3198 | AC_SUBST(OLDXMENU) | 3229 | AC_SUBST(OLDXMENU) |
| 3199 | AC_SUBST(LIBXMENU) | 3230 | AC_SUBST(LIBXMENU) |
| 3200 | AC_SUBST(LIBX_OTHER) | 3231 | AC_SUBST(LIBX_OTHER) |
| @@ -3277,8 +3308,75 @@ fi | |||
| 3277 | AC_SUBST(LD_SWITCH_SYSTEM_EXTRA) | 3308 | AC_SUBST(LD_SWITCH_SYSTEM_EXTRA) |
| 3278 | 3309 | ||
| 3279 | 3310 | ||
| 3311 | LINKER= | ||
| 3312 | ORDINARY_LINK= | ||
| 3313 | case "$opsys" in | ||
| 3314 | ## gnu: GNU needs its own crt0. | ||
| 3315 | aix4-2|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;; | ||
| 3316 | |||
| 3317 | cygwin) LINKER="\$(CC)" ;; | ||
| 3318 | |||
| 3319 | ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the | ||
| 3320 | ## library search parth, i.e. it won't search /usr/lib for libc and | ||
| 3321 | ## friends. Using -nostartfiles instead avoids this problem, and | ||
| 3322 | ## will also work on earlier NetBSD releases. | ||
| 3323 | netbsd|openbsd) LINKER="\$(CC) -nostartfiles" ;; | ||
| 3324 | |||
| 3325 | ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says | ||
| 3326 | ## MkLinux/LinuxPPC needs this. | ||
| 3327 | ## ibms390x only supports opsys = gnu-linux so it can be added here. | ||
| 3328 | gnu-*) | ||
| 3329 | case "$machine" in | ||
| 3330 | macppc|ibms390x) LINKER="\$(CC) -nostdlib" ;; | ||
| 3331 | esac | ||
| 3332 | ;; | ||
| 3333 | esac | ||
| 3334 | |||
| 3335 | ## A macro which other sections of Makefile can redefine to munge the | ||
| 3336 | ## flags before they are passed to LD. This is helpful if you have | ||
| 3337 | ## redefined LD to something odd, like "gcc". | ||
| 3338 | ## (The YMF prefix is a holdover from the old name "ymakefile".) | ||
| 3339 | YMF_PASS_LDFLAGS=flags | ||
| 3340 | if test "x$ORDINARY_LINK" = "xyes"; then | ||
| 3341 | |||
| 3342 | LINKER="\$(CC)" | ||
| 3343 | AC_DEFINE(ORDINARY_LINK, 1, [Define if the C compiler is the linker.]) | ||
| 3344 | |||
| 3345 | ## The system files defining neither ORDINARY_LINK nor LINKER are: | ||
| 3346 | ## (bsd-common), freebsd, gnu-* not on macppc|ibms390x, hpux*. | ||
| 3347 | elif test "x$GCC" = "xyes" && test "x$LINKER" = "x"; then | ||
| 3348 | |||
| 3349 | ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure | ||
| 3350 | ## places that are difficult to figure out at make time. Fortunately, | ||
| 3351 | ## these same versions allow you to pass arbitrary flags on to the | ||
| 3352 | ## linker, so there is no reason not to use it as a linker. | ||
| 3353 | ## | ||
| 3354 | ## Well, it is not quite perfect. The "-nostdlib" keeps GCC from | ||
| 3355 | ## searching for libraries in its internal directories, so we have to | ||
| 3356 | ## ask GCC explicitly where to find libgcc.a (LIB_GCC below). | ||
| 3357 | LINKER="\$(CC) -nostdlib" | ||
| 3358 | ## GCC passes any argument prefixed with -Xlinker directly to the linker. | ||
| 3359 | ## See prefix-args.c for an explanation of why we do not do this with the | ||
| 3360 | ## shell''s ``for'' construct. Note that sane people do not have '.' in | ||
| 3361 | ## their paths, so we must use ./prefix-args. | ||
| 3362 | ## TODO either make prefix-args check ORDINARY_LINK internally, | ||
| 3363 | ## or remove it altogether (bug#6184), removing the need for this macro. | ||
| 3364 | YMF_PASS_LDFLAGS='`./prefix-args -Xlinker flags`' | ||
| 3365 | fi | ||
| 3366 | AC_SUBST(YMF_PASS_LDFLAGS) | ||
| 3367 | |||
| 3368 | test "x$LINKER" = "x" && LINKER=ld | ||
| 3369 | ## FIXME? What setting of YMF_PASS_LDFLAGS should this have? | ||
| 3370 | test "$NS_IMPL_GNUSTEP" = "yes" && LINKER="\$(CC) -rdynamic" | ||
| 3371 | |||
| 3372 | AC_SUBST(LINKER) | ||
| 3373 | |||
| 3374 | |||
| 3375 | ## FIXME? The logic here is not precisely the same as that above | ||
| 3376 | ## setting YMF_PASS_LDFLAGS. There is no check here for a pre-defined | ||
| 3377 | ## LINKER. Should we only be setting LIB_GCC if LD ~ -nostdlib? | ||
| 3280 | LIB_GCC= | 3378 | LIB_GCC= |
| 3281 | if test "x$GCC" = "xyes"; then | 3379 | if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then |
| 3282 | 3380 | ||
| 3283 | case "$opsys" in | 3381 | case "$opsys" in |
| 3284 | ## cygwin: don't link against static libgcc. | 3382 | ## cygwin: don't link against static libgcc. |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 94a0e72ca85..1ed5b7ea928 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2010-05-22 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * display.texi (Image Cache): Update documentation about image | ||
| 4 | caching. | ||
| 5 | |||
| 1 | 2010-05-08 Štěpán Němec <stepnem@gmail.com> (tiny change) | 6 | 2010-05-08 Štěpán Němec <stepnem@gmail.com> (tiny change) |
| 2 | 7 | ||
| 3 | * windows.texi (Textual Scrolling): | 8 | * windows.texi (Textual Scrolling): |
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 68631dcdefc..622de2cd3cf 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi | |||
| @@ -4730,29 +4730,35 @@ cache, it can always be displayed, even if the value of | |||
| 4730 | efficiently. When Emacs displays an image, it searches the image | 4730 | efficiently. When Emacs displays an image, it searches the image |
| 4731 | cache for an existing image specification @code{equal} to the desired | 4731 | cache for an existing image specification @code{equal} to the desired |
| 4732 | specification. If a match is found, the image is displayed from the | 4732 | specification. If a match is found, the image is displayed from the |
| 4733 | cache; otherwise, Emacs loads the image normally. | 4733 | cache. Otherwise, Emacs loads the image normally. |
| 4734 | 4734 | ||
| 4735 | Occasionally, you may need to tell Emacs to refresh the images | 4735 | @defun image-flush spec &optional frame |
| 4736 | associated with a given image specification. For example, suppose you | 4736 | This function removes the image with specification @var{spec} from the |
| 4737 | display an image using a specification that contains a @code{:file} | 4737 | image cache of frame @var{frame}. Image specifications are compared |
| 4738 | property. The image is automatically cached, and subsequent displays | 4738 | using @code{equal}. If @var{frame} is @code{nil}, it defaults to the |
| 4739 | of that image, with the same image specification, will use the image | 4739 | selected frame. If @var{frame} is @code{t}, the image is flushed on |
| 4740 | cache. If the image file changes in the meantime, Emacs would be | 4740 | all existing frames. |
| 4741 | displaying the old version of the image. In such a situation, you can | 4741 | |
| 4742 | ``refresh'' the image by calling @code{image-refresh}. | 4742 | In Emacs' current implementation, each graphical terminal possesses an |
| 4743 | 4743 | image cache, which is shared by all the frames on that terminal | |
| 4744 | In Emacs' current implementation, each graphical terminal possesses | ||
| 4745 | an image cache, which is shared by all the frames on that terminal | ||
| 4746 | (@pxref{Multiple Terminals}). Thus, refreshing an image in one frame | 4744 | (@pxref{Multiple Terminals}). Thus, refreshing an image in one frame |
| 4747 | also refreshes it in all other frames on the same terminal. | 4745 | also refreshes it in all other frames on the same terminal. |
| 4748 | |||
| 4749 | @defun image-refresh spec &optional frame | ||
| 4750 | This function refreshes any images with image specifications | ||
| 4751 | @code{equal} to @var{spec} on frame @var{frame}. If @var{frame} is | ||
| 4752 | @code{nil}, it defaults to the selected frame. If @var{frame} is | ||
| 4753 | @code{t}, the refresh is applied to all existing frames. | ||
| 4754 | @end defun | 4746 | @end defun |
| 4755 | 4747 | ||
| 4748 | One use for @code{image-flush} is to tell Emacs about a change in an | ||
| 4749 | image file. If an image specification contains a @code{:file} | ||
| 4750 | property, the image is cached based on the file's contents when the | ||
| 4751 | image is first displayed. Even if the file subsequently changes, | ||
| 4752 | Emacs continues displaying the old version of the image. Calling | ||
| 4753 | @code{image-flush} flushes the image from the cache, forcing Emacs to | ||
| 4754 | re-read the file the next time it needs to display that image. | ||
| 4755 | |||
| 4756 | Another use for @code{image-flush} is for memory conservation. If | ||
| 4757 | your Lisp program creates a large number of temporary images over a | ||
| 4758 | period much shorter than @code{image-cache-eviction-delay} (see | ||
| 4759 | below), you can opt to flush unused images yourself, instead of | ||
| 4760 | waiting for Emacs to do it automatically. | ||
| 4761 | |||
| 4756 | @defun clear-image-cache &optional filter | 4762 | @defun clear-image-cache &optional filter |
| 4757 | This function clears an image cache, removing all the images stored in | 4763 | This function clears an image cache, removing all the images stored in |
| 4758 | it. If @var{filter} is omitted or @code{nil}, it clears the cache for | 4764 | it. If @var{filter} is omitted or @code{nil}, it clears the cache for |
| @@ -4768,9 +4774,12 @@ period of time, Emacs removes it from the cache and frees the | |||
| 4768 | associated memory. | 4774 | associated memory. |
| 4769 | 4775 | ||
| 4770 | @defvar image-cache-eviction-delay | 4776 | @defvar image-cache-eviction-delay |
| 4771 | This variable specifies the number of seconds an image can remain in the | 4777 | This variable specifies the number of seconds an image can remain in |
| 4772 | cache without being displayed. When an image is not displayed for this | 4778 | the cache without being displayed. When an image is not displayed for |
| 4773 | length of time, Emacs removes it from the image cache. | 4779 | this length of time, Emacs removes it from the image cache. |
| 4780 | |||
| 4781 | Under some circumstances, if the number of images in the cache grows | ||
| 4782 | too large, the actual eviction delay may be shorter than this. | ||
| 4774 | 4783 | ||
| 4775 | If the value is @code{nil}, Emacs does not remove images from the cache | 4784 | If the value is @code{nil}, Emacs does not remove images from the cache |
| 4776 | except when you explicitly clear it. This mode can be useful for | 4785 | except when you explicitly clear it. This mode can be useful for |
| @@ -147,6 +147,11 @@ Use the arrow to the left of the option name to toggle visibility. | |||
| 147 | *** The color widget now has a "Choose" button, which allows you to | 147 | *** The color widget now has a "Choose" button, which allows you to |
| 148 | choose a color via list-colors-display. | 148 | choose a color via list-colors-display. |
| 149 | 149 | ||
| 150 | ** Dired-x | ||
| 151 | |||
| 152 | *** dired-jump and dired-jump-other-window called with a prefix argument | ||
| 153 | read a file name from the minibuffer instead of using buffer-file-name. | ||
| 154 | |||
| 150 | ** VC and related modes | 155 | ** VC and related modes |
| 151 | 156 | ||
| 152 | *** New VC commands: vc-log-incoming, vc-log-outgoing, vc-find-conflicted-file. | 157 | *** New VC commands: vc-log-incoming, vc-log-outgoing, vc-find-conflicted-file. |
| @@ -250,6 +255,10 @@ by the Graphic Control Extension of the image. | |||
| 250 | 255 | ||
| 251 | *** `image-extension-data' is renamed to `image-metadata'. | 256 | *** `image-extension-data' is renamed to `image-metadata'. |
| 252 | 257 | ||
| 258 | ** Isearch | ||
| 259 | |||
| 260 | *** New hook `isearch-update-post-hook' that runs in `isearch-update'. | ||
| 261 | |||
| 253 | ** Progress reporters can now "spin". | 262 | ** Progress reporters can now "spin". |
| 254 | The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can | 263 | The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can |
| 255 | now be nil, or omitted. This makes a "non-numeric" reporter. Each | 264 | now be nil, or omitted. This makes a "non-numeric" reporter. Each |
| @@ -40,9 +40,9 @@ make it. | |||
| 40 | fix_submap_inheritance hack and to more cleanly express the | 40 | fix_submap_inheritance hack and to more cleanly express the |
| 41 | relationship between minibuffer-local-*-map): I've had this locally | 41 | relationship between minibuffer-local-*-map): I've had this locally |
| 42 | for a long time, but the details of the semantics is somewhat ... delicate. | 42 | for a long time, but the details of the semantics is somewhat ... delicate. |
| 43 | *** prog-mode (a parent-mode, like text-mode). Could/should provide | 43 | *** Derive from prog-mode in more places, close bug#5532. |
| 44 | a better fill-paragraph default that uses syntax-tables to recognize | 44 | *** prog-mode could/should provide a better fill-paragraph default |
| 45 | string/comment boundaries. | 45 | that uses syntax-tables to recognize string/comment boundaries. |
| 46 | *** provide more completion-at-point-functions. Make existing | 46 | *** provide more completion-at-point-functions. Make existing |
| 47 | in-buffer completion use completion-at-point. | 47 | in-buffer completion use completion-at-point. |
| 48 | *** "functional" function-key-map that would make it easy to add (and | 48 | *** "functional" function-key-map that would make it easy to add (and |
| @@ -181,7 +181,14 @@ dired buffers and DTRT WRT `auto-revert-mode'. | |||
| 181 | http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00456.html | 181 | http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00456.html |
| 182 | 182 | ||
| 183 | * Important features: | 183 | * Important features: |
| 184 | 184 | ** Extended text-properties (to make overlays "obsolete") | |
| 185 | *** Several text-property planes | ||
| 186 | This would get us rid of font-lock-face property (and I'd be happy to | ||
| 187 | get rid of char-property-alias-alist as well) since font-lock would | ||
| 188 | simply use the `face' property in the `font-lock' plane. | ||
| 189 | Each property would come with an Elisp merge-function. The merge | ||
| 190 | would be performed in add-text-properties. | ||
| 191 | *** zero-width text-properties. | ||
| 185 | ** Having tabs above a window to switch buffers in it. | 192 | ** Having tabs above a window to switch buffers in it. |
| 186 | 193 | ||
| 187 | ** "Perspectives" are named persistent window configurations. We have | 194 | ** "Perspectives" are named persistent window configurations. We have |
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 36e2f29e58f..d2c7301fb6f 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog | |||
| @@ -1,3 +1,11 @@ | |||
| 1 | 2010-05-22 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * Makefile.in (STAMP_INST_SCRIPTS, STAMP_SCRIPS): New (Bug #6246). | ||
| 4 | (all): Depend onSTAMP_INST_SCRIPTS, STAMP_SCRIPS (Bug #6246). | ||
| 5 | (stamp-rcs2log, stamp-rcs-checkin, stamp-grep-changelog, stamp-vcdiff): | ||
| 6 | New rules (Bug #6246). | ||
| 7 | (clean): Remove stamp-* (Bug #6246). | ||
| 8 | |||
| 1 | 2010-05-12 Glenn Morris <rgm@gnu.org> | 9 | 2010-05-12 Glenn Morris <rgm@gnu.org> |
| 2 | 10 | ||
| 3 | * Makefile.in (INSTALLABLES): Remove @LIB_SRC_EXTRA_INSTALLABLES@. | 11 | * Makefile.in (INSTALLABLES): Remove @LIB_SRC_EXTRA_INSTALLABLES@. |
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index 6202feb890c..1c19dec276b 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in | |||
| @@ -111,6 +111,7 @@ INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} \ | |||
| 111 | b2m${EXEEXT} ebrowse${EXEEXT} | 111 | b2m${EXEEXT} ebrowse${EXEEXT} |
| 112 | 112 | ||
| 113 | INSTALLABLE_SCRIPTS = rcs-checkin grep-changelog | 113 | INSTALLABLE_SCRIPTS = rcs-checkin grep-changelog |
| 114 | STAMP_INST_SCRIPTS = stamp-rcs-checkin stamp-grep-changelog | ||
| 114 | 115 | ||
| 115 | # Things that Emacs runs internally, or during the build process, | 116 | # Things that Emacs runs internally, or during the build process, |
| 116 | # which should not be installed in bindir. | 117 | # which should not be installed in bindir. |
| @@ -123,6 +124,7 @@ DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT} | |||
| 123 | # Like UTILITIES, but they're not system-dependent, and should not be | 124 | # Like UTILITIES, but they're not system-dependent, and should not be |
| 124 | # deleted by the distclean target. | 125 | # deleted by the distclean target. |
| 125 | SCRIPTS= rcs2log vcdiff | 126 | SCRIPTS= rcs2log vcdiff |
| 127 | STAMP_SCRIPTS= stamp-rcs2log stamp-vcdiff | ||
| 126 | 128 | ||
| 127 | EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} | 129 | EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} |
| 128 | 130 | ||
| @@ -180,23 +182,27 @@ LOADLIBES=$(LIBS_SYSTEM) | |||
| 180 | .c.o: | 182 | .c.o: |
| 181 | ${CC} -c ${CPP_CFLAGS} $< | 183 | ${CC} -c ${CPP_CFLAGS} $< |
| 182 | 184 | ||
| 183 | all: ${DONT_INSTALL} ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} | 185 | all: ${DONT_INSTALL} ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} ${STAMP_INST_SCRIPTS} ${STAMP_SCRIPTS} |
| 184 | 186 | ||
| 185 | ## These targets copy the scripts into the build directory so that | 187 | ## These targets copy the scripts into the build directory so that |
| 186 | ## they can be run from there in an uninstalled Emacs. | 188 | ## they can be run from there in an uninstalled Emacs. |
| 187 | ## The "-" is prepended because some versions of cp barf when srcdir | 189 | ## The "-" is prepended because some versions of cp barf when srcdir |
| 188 | ## is the current directory, and thus the file will be copied into itself. | 190 | ## is the current directory, and thus the file will be copied into itself. |
| 189 | rcs2log: $(srcdir)/rcs2log | 191 | stamp-rcs2log: $(srcdir)/rcs2log |
| 190 | -cp -p $(srcdir)/rcs2log rcs2log | 192 | -cp -p $(srcdir)/rcs2log rcs2log |
| 193 | touch $@ | ||
| 191 | 194 | ||
| 192 | rcs-checkin: $(srcdir)/rcs-checkin | 195 | stamp-rcs-checkin: $(srcdir)/rcs-checkin |
| 193 | -cp -p $(srcdir)/rcs-checkin rcs-checkin | 196 | -cp -p $(srcdir)/rcs-checkin rcs-checkin |
| 197 | touch $@ | ||
| 194 | 198 | ||
| 195 | grep-changelog: $(srcdir)/grep-changelog | 199 | stamp-grep-changelog: $(srcdir)/grep-changelog |
| 196 | -cp -p $(srcdir)/grep-changelog grep-changelog | 200 | -cp -p $(srcdir)/grep-changelog grep-changelog |
| 201 | touch $@ | ||
| 197 | 202 | ||
| 198 | vcdiff: $(srcdir)/vcdiff | 203 | stamp-vcdiff: $(srcdir)/vcdiff |
| 199 | -cp -p $(srcdir)/vcdiff vcdiff | 204 | -cp -p $(srcdir)/vcdiff vcdiff |
| 205 | touch $@ | ||
| 200 | 206 | ||
| 201 | ## Only used if we need blessmail, but no harm in always defining. | 207 | ## Only used if we need blessmail, but no harm in always defining. |
| 202 | ## This makes the actual blessmail executable. | 208 | ## This makes the actual blessmail executable. |
| @@ -273,7 +279,7 @@ mostlyclean: | |||
| 273 | 279 | ||
| 274 | clean: mostlyclean | 280 | clean: mostlyclean |
| 275 | -rm -f ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL} | 281 | -rm -f ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL} |
| 276 | -rm -f fns*.el *.tab.c *.tab.h | 282 | -rm -f fns*.el *.tab.c *.tab.h stamp-* |
| 277 | 283 | ||
| 278 | distclean: clean | 284 | distclean: clean |
| 279 | -rm -f TAGS | 285 | -rm -f TAGS |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 545311d6530..72f00e60edf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,8 +1,159 @@ | |||
| 1 | 2010-05-22 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * image.el (image-refresh): Define as an alias for image-flush. | ||
| 4 | |||
| 5 | * image-mode.el (image-toggle-display-image): Caller changed. | ||
| 6 | |||
| 7 | 2010-05-21 Juri Linkov <juri@jurta.org> | ||
| 8 | |||
| 9 | * progmodes/grep.el (grep-read-files): Fix multi-pattern aliases. | ||
| 10 | Remove "all" from grep-files-aliases. Split grep-files-aliases by | ||
| 11 | whitespace, call wildcard-to-regexp on substrings and concat them | ||
| 12 | with "\\|". (Bug#6114) | ||
| 13 | |||
| 14 | 2010-05-21 Alan Mackenzie <acm@muc.de> | ||
| 15 | |||
| 16 | * progmodes/cc-engine.el (c-parse-state-get-strategy): Replace | ||
| 17 | parameter `here' with `here-' and `here-plus', which sandwich any | ||
| 18 | pertinent CPP construct. | ||
| 19 | (c-remove-stale-state-cache-backwards): Fix a bug which happens | ||
| 20 | when doing (c-parse-state) in a CPP construct: Exclude any "new" | ||
| 21 | CPP construct from taking part in the scanning. | ||
| 22 | |||
| 23 | 2010-05-21 Michael Albinus <michael.albinus@gmx.de> | ||
| 24 | |||
| 25 | * net/tramp.el (tramp-do-copy-or-rename-file) | ||
| 26 | (tramp-handle-file-local-copy, tramp-maybe-open-connection): Tune | ||
| 27 | `with-progress-reporter' messages. | ||
| 28 | (tramp-handle-vc-registered): | ||
| 29 | * net/tramp-fish.el (tramp-fish-handle-file-local-copy) | ||
| 30 | (tramp-fish-handle-insert-file-contents) | ||
| 31 | (tramp-fish-maybe-open-connection): | ||
| 32 | * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection): | ||
| 33 | * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file) | ||
| 34 | (tramp-imap-handle-insert-file-contents) | ||
| 35 | (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'. | ||
| 36 | |||
| 37 | 2010-05-21 Juanma Barranquero <lekktu@gmail.com> | ||
| 38 | |||
| 39 | * add-log.el (change-log-font-lock-keywords): | ||
| 40 | Highlight all authors in multi-author entries. | ||
| 41 | |||
| 42 | * smerge-mode.el (smerge-refine-ignore-whitespace) | ||
| 43 | (smerge-refine-weight-hack, smerge-refine, smerge-makeup-conflict): | ||
| 44 | Fix typos in docstrings. | ||
| 45 | (smerge-resolve, smerge-refine-subst): Reflow docstrings. | ||
| 46 | |||
| 47 | 2010-05-21 Glenn Morris <rgm@gnu.org> | ||
| 48 | |||
| 49 | * progmodes/fortran.el (fortran-mode): | ||
| 50 | * progmodes/f90.el (f90-mode): Derive from prog-mode. | ||
| 51 | |||
| 52 | * loadup.el [CANNOT_DUMP]: Update for bootstrap-emacs no longer | ||
| 53 | having a relative path in src/Makefile.in. | ||
| 54 | |||
| 55 | 2010-05-20 Kevin Ryde <user42@zip.com.au> | ||
| 56 | |||
| 57 | * help-mode.el (help-make-xrefs): For Info node links turn | ||
| 58 | newlines into spaces. Link node names with newlines are matched | ||
| 59 | by help-xref-info-regexp and buttonized, this change ensures they | ||
| 60 | can be followed successfully with RET. (Bug#6206) | ||
| 61 | |||
| 62 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 63 | |||
| 64 | * locate.el (locate): Use pop-to-buffer instead of | ||
| 65 | switch-to-buffer-other-window. (Bug#6204) | ||
| 66 | |||
| 67 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 68 | |||
| 69 | * replace.el (replace-highlight): Fix lazy-highlighting | ||
| 70 | for `M-s w str M-% str RET'. | ||
| 71 | |||
| 72 | 2009-12-15 Masatake YAMATO <yamato@redhat.com> | ||
| 73 | |||
| 74 | * isearch.el (isearch-yank-word-or-char): Pull next subword | ||
| 75 | when `subword-mode' is activated. (Bug#6220) | ||
| 76 | |||
| 77 | 2010-05-20 Mark A. Hershberger <mah@everybody.org> | ||
| 78 | |||
| 79 | * isearch.el (isearch-update-post-hook): New hook. | ||
| 80 | (isearch-update): Use the new hook. (Bug#6225) | ||
| 81 | |||
| 82 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 83 | |||
| 84 | * isearch.el (isearch-mode-map): Bind more keys to isearch-help-map: | ||
| 85 | [f1], [help], and (char-to-string help-char) instead of "\C-h". | ||
| 86 | (Bug#6222) | ||
| 87 | |||
| 88 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 89 | |||
| 90 | * isearch.el (isearch-yank-string): Use isearch-process-search-string. | ||
| 91 | (Bug#6223) | ||
| 92 | |||
| 93 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 94 | |||
| 95 | * dired-x.el (dired-jump, dired-jump-other-window): Add arg | ||
| 96 | FILE-NAME to read from the minibuffer when called interactively | ||
| 97 | with prefix argument instead of using buffer-file-name. | ||
| 98 | http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00534.html | ||
| 99 | |||
| 100 | * dired.el: Update autoloads. | ||
| 101 | |||
| 102 | 2010-05-20 Chong Yidong <cyd@stupidchicken.com> | ||
| 103 | |||
| 104 | * nxml/nxml-mode.el (nxml-mode-map): Bind C-c / to | ||
| 105 | nxml-finish-element, for consistency with SGML mode. | ||
| 106 | |||
| 107 | * progmodes/octave-mod.el (octave-mode-map): Bind C-c / to | ||
| 108 | octave-close-block. | ||
| 109 | |||
| 110 | 2010-05-20 Juanma Barranquero <lekktu@gmail.com> | ||
| 111 | |||
| 112 | * composite.el: Require cl when compiling. | ||
| 113 | (reference-point-alist, compose-gstring-for-graphic) | ||
| 114 | (compose-gstring-for-terminal): Fix typos in docstrings. | ||
| 115 | |||
| 116 | 2010-05-19 Juri Linkov <juri@jurta.org> | ||
| 117 | |||
| 118 | * emacs-lisp/cl-macs.el (window-parameter): Add defsetf with | ||
| 119 | set-window-parameter. | ||
| 120 | |||
| 121 | 2010-05-19 Michael Albinus <michael.albinus@gmx.de> | ||
| 122 | |||
| 123 | * net/tramp.el (tramp-methods): Add `tramp-async-args' attribute | ||
| 124 | where appropriate. | ||
| 125 | (tramp-maybe-open-connection): Use it. | ||
| 126 | |||
| 127 | 2010-05-19 Eli Zaretskii <eliz@gnu.org> | ||
| 128 | |||
| 129 | * simple.el (move-end-of-line): Make sure we are at line beginning | ||
| 130 | before backing up to end of previous line. | ||
| 131 | |||
| 132 | 2010-05-19 Michael Albinus <michael.albinus@gmx.de> | ||
| 133 | |||
| 134 | * password-cache.el (password-cache-remove): Fix docstring. | ||
| 135 | |||
| 136 | * net/secrets.el: Autoload the widget functions. | ||
| 137 | (secrets-search-items, secrets-create-item) | ||
| 138 | (secrets-get-attributes, secrets-expand-item): Attributes will be | ||
| 139 | stored on the password database without leading ":", as all other | ||
| 140 | clients do as well. | ||
| 141 | (secrets-mode): Fix docstring. | ||
| 142 | (secrets-show-secrets): Provide it as autoloaded command only when | ||
| 143 | D-Bus support is available. Check existence of Secret Service API. | ||
| 144 | |||
| 145 | 2010-05-19 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 146 | |||
| 147 | * indent.el (indent-region): Deactivate region (bug#6200). | ||
| 148 | |||
| 149 | 2010-05-19 Glenn Morris <rgm@gnu.org> | ||
| 150 | |||
| 151 | * vc-dir.el (vc-dir): Don't pop-up-windows. (Bug#6204) | ||
| 152 | |||
| 1 | 2010-05-19 Kenichi Handa <handa@m17n.org> | 153 | 2010-05-19 Kenichi Handa <handa@m17n.org> |
| 2 | 154 | ||
| 3 | * composite.el: Register compose-gstring-for-graphic in | 155 | * composite.el: Register compose-gstring-for-graphic in |
| 4 | composition-function-table only for combining characters (Mn, Mc, | 156 | composition-function-table only for combining characters (Mn, Mc, Me). |
| 5 | Me). | ||
| 6 | 157 | ||
| 7 | 2010-05-18 Jay Belanger <jay.p.belanger@gmail.com> | 158 | 2010-05-18 Jay Belanger <jay.p.belanger@gmail.com> |
| 8 | 159 | ||
diff --git a/lisp/add-log.el b/lisp/add-log.el index ab99f6787c8..88277e66640 100644 --- a/lisp/add-log.el +++ b/lisp/add-log.el | |||
| @@ -245,7 +245,7 @@ Note: The search is conducted only within 10%, at the beginning of the file." | |||
| 245 | ;; wrongly with a non-date line existing as a random note. In | 245 | ;; wrongly with a non-date line existing as a random note. In |
| 246 | ;; addition, using any kind of fixed setting like this doesn't | 246 | ;; addition, using any kind of fixed setting like this doesn't |
| 247 | ;; work if a user customizes add-log-time-format. | 247 | ;; work if a user customizes add-log-time-format. |
| 248 | ("^[0-9-]+ +\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-z][a-z][a-z] [0-9:+ ]+" | 248 | ("^[0-9-]+ +\\|^ \\{11,\\}\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-z][a-z][a-z] [0-9:+ ]+" |
| 249 | (0 'change-log-date-face) | 249 | (0 'change-log-date-face) |
| 250 | ;; Name and e-mail; some people put e-mail in parens, not angles. | 250 | ;; Name and e-mail; some people put e-mail in parens, not angles. |
| 251 | ("\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" nil nil | 251 | ("\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" nil nil |
diff --git a/lisp/comint.el b/lisp/comint.el index 8defc3c7800..fd3cff3b5f9 100644 --- a/lisp/comint.el +++ b/lisp/comint.el | |||
| @@ -309,7 +309,6 @@ the function `comint-truncate-buffer' is on `comint-output-filter-functions'." | |||
| 309 | :type 'integer | 309 | :type 'integer |
| 310 | :group 'comint) | 310 | :group 'comint) |
| 311 | 311 | ||
| 312 | ;; FIXME: this should be defcustom | ||
| 313 | (defcustom comint-input-ring-size 500 | 312 | (defcustom comint-input-ring-size 500 |
| 314 | "Size of the input history ring in `comint-mode'." | 313 | "Size of the input history ring in `comint-mode'." |
| 315 | :type 'integer | 314 | :type 'integer |
diff --git a/lisp/composite.el b/lisp/composite.el index 0afb2864879..d886be5a463 100644 --- a/lisp/composite.el +++ b/lisp/composite.el | |||
| @@ -28,6 +28,8 @@ | |||
| 28 | 28 | ||
| 29 | ;;; Code: | 29 | ;;; Code: |
| 30 | 30 | ||
| 31 | (eval-when-compile (require 'cl)) | ||
| 32 | |||
| 31 | (defconst reference-point-alist | 33 | (defconst reference-point-alist |
| 32 | '((tl . 0) (tc . 1) (tr . 2) | 34 | '((tl . 0) (tc . 1) (tr . 2) |
| 33 | (Bl . 3) (Bc . 4) (Br . 5) | 35 | (Bl . 3) (Bc . 4) (Br . 5) |
| @@ -77,7 +79,7 @@ follows (the point `*' corresponds to both reference points): | |||
| 77 | +----+-----+ <--- new descent | 79 | +----+-----+ <--- new descent |
| 78 | 80 | ||
| 79 | A composition rule may have the form \(GLOBAL-REF-POINT | 81 | A composition rule may have the form \(GLOBAL-REF-POINT |
| 80 | NEW-REF-POINT XOFF YOFF), where XOFF and YOFF specifies how much | 82 | NEW-REF-POINT XOFF YOFF), where XOFF and YOFF specify how much |
| 81 | to shift NEW-REF-POINT from GLOBAL-REF-POINT. In this case, XOFF | 83 | to shift NEW-REF-POINT from GLOBAL-REF-POINT. In this case, XOFF |
| 82 | and YOFF are integers in the range -100..100 representing the | 84 | and YOFF are integers in the range -100..100 representing the |
| 83 | shifting percentage against the font size.") | 85 | shifting percentage against the font size.") |
| @@ -537,7 +539,7 @@ character. If the preceding character is not a base character, | |||
| 537 | each combining character is composed as a spacing character by | 539 | each combining character is composed as a spacing character by |
| 538 | a padding space before and/or after the character. | 540 | a padding space before and/or after the character. |
| 539 | 541 | ||
| 540 | All non-spacing characters has this function in | 542 | All non-spacing characters have this function in |
| 541 | `composition-function-table' unless overwritten." | 543 | `composition-function-table' unless overwritten." |
| 542 | (let* ((header (lgstring-header gstring)) | 544 | (let* ((header (lgstring-header gstring)) |
| 543 | (nchars (lgstring-char-len gstring)) | 545 | (nchars (lgstring-char-len gstring)) |
| @@ -669,7 +671,7 @@ All non-spacing characters has this function in | |||
| 669 | Non-spacing characters are composed with the preceding base | 671 | Non-spacing characters are composed with the preceding base |
| 670 | character. If the preceding character is not a base character, | 672 | character. If the preceding character is not a base character, |
| 671 | each non-spacing character is composed as a spacing character by | 673 | each non-spacing character is composed as a spacing character by |
| 672 | a prepending a space before it." | 674 | prepending a space before it." |
| 673 | (let* ((header (lgstring-header gstring)) | 675 | (let* ((header (lgstring-header gstring)) |
| 674 | (nchars (lgstring-char-len gstring)) | 676 | (nchars (lgstring-char-len gstring)) |
| 675 | (nglyphs (lgstring-glyph-len gstring)) | 677 | (nglyphs (lgstring-glyph-len gstring)) |
diff --git a/lisp/dired-x.el b/lisp/dired-x.el index aba4b7a7a9d..2dc7475e9e3 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el | |||
| @@ -506,16 +506,21 @@ See variables `dired-texinfo-unclean-extensions', | |||
| 506 | ;;; JUMP. | 506 | ;;; JUMP. |
| 507 | 507 | ||
| 508 | ;;;###autoload | 508 | ;;;###autoload |
| 509 | (defun dired-jump (&optional other-window) | 509 | (defun dired-jump (&optional other-window file-name) |
| 510 | "Jump to dired buffer corresponding to current buffer. | 510 | "Jump to dired buffer corresponding to current buffer. |
| 511 | If in a file, dired the current directory and move to file's line. | 511 | If in a file, dired the current directory and move to file's line. |
| 512 | If in Dired already, pop up a level and goto old directory's line. | 512 | If in Dired already, pop up a level and goto old directory's line. |
| 513 | In case the proper dired file line cannot be found, refresh the dired | 513 | In case the proper dired file line cannot be found, refresh the dired |
| 514 | buffer and try again." | 514 | buffer and try again. |
| 515 | (interactive "P") | 515 | When OTHER-WINDOW is non-nil, jump to dired buffer in other window. |
| 516 | (let* ((file buffer-file-name) | 516 | Interactively with prefix argument, read FILE-NAME and |
| 517 | move to its line in dired." | ||
| 518 | (interactive | ||
| 519 | (list nil (and current-prefix-arg | ||
| 520 | (read-file-name "Jump to dired file: ")))) | ||
| 521 | (let* ((file (or file-name buffer-file-name)) | ||
| 517 | (dir (if file (file-name-directory file) default-directory))) | 522 | (dir (if file (file-name-directory file) default-directory))) |
| 518 | (if (eq major-mode 'dired-mode) | 523 | (if (and (eq major-mode 'dired-mode) (null file-name)) |
| 519 | (progn | 524 | (progn |
| 520 | (setq dir (dired-current-directory)) | 525 | (setq dir (dired-current-directory)) |
| 521 | (dired-up-directory other-window) | 526 | (dired-up-directory other-window) |
| @@ -539,10 +544,12 @@ buffer and try again." | |||
| 539 | (dired-omit-mode) | 544 | (dired-omit-mode) |
| 540 | (dired-goto-file file)))))))) | 545 | (dired-goto-file file)))))))) |
| 541 | 546 | ||
| 542 | (defun dired-jump-other-window () | 547 | (defun dired-jump-other-window (&optional file-name) |
| 543 | "Like \\[dired-jump] (`dired-jump') but in other window." | 548 | "Like \\[dired-jump] (`dired-jump') but in other window." |
| 544 | (interactive) | 549 | (interactive |
| 545 | (dired-jump t)) | 550 | (list (and current-prefix-arg |
| 551 | (read-file-name "Jump to dired file: ")))) | ||
| 552 | (dired-jump t file-name)) | ||
| 546 | 553 | ||
| 547 | ;;; OMITTING. | 554 | ;;; OMITTING. |
| 548 | 555 | ||
diff --git a/lisp/dired.el b/lisp/dired.el index 0dc53bf32c4..ae9915698de 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -3974,7 +3974,7 @@ true then the type of the file linked to by FILE is printed instead. | |||
| 3974 | ;;;*** | 3974 | ;;;*** |
| 3975 | 3975 | ||
| 3976 | ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" | 3976 | ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" |
| 3977 | ;;;;;; "2f8d3d5a31b969b181e23c40d6bb16a0") | 3977 | ;;;;;; "6c492aba3ca0d36a4cd7b02fb9c1cc10") |
| 3978 | ;;; Generated autoloads from dired-x.el | 3978 | ;;; Generated autoloads from dired-x.el |
| 3979 | 3979 | ||
| 3980 | (autoload 'dired-jump "dired-x" "\ | 3980 | (autoload 'dired-jump "dired-x" "\ |
| @@ -3983,8 +3983,11 @@ If in a file, dired the current directory and move to file's line. | |||
| 3983 | If in Dired already, pop up a level and goto old directory's line. | 3983 | If in Dired already, pop up a level and goto old directory's line. |
| 3984 | In case the proper dired file line cannot be found, refresh the dired | 3984 | In case the proper dired file line cannot be found, refresh the dired |
| 3985 | buffer and try again. | 3985 | buffer and try again. |
| 3986 | When OTHER-WINDOW is non-nil, jump to dired buffer in other window. | ||
| 3987 | Interactively with prefix argument, read FILE-NAME and | ||
| 3988 | move to its line in dired. | ||
| 3986 | 3989 | ||
| 3987 | \(fn &optional OTHER-WINDOW)" t nil) | 3990 | \(fn &optional OTHER-WINDOW FILE-NAME)" t nil) |
| 3988 | 3991 | ||
| 3989 | (autoload 'dired-do-relsymlink "dired-x" "\ | 3992 | (autoload 'dired-do-relsymlink "dired-x" "\ |
| 3990 | Relative symlink all marked (or next ARG) files into a directory. | 3993 | Relative symlink all marked (or next ARG) files into a directory. |
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index e828325bd0e..1bffcde03d2 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el | |||
| @@ -282,7 +282,7 @@ Not documented | |||
| 282 | ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist | 282 | ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist |
| 283 | ;;;;;; do* do loop return-from return block etypecase typecase ecase | 283 | ;;;;;; do* do loop return-from return block etypecase typecase ecase |
| 284 | ;;;;;; case load-time-value eval-when destructuring-bind function* | 284 | ;;;;;; case load-time-value eval-when destructuring-bind function* |
| 285 | ;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "0faa39d8f21ae59f2cc1baa835e28a5f") | 285 | ;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "fbeedbf769c72fee9b4e0671957c1077") |
| 286 | ;;; Generated autoloads from cl-macs.el | 286 | ;;; Generated autoloads from cl-macs.el |
| 287 | 287 | ||
| 288 | (autoload 'gensym "cl-macs" "\ | 288 | (autoload 'gensym "cl-macs" "\ |
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 57870b19066..444178edb0c 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el | |||
| @@ -1813,6 +1813,7 @@ Example: | |||
| 1813 | (defsetf window-height () (store) | 1813 | (defsetf window-height () (store) |
| 1814 | (list 'progn (list 'enlarge-window (list '- store '(window-height))) store)) | 1814 | (list 'progn (list 'enlarge-window (list '- store '(window-height))) store)) |
| 1815 | (defsetf window-hscroll set-window-hscroll) | 1815 | (defsetf window-hscroll set-window-hscroll) |
| 1816 | (defsetf window-parameter set-window-parameter) | ||
| 1816 | (defsetf window-point set-window-point) | 1817 | (defsetf window-point set-window-point) |
| 1817 | (defsetf window-start set-window-start) | 1818 | (defsetf window-start set-window-start) |
| 1818 | (defsetf window-width () (store) | 1819 | (defsetf window-width () (store) |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 395cca72a93..26543c4048a 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2010-05-20 Kevin Ryde <user42@zip.com.au> | ||
| 2 | |||
| 3 | * gnus-start.el (gnus-level-unsubscribed): Doc fix. (Bug#6206) | ||
| 4 | |||
| 1 | 2010-05-14 Katsumi Yamaoka <yamaoka@jpl.org> | 5 | 2010-05-14 Katsumi Yamaoka <yamaoka@jpl.org> |
| 2 | 6 | ||
| 3 | * gnus-sum.el (gnus-summary-save-article): Don't bother to re-fetch | 7 | * gnus-sum.el (gnus-summary-save-article): Don't bother to re-fetch |
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index ff51530457f..9ef251f2147 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el | |||
| @@ -181,7 +181,7 @@ Groups with levels less than `gnus-level-subscribed', which | |||
| 181 | should be less than this variable, are subscribed. Groups with | 181 | should be less than this variable, are subscribed. Groups with |
| 182 | levels from `gnus-level-subscribed' (exclusive) upto this | 182 | levels from `gnus-level-subscribed' (exclusive) upto this |
| 183 | variable (inclusive) are unsubscribed. See also | 183 | variable (inclusive) are unsubscribed. See also |
| 184 | `gnus-level-zombie', `gnus-level-killed' and the Info node `Group | 184 | `gnus-level-zombie', `gnus-level-killed' and the Info node `(gnus)Group |
| 185 | Levels' for details.") | 185 | Levels' for details.") |
| 186 | 186 | ||
| 187 | (defconst gnus-level-zombie 8 | 187 | (defconst gnus-level-zombie 8 |
diff --git a/lisp/help-mode.el b/lisp/help-mode.el index bad4ae94e2a..f115e425325 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el | |||
| @@ -433,7 +433,9 @@ that." | |||
| 433 | (let ((data (match-string 2))) | 433 | (let ((data (match-string 2))) |
| 434 | (save-match-data | 434 | (save-match-data |
| 435 | (unless (string-match "^([^)]+)" data) | 435 | (unless (string-match "^([^)]+)" data) |
| 436 | (setq data (concat "(emacs)" data)))) | 436 | (setq data (concat "(emacs)" data))) |
| 437 | (setq data ;; possible newlines if para filled | ||
| 438 | (replace-regexp-in-string "[ \t\n]+" " " data t t))) | ||
| 437 | (help-xref-button 2 'help-info data)))) | 439 | (help-xref-button 2 'help-info data)))) |
| 438 | ;; URLs | 440 | ;; URLs |
| 439 | (save-excursion | 441 | (save-excursion |
diff --git a/lisp/image-mode.el b/lisp/image-mode.el index dfc96bb4a16..f1323563d5d 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el | |||
| @@ -448,7 +448,7 @@ Remove text properties that display the image." | |||
| 448 | 448 | ||
| 449 | (defvar archive-superior-buffer) | 449 | (defvar archive-superior-buffer) |
| 450 | (defvar tar-superior-buffer) | 450 | (defvar tar-superior-buffer) |
| 451 | (declare-function image-refresh "image.c" (spec &optional frame)) | 451 | (declare-function image-flush "image.c" (spec &optional frame)) |
| 452 | 452 | ||
| 453 | (defun image-toggle-display-image () | 453 | (defun image-toggle-display-image () |
| 454 | "Show the image of the image file. | 454 | "Show the image of the image file. |
| @@ -477,7 +477,7 @@ was inserted." | |||
| 477 | (inhibit-read-only t) | 477 | (inhibit-read-only t) |
| 478 | (buffer-undo-list t) | 478 | (buffer-undo-list t) |
| 479 | (modified (buffer-modified-p))) | 479 | (modified (buffer-modified-p))) |
| 480 | (image-refresh image) | 480 | (image-flush image) |
| 481 | (let ((buffer-file-truename nil)) ; avoid changing dir mtime by lock_file | 481 | (let ((buffer-file-truename nil)) ; avoid changing dir mtime by lock_file |
| 482 | (add-text-properties (point-min) (point-max) props) | 482 | (add-text-properties (point-min) (point-max) props) |
| 483 | (restore-buffer-modified-p modified)) | 483 | (restore-buffer-modified-p modified)) |
diff --git a/lisp/image.el b/lisp/image.el index 67c1ad946b1..b3a0f1a8a7d 100644 --- a/lisp/image.el +++ b/lisp/image.el | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | "Image support." | 30 | "Image support." |
| 31 | :group 'multimedia) | 31 | :group 'multimedia) |
| 32 | 32 | ||
| 33 | (defalias 'image-refresh 'image-flush) | ||
| 33 | 34 | ||
| 34 | (defconst image-type-header-regexps | 35 | (defconst image-type-header-regexps |
| 35 | `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) | 36 | `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) |
diff --git a/lisp/indent.el b/lisp/indent.el index adecbfaeb12..c1da4a46b9c 100644 --- a/lisp/indent.el +++ b/lisp/indent.el | |||
| @@ -431,7 +431,11 @@ column to indent to; if it is nil, use one of the three methods above." | |||
| 431 | (or (eolp) | 431 | (or (eolp) |
| 432 | (indent-to column 0)) | 432 | (indent-to column 0)) |
| 433 | (forward-line 1)) | 433 | (forward-line 1)) |
| 434 | (move-marker end nil)))) | 434 | (move-marker end nil))) |
| 435 | ;; In most cases, reindenting modifies the buffer, but it may also | ||
| 436 | ;; leave it unmodified, in which case we have to deactivate the mark | ||
| 437 | ;; by hand. | ||
| 438 | (deactivate-mark)) | ||
| 435 | 439 | ||
| 436 | (defun indent-relative-maybe () | 440 | (defun indent-relative-maybe () |
| 437 | "Indent a new line like previous nonblank line. | 441 | "Indent a new line like previous nonblank line. |
diff --git a/lisp/isearch.el b/lisp/isearch.el index 64cb66bdab5..ea5836edc4d 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -156,6 +156,9 @@ command history." | |||
| 156 | (defvar isearch-mode-hook nil | 156 | (defvar isearch-mode-hook nil |
| 157 | "Function(s) to call after starting up an incremental search.") | 157 | "Function(s) to call after starting up an incremental search.") |
| 158 | 158 | ||
| 159 | (defvar isearch-update-post-hook nil | ||
| 160 | "Function(s) to call after isearch has found matches in the buffer.") | ||
| 161 | |||
| 159 | (defvar isearch-mode-end-hook nil | 162 | (defvar isearch-mode-end-hook nil |
| 160 | "Function(s) to call after terminating an incremental search. | 163 | "Function(s) to call after terminating an incremental search. |
| 161 | When these functions are called, `isearch-mode-end-hook-quit' | 164 | When these functions are called, `isearch-mode-end-hook-quit' |
| @@ -460,7 +463,9 @@ This is like `describe-bindings', but displays only Isearch keys." | |||
| 460 | (define-key map "\M-\C-y" 'isearch-yank-char) | 463 | (define-key map "\M-\C-y" 'isearch-yank-char) |
| 461 | (define-key map "\C-y" 'isearch-yank-line) | 464 | (define-key map "\C-y" 'isearch-yank-line) |
| 462 | 465 | ||
| 463 | (define-key map "\C-h" isearch-help-map) | 466 | (define-key map (char-to-string help-char) isearch-help-map) |
| 467 | (define-key map [help] isearch-help-map) | ||
| 468 | (define-key map [f1] isearch-help-map) | ||
| 464 | 469 | ||
| 465 | (define-key map "\M-n" 'isearch-ring-advance) | 470 | (define-key map "\M-n" 'isearch-ring-advance) |
| 466 | (define-key map "\M-p" 'isearch-ring-retreat) | 471 | (define-key map "\M-p" 'isearch-ring-retreat) |
| @@ -868,7 +873,8 @@ It is called by the function `isearch-forward' and other related functions." | |||
| 868 | (isearch-lazy-highlight-new-loop)) | 873 | (isearch-lazy-highlight-new-loop)) |
| 869 | ;; We must prevent the point moving to the end of composition when a | 874 | ;; We must prevent the point moving to the end of composition when a |
| 870 | ;; part of the composition has just been searched. | 875 | ;; part of the composition has just been searched. |
| 871 | (setq disable-point-adjustment t)) | 876 | (setq disable-point-adjustment t) |
| 877 | (run-hooks 'isearch-update-post-hook)) | ||
| 872 | 878 | ||
| 873 | (defun isearch-done (&optional nopush edit) | 879 | (defun isearch-done (&optional nopush edit) |
| 874 | "Exit Isearch mode. | 880 | "Exit Isearch mode. |
| @@ -1476,14 +1482,10 @@ If search string is empty, just beep." | |||
| 1476 | (eq 'not-yanks search-upper-case)) | 1482 | (eq 'not-yanks search-upper-case)) |
| 1477 | (setq string (downcase string))) | 1483 | (setq string (downcase string))) |
| 1478 | (if isearch-regexp (setq string (regexp-quote string))) | 1484 | (if isearch-regexp (setq string (regexp-quote string))) |
| 1479 | (setq isearch-string (concat isearch-string string) | 1485 | ;; Don't move cursor in reverse search. |
| 1480 | isearch-message | 1486 | (setq isearch-yank-flag t) |
| 1481 | (concat isearch-message | 1487 | (isearch-process-search-string |
| 1482 | (mapconcat 'isearch-text-char-description | 1488 | string (mapconcat 'isearch-text-char-description string ""))) |
| 1483 | string "")) | ||
| 1484 | ;; Don't move cursor in reverse search. | ||
| 1485 | isearch-yank-flag t) | ||
| 1486 | (isearch-search-and-update)) | ||
| 1487 | 1489 | ||
| 1488 | (defun isearch-yank-kill () | 1490 | (defun isearch-yank-kill () |
| 1489 | "Pull string from kill ring into search string." | 1491 | "Pull string from kill ring into search string." |
| @@ -1538,14 +1540,18 @@ or it might return the position of the end of the line." | |||
| 1538 | (interactive "p") | 1540 | (interactive "p") |
| 1539 | (isearch-yank-internal (lambda () (forward-char arg) (point)))) | 1541 | (isearch-yank-internal (lambda () (forward-char arg) (point)))) |
| 1540 | 1542 | ||
| 1543 | (declare-function subword-forward "subword" (&optional arg)) | ||
| 1541 | (defun isearch-yank-word-or-char () | 1544 | (defun isearch-yank-word-or-char () |
| 1542 | "Pull next character or word from buffer into search string." | 1545 | "Pull next character, subword or word from buffer into search string. |
| 1546 | Subword is used when `subword-mode' is activated. " | ||
| 1543 | (interactive) | 1547 | (interactive) |
| 1544 | (isearch-yank-internal | 1548 | (isearch-yank-internal |
| 1545 | (lambda () | 1549 | (lambda () |
| 1546 | (if (or (= (char-syntax (or (char-after) 0)) ?w) | 1550 | (if (or (= (char-syntax (or (char-after) 0)) ?w) |
| 1547 | (= (char-syntax (or (char-after (1+ (point))) 0)) ?w)) | 1551 | (= (char-syntax (or (char-after (1+ (point))) 0)) ?w)) |
| 1548 | (forward-word 1) | 1552 | (if (and (boundp 'subword-mode) subword-mode) |
| 1553 | (subword-forward 1) | ||
| 1554 | (forward-word 1)) | ||
| 1549 | (forward-char 1)) (point)))) | 1555 | (forward-char 1)) (point)))) |
| 1550 | 1556 | ||
| 1551 | (defun isearch-yank-word () | 1557 | (defun isearch-yank-word () |
diff --git a/lisp/loadup.el b/lisp/loadup.el index 36bf8dea082..b087aa79040 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el | |||
| @@ -54,7 +54,7 @@ | |||
| 54 | (equal (nth 3 command-line-args) "unidata-gen.el") | 54 | (equal (nth 3 command-line-args) "unidata-gen.el") |
| 55 | (equal (nth 4 command-line-args) "unidata-gen-files") | 55 | (equal (nth 4 command-line-args) "unidata-gen-files") |
| 56 | ;; In case CANNOT_DUMP. | 56 | ;; In case CANNOT_DUMP. |
| 57 | (equal (nth 0 command-line-args) "../src/bootstrap-emacs")) | 57 | (string-match "src/bootstrap-emacs" (nth 0 command-line-args))) |
| 58 | (let ((dir (car load-path))) | 58 | (let ((dir (car load-path))) |
| 59 | ;; We'll probably overflow the pure space. | 59 | ;; We'll probably overflow the pure space. |
| 60 | (setq purify-flag nil) | 60 | (setq purify-flag nil) |
diff --git a/lisp/locate.el b/lisp/locate.el index d0021dfed22..f1983a3e18a 100644 --- a/lisp/locate.el +++ b/lisp/locate.el | |||
| @@ -326,7 +326,7 @@ ARG is the interactive prefix arg." | |||
| 326 | (locate-do-setup search-string) | 326 | (locate-do-setup search-string) |
| 327 | )) | 327 | )) |
| 328 | (and (not (string-equal (buffer-name) locate-buffer-name)) | 328 | (and (not (string-equal (buffer-name) locate-buffer-name)) |
| 329 | (switch-to-buffer-other-window locate-buffer-name)) | 329 | (pop-to-buffer locate-buffer-name)) |
| 330 | 330 | ||
| 331 | (run-hooks 'dired-mode-hook) | 331 | (run-hooks 'dired-mode-hook) |
| 332 | (dired-next-line 3) ;move to first matching file. | 332 | (dired-next-line 3) ;move to first matching file. |
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index e3c9599b873..29a49c45a38 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2010-05-14 Peter S Galbraith <psg@debian.org> | ||
| 2 | |||
| 3 | * mh-mime.el (mh-decode-message-subject): New function to decode | ||
| 4 | RFC2047 encoded Subject lines. Used for reply drafts. | ||
| 5 | * mh-comp.el (mh-compose-and-send-mail): Call | ||
| 6 | `mh-decode-message-subject' on (reply or forward) message drafts. | ||
| 7 | |||
| 1 | 2010-05-07 Chong Yidong <cyd@stupidchicken.com> | 8 | 2010-05-07 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 9 | ||
| 3 | * Version 23.2 released. | 10 | * Version 23.2 released. |
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index 3bb1e343253..762aad86080 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el | |||
| @@ -905,6 +905,9 @@ letter." | |||
| 905 | (mh-identity-make-menu) | 905 | (mh-identity-make-menu) |
| 906 | (mh-identity-add-menu) | 906 | (mh-identity-add-menu) |
| 907 | 907 | ||
| 908 | ;; Cleanup possibly RFC2047 encoded subject header | ||
| 909 | (mh-decode-message-subject) | ||
| 910 | |||
| 908 | ;; Insert extra fields. | 911 | ;; Insert extra fields. |
| 909 | (mh-insert-x-mailer) | 912 | (mh-insert-x-mailer) |
| 910 | (mh-insert-x-face) | 913 | (mh-insert-x-face) |
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el index a60f31e3ac2..8d47af40ebd 100644 --- a/lisp/mh-e/mh-mime.el +++ b/lisp/mh-e/mh-mime.el | |||
| @@ -508,6 +508,15 @@ decoding the same message multiple times." | |||
| 508 | (rfc2047-decode-region (point-min) (mh-mail-header-end))))) | 508 | (rfc2047-decode-region (point-min) (mh-mail-header-end))))) |
| 509 | 509 | ||
| 510 | ;;;###mh-autoload | 510 | ;;;###mh-autoload |
| 511 | (defun mh-decode-message-subject () | ||
| 512 | "Decode RFC2047 encoded message header fields." | ||
| 513 | (when mh-decode-mime-flag | ||
| 514 | (save-excursion | ||
| 515 | (let ((buffer-read-only nil)) | ||
| 516 | (rfc2047-decode-region (progn (mh-goto-header-field "subject:") (point)) | ||
| 517 | (progn (mh-header-field-end) (point))))))) | ||
| 518 | |||
| 519 | ;;;###mh-autoload | ||
| 511 | (defun mh-mime-display (&optional pre-dissected-handles) | 520 | (defun mh-mime-display (&optional pre-dissected-handles) |
| 512 | "Display (and possibly decode) MIME handles. | 521 | "Display (and possibly decode) MIME handles. |
| 513 | Optional argument, PRE-DISSECTED-HANDLES is a list of MIME | 522 | Optional argument, PRE-DISSECTED-HANDLES is a list of MIME |
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el index a7225d663e3..4487407971f 100644 --- a/lisp/net/secrets.el +++ b/lisp/net/secrets.el | |||
| @@ -151,11 +151,11 @@ | |||
| 151 | 151 | ||
| 152 | (require 'dbus) | 152 | (require 'dbus) |
| 153 | 153 | ||
| 154 | (declare-function tree-widget-set-theme "tree-widget") | 154 | (autoload 'tree-widget-set-theme "tree-widget") |
| 155 | (declare-function widget-create-child-and-convert "wid-edit") | 155 | (autoload 'widget-create-child-and-convert "wid-edit") |
| 156 | (declare-function widget-default-value-set "wid-edit") | 156 | (autoload 'widget-default-value-set "wid-edit") |
| 157 | (declare-function widget-field-end "wid-edit") | 157 | (autoload 'widget-field-end "wid-edit") |
| 158 | (declare-function widget-member "wid-edit") | 158 | (autoload 'widget-member "wid-edit") |
| 159 | (defvar tree-widget-after-toggle-functions) | 159 | (defvar tree-widget-after-toggle-functions) |
| 160 | 160 | ||
| 161 | (defvar secrets-enabled nil | 161 | (defvar secrets-enabled nil |
| @@ -563,7 +563,7 @@ The object paths of the found items are returned as list." | |||
| 563 | (setq props (add-to-list | 563 | (setq props (add-to-list |
| 564 | 'props | 564 | 'props |
| 565 | (list :dict-entry | 565 | (list :dict-entry |
| 566 | (symbol-name (car attributes)) | 566 | (substring (symbol-name (car attributes)) 1) |
| 567 | (cadr attributes)) | 567 | (cadr attributes)) |
| 568 | 'append) | 568 | 'append) |
| 569 | attributes (cddr attributes))) | 569 | attributes (cddr attributes))) |
| @@ -601,7 +601,7 @@ The object path of the created item is returned." | |||
| 601 | (setq props (add-to-list | 601 | (setq props (add-to-list |
| 602 | 'props | 602 | 'props |
| 603 | (list :dict-entry | 603 | (list :dict-entry |
| 604 | (symbol-name (car attributes)) | 604 | (substring (symbol-name (car attributes)) 1) |
| 605 | (cadr attributes)) | 605 | (cadr attributes)) |
| 606 | 'append) | 606 | 'append) |
| 607 | attributes (cddr attributes))) | 607 | attributes (cddr attributes))) |
| @@ -656,7 +656,8 @@ If there is no such item, or the item has no attributes, return nil." | |||
| 656 | (let ((item-path (secrets-item-path collection item))) | 656 | (let ((item-path (secrets-item-path collection item))) |
| 657 | (unless (secrets-empty-path item-path) | 657 | (unless (secrets-empty-path item-path) |
| 658 | (mapcar | 658 | (mapcar |
| 659 | (lambda (attribute) (cons (intern (car attribute)) (cadr attribute))) | 659 | (lambda (attribute) |
| 660 | (cons (intern (concat ":" (car attribute))) (cadr attribute))) | ||
| 660 | (dbus-get-property | 661 | (dbus-get-property |
| 661 | :session secrets-service item-path | 662 | :session secrets-service item-path |
| 662 | secrets-interface-item "Attributes"))))) | 663 | secrets-interface-item "Attributes"))))) |
| @@ -678,13 +679,10 @@ If there is no such item, or the item doesn't own this attribute, return nil." | |||
| 678 | ;;; Visualization. | 679 | ;;; Visualization. |
| 679 | 680 | ||
| 680 | (define-derived-mode secrets-mode nil "Secrets" | 681 | (define-derived-mode secrets-mode nil "Secrets" |
| 681 | "Major mode for presenting search results of a Xesam search. | 682 | "Major mode for presenting password entries retrieved by Security Service. |
| 682 | In this mode, widgets represent the search results. | 683 | In this mode, widgets represent the search results. |
| 683 | 684 | ||
| 684 | \\{secrets-mode-map} | 685 | \\{secrets-mode-map}" |
| 685 | Turning on Xesam mode runs the normal hook `xesam-mode-hook'. It | ||
| 686 | can be used to set `xesam-notify-function', which must a search | ||
| 687 | engine specific, widget :notify function to visualize xesam:url." | ||
| 688 | ;; Keymap. | 686 | ;; Keymap. |
| 689 | (setq secrets-mode-map (copy-keymap special-mode-map)) | 687 | (setq secrets-mode-map (copy-keymap special-mode-map)) |
| 690 | (set-keymap-parent secrets-mode-map widget-keymap) | 688 | (set-keymap-parent secrets-mode-map widget-keymap) |
| @@ -707,19 +705,27 @@ engine specific, widget :notify function to visualize xesam:url." | |||
| 707 | ;; keymap etc. So we create a dummy buffer. Stupid. | 705 | ;; keymap etc. So we create a dummy buffer. Stupid. |
| 708 | (with-temp-buffer (secrets-mode)) | 706 | (with-temp-buffer (secrets-mode)) |
| 709 | 707 | ||
| 710 | ;;;###autoload | 708 | ;; We autoload `secrets-show-secrets' only on systems with D-Bus support. |
| 709 | ;;;###autoload(when (featurep 'dbusbind) | ||
| 710 | ;;;###autoload (autoload 'secrets-show-secrets "secrets" nil t)) | ||
| 711 | |||
| 711 | (defun secrets-show-secrets () | 712 | (defun secrets-show-secrets () |
| 712 | "Display a list of collections from the Secret Service API. | 713 | "Display a list of collections from the Secret Service API. |
| 713 | The collections are in tree view, that means they can be expanded | 714 | The collections are in tree view, that means they can be expanded |
| 714 | to the corresponding secret items, which could also be expanded | 715 | to the corresponding secret items, which could also be expanded |
| 715 | to their attributes." | 716 | to their attributes." |
| 716 | (interactive) | 717 | (interactive) |
| 717 | ;; Create the search buffer. | 718 | |
| 718 | (with-current-buffer (get-buffer-create "*Secrets*") | 719 | ;; Check, whether the Secret Service API is enabled. |
| 719 | (switch-to-buffer-other-window (current-buffer)) | 720 | (if (null secrets-enabled) |
| 720 | ;; Inialize buffer with `secrets-mode'. | 721 | (message "Secret Service not available") |
| 721 | (secrets-mode) | 722 | |
| 722 | (secrets-show-collections))) | 723 | ;; Create the search buffer. |
| 724 | (with-current-buffer (get-buffer-create "*Secrets*") | ||
| 725 | (switch-to-buffer-other-window (current-buffer)) | ||
| 726 | ;; Inialize buffer with `secrets-mode'. | ||
| 727 | (secrets-mode) | ||
| 728 | (secrets-show-collections)))) | ||
| 723 | 729 | ||
| 724 | (defun secrets-show-collections () | 730 | (defun secrets-show-collections () |
| 725 | "Show all available collections." | 731 | "Show all available collections." |
| @@ -757,14 +763,14 @@ to their attributes." | |||
| 757 | (attributes (secrets-get-attributes coll item)) | 763 | (attributes (secrets-get-attributes coll item)) |
| 758 | ;; padding is needed to format attribute names. | 764 | ;; padding is needed to format attribute names. |
| 759 | (padding | 765 | (padding |
| 760 | (1+ | 766 | (apply |
| 761 | (apply | 767 | 'max |
| 762 | 'max | 768 | (cons |
| 763 | (cons | 769 | (1+ (length "password")) |
| 764 | (length "password") | 770 | (mapcar |
| 765 | (mapcar | 771 | ;; Atribute names have a leading ":", which will be suppressed. |
| 766 | (lambda (attribute) (length (symbol-name (car attribute)))) | 772 | (lambda (attribute) (length (symbol-name (car attribute)))) |
| 767 | attributes)))))) | 773 | attributes))))) |
| 768 | (cons | 774 | (cons |
| 769 | ;; The password widget. | 775 | ;; The password widget. |
| 770 | `(editable-field :tag "password" | 776 | `(editable-field :tag "password" |
| @@ -779,7 +785,7 @@ to their attributes." | |||
| 779 | "%v\n")) | 785 | "%v\n")) |
| 780 | (mapcar | 786 | (mapcar |
| 781 | (lambda (attribute) | 787 | (lambda (attribute) |
| 782 | (let ((name (symbol-name (car attribute))) | 788 | (let ((name (substring (symbol-name (car attribute)) 1)) |
| 783 | (value (cdr attribute))) | 789 | (value (cdr attribute))) |
| 784 | ;; The attribute widget. | 790 | ;; The attribute widget. |
| 785 | `(editable-field :tag ,name | 791 | `(editable-field :tag ,name |
diff --git a/lisp/net/tramp-fish.el b/lisp/net/tramp-fish.el index dd1947d5f1e..c7617252288 100644 --- a/lisp/net/tramp-fish.el +++ b/lisp/net/tramp-fish.el | |||
| @@ -149,9 +149,12 @@ | |||
| 149 | ;; parameter of `write-region'. Transfer of binary data fails due to | 149 | ;; parameter of `write-region'. Transfer of binary data fails due to |
| 150 | ;; Emacs' process input/output handling. | 150 | ;; Emacs' process input/output handling. |
| 151 | 151 | ||
| 152 | |||
| 153 | ;;; Code: | 152 | ;;; Code: |
| 154 | 153 | ||
| 154 | (eval-when-compile | ||
| 155 | ;; Pacify byte-compiler. | ||
| 156 | (require 'cl)) | ||
| 157 | |||
| 155 | (require 'tramp) | 158 | (require 'tramp) |
| 156 | (require 'tramp-cache) | 159 | (require 'tramp-cache) |
| 157 | (require 'tramp-compat) | 160 | (require 'tramp-compat) |
| @@ -487,13 +490,13 @@ pass to the OPERATION." | |||
| 487 | v 'file-error | 490 | v 'file-error |
| 488 | "Cannot make local copy of non-existing file `%s'" filename)) | 491 | "Cannot make local copy of non-existing file `%s'" filename)) |
| 489 | (let ((tmpfile (tramp-compat-make-temp-file filename))) | 492 | (let ((tmpfile (tramp-compat-make-temp-file filename))) |
| 490 | (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile) | 493 | (with-progress-reporter |
| 491 | (when (tramp-fish-retrieve-data v) | 494 | v 3 (format "Fetching %s to tmp file %s" filename tmpfile) |
| 492 | ;; Save file | 495 | (when (tramp-fish-retrieve-data v) |
| 493 | (with-current-buffer (tramp-get-buffer v) | 496 | ;; Save file |
| 494 | (write-region (point-min) (point-max) tmpfile)) | 497 | (with-current-buffer (tramp-get-buffer v) |
| 495 | (tramp-message v 4 "Fetching %s to tmp file %s...done" filename tmpfile) | 498 | (write-region (point-min) (point-max) tmpfile)) |
| 496 | tmpfile)))) | 499 | tmpfile))))) |
| 497 | 500 | ||
| 498 | ;; This function should return "foo/" for directories and "bar" for | 501 | ;; This function should return "foo/" for directories and "bar" for |
| 499 | ;; files. | 502 | ;; files. |
| @@ -591,17 +594,16 @@ WILDCARD and FULL-DIRECTORY-P are not handled." | |||
| 591 | 594 | ||
| 592 | (let ((point (point)) | 595 | (let ((point (point)) |
| 593 | size) | 596 | size) |
| 594 | (tramp-message v 4 "Fetching file %s..." filename) | 597 | (with-progress-reporter v 3 (format "Fetching file %s" filename) |
| 595 | (when (tramp-fish-retrieve-data v) | 598 | (when (tramp-fish-retrieve-data v) |
| 596 | ;; Insert file | 599 | ;; Insert file |
| 597 | (insert | 600 | (insert |
| 598 | (with-current-buffer (tramp-get-buffer v) | 601 | (with-current-buffer (tramp-get-buffer v) |
| 599 | (let ((beg (or beg (point-min))) | 602 | (let ((beg (or beg (point-min))) |
| 600 | (end (min (or end (point-max)) (point-max)))) | 603 | (end (min (or end (point-max)) (point-max)))) |
| 601 | (setq size (- end beg)) | 604 | (setq size (- end beg)) |
| 602 | (buffer-substring beg end)))) | 605 | (buffer-substring beg end)))) |
| 603 | (goto-char point)) | 606 | (goto-char point))) |
| 604 | (tramp-message v 4 "Fetching file %s...done" filename) | ||
| 605 | 607 | ||
| 606 | (list (expand-file-name filename) size))))) | 608 | (list (expand-file-name filename) size))))) |
| 607 | 609 | ||
| @@ -1115,34 +1117,36 @@ connection if a previous connection has died for some reason." | |||
| 1115 | (delete-process p)) | 1117 | (delete-process p)) |
| 1116 | (setenv "TERM" tramp-terminal-type) | 1118 | (setenv "TERM" tramp-terminal-type) |
| 1117 | (setenv "PS1" tramp-initial-end-of-output) | 1119 | (setenv "PS1" tramp-initial-end-of-output) |
| 1118 | (tramp-message | 1120 | (with-progress-reporter |
| 1119 | vec 3 "Opening connection for %s@%s using %s..." | 1121 | vec 3 |
| 1120 | tramp-current-user tramp-current-host tramp-current-method) | 1122 | (format "Opening connection for %s@%s using %s" |
| 1121 | 1123 | tramp-current-user tramp-current-host tramp-current-method) | |
| 1122 | (let* ((process-connection-type tramp-process-connection-type) | 1124 | |
| 1123 | (inhibit-eol-conversion nil) | 1125 | (let* ((process-connection-type tramp-process-connection-type) |
| 1124 | (coding-system-for-read 'binary) | 1126 | (inhibit-eol-conversion nil) |
| 1125 | (coding-system-for-write 'binary) | 1127 | (coding-system-for-read 'binary) |
| 1126 | ;; This must be done in order to avoid our file name handler. | 1128 | (coding-system-for-write 'binary) |
| 1127 | (p (let ((default-directory | 1129 | ;; This must be done in order to avoid our file name handler. |
| 1128 | (tramp-compat-temporary-file-directory))) | 1130 | (p (let ((default-directory |
| 1129 | (start-process | 1131 | (tramp-compat-temporary-file-directory))) |
| 1130 | (or (tramp-get-connection-property vec "process-name" nil) | 1132 | (start-process |
| 1131 | (tramp-buffer-name vec)) | 1133 | (or (tramp-get-connection-property vec "process-name" nil) |
| 1132 | (tramp-get-connection-buffer vec) | 1134 | (tramp-buffer-name vec)) |
| 1133 | "ssh" "-l" | 1135 | (tramp-get-connection-buffer vec) |
| 1134 | (tramp-file-name-user vec) | 1136 | "ssh" "-l" |
| 1135 | (tramp-file-name-host vec))))) | 1137 | (tramp-file-name-user vec) |
| 1136 | (tramp-message vec 6 "%s" (mapconcat 'identity (process-command p) " ")) | 1138 | (tramp-file-name-host vec))))) |
| 1137 | 1139 | (tramp-message | |
| 1138 | ;; Check whether process is alive. | 1140 | vec 6 "%s" (mapconcat 'identity (process-command p) " ")) |
| 1139 | (tramp-set-process-query-on-exit-flag p nil) | 1141 | |
| 1140 | 1142 | ;; Check whether process is alive. | |
| 1141 | (tramp-process-actions p vec tramp-actions-before-shell 60) | 1143 | (tramp-set-process-query-on-exit-flag p nil) |
| 1142 | (tramp-fish-send-command vec tramp-fish-start-fish-server-command) | 1144 | |
| 1143 | (tramp-message | 1145 | (tramp-process-actions p vec tramp-actions-before-shell 60) |
| 1144 | vec 3 | 1146 | (tramp-fish-send-command vec tramp-fish-start-fish-server-command) |
| 1145 | "Found remote shell prompt on `%s'" (tramp-file-name-host vec)))))) | 1147 | (tramp-message |
| 1148 | vec 3 | ||
| 1149 | "Found remote shell prompt on `%s'" (tramp-file-name-host vec))))))) | ||
| 1146 | 1150 | ||
| 1147 | (defun tramp-fish-send-command (vec command) | 1151 | (defun tramp-fish-send-command (vec command) |
| 1148 | "Send the COMMAND to connection VEC." | 1152 | "Send the COMMAND to connection VEC." |
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 0851f3fe86c..6607dae32f5 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el | |||
| @@ -1067,65 +1067,58 @@ connection if a previous connection has died for some reason." | |||
| 1067 | (tramp-gvfs-object-path | 1067 | (tramp-gvfs-object-path |
| 1068 | (tramp-make-tramp-file-name method user host "")))) | 1068 | (tramp-make-tramp-file-name method user host "")))) |
| 1069 | 1069 | ||
| 1070 | (if (zerop (length (tramp-file-name-user vec))) | 1070 | (with-progress-reporter |
| 1071 | (tramp-message | 1071 | vec 3 |
| 1072 | vec 3 "Opening connection for %s using %s..." host method) | 1072 | (if (zerop (length user)) |
| 1073 | (tramp-message | 1073 | (format "Opening connection for %s using %s" host method) |
| 1074 | vec 3 "Opening connection for %s@%s using %s..." user host method)) | 1074 | (format "Opening connection for %s@%s using %s" user host method)) |
| 1075 | 1075 | ||
| 1076 | ;; Enable auth-sorce and password-cache. | 1076 | ;; Enable auth-sorce and password-cache. |
| 1077 | (tramp-set-connection-property vec "first-password-request" t) | 1077 | (tramp-set-connection-property vec "first-password-request" t) |
| 1078 | 1078 | ||
| 1079 | ;; There will be a callback of "askPassword", when a password is | 1079 | ;; There will be a callback of "askPassword", when a password is |
| 1080 | ;; needed. | 1080 | ;; needed. |
| 1081 | (dbus-register-method | 1081 | (dbus-register-method |
| 1082 | :session dbus-service-emacs object-path | 1082 | :session dbus-service-emacs object-path |
| 1083 | tramp-gvfs-interface-mountoperation "askPassword" | 1083 | tramp-gvfs-interface-mountoperation "askPassword" |
| 1084 | 'tramp-gvfs-handler-askpassword) | 1084 | 'tramp-gvfs-handler-askpassword) |
| 1085 | 1085 | ||
| 1086 | ;; There could be a callback of "askQuestion", when adding fingerprint. | 1086 | ;; There could be a callback of "askQuestion", when adding fingerprint. |
| 1087 | (dbus-register-method | 1087 | (dbus-register-method |
| 1088 | :session dbus-service-emacs object-path | 1088 | :session dbus-service-emacs object-path |
| 1089 | tramp-gvfs-interface-mountoperation "askQuestion" | 1089 | tramp-gvfs-interface-mountoperation "askQuestion" |
| 1090 | 'tramp-gvfs-handler-askquestion) | 1090 | 'tramp-gvfs-handler-askquestion) |
| 1091 | 1091 | ||
| 1092 | ;; The call must be asynchronously, because of the "askPassword" | 1092 | ;; The call must be asynchronously, because of the "askPassword" |
| 1093 | ;; or "askQuestion"callbacks. | 1093 | ;; or "askQuestion"callbacks. |
| 1094 | (with-tramp-dbus-call-method vec nil | 1094 | (with-tramp-dbus-call-method vec nil |
| 1095 | :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker | 1095 | :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker |
| 1096 | tramp-gvfs-interface-mounttracker "mountLocation" | 1096 | tramp-gvfs-interface-mounttracker "mountLocation" |
| 1097 | `(:struct | 1097 | `(:struct |
| 1098 | ,(dbus-string-to-byte-array "/") | 1098 | ,(dbus-string-to-byte-array "/") |
| 1099 | ,(tramp-gvfs-mount-spec vec)) | 1099 | ,(tramp-gvfs-mount-spec vec)) |
| 1100 | (dbus-get-unique-name :session) | 1100 | (dbus-get-unique-name :session) |
| 1101 | :object-path object-path) | 1101 | :object-path object-path) |
| 1102 | 1102 | ||
| 1103 | ;; We must wait, until the mount is applied. This will be | 1103 | ;; We must wait, until the mount is applied. This will be |
| 1104 | ;; indicated by the "mounted" signal, i.e. the "fuse-mountpoint" | 1104 | ;; indicated by the "mounted" signal, i.e. the "fuse-mountpoint" |
| 1105 | ;; file property. | 1105 | ;; file property. |
| 1106 | (with-timeout | 1106 | (with-timeout |
| 1107 | (60 | 1107 | (60 |
| 1108 | (if (zerop (length (tramp-file-name-user vec))) | 1108 | (if (zerop (length (tramp-file-name-user vec))) |
| 1109 | (tramp-error | ||
| 1110 | vec 'file-error | ||
| 1111 | "Timeout reached mounting %s using %s" host method) | ||
| 1109 | (tramp-error | 1112 | (tramp-error |
| 1110 | vec 'file-error | 1113 | vec 'file-error |
| 1111 | "Timeout reached mounting %s using %s" host method) | 1114 | "Timeout reached mounting %s@%s using %s" user host method))) |
| 1112 | (tramp-error | 1115 | (while (not (tramp-get-file-property vec "/" "fuse-mountpoint" nil)) |
| 1113 | vec 'file-error | 1116 | (read-event nil nil 0.1))) |
| 1114 | "Timeout reached mounting %s@%s using %s" user host method))) | 1117 | |
| 1115 | (while (not (tramp-get-file-property vec "/" "fuse-mountpoint" nil)) | 1118 | ;; We set the connection property "started" in order to put the |
| 1116 | (read-event nil nil 0.1))) | 1119 | ;; remote location into the cache, which is helpful for further |
| 1117 | 1120 | ;; completion. | |
| 1118 | ;; We set the connection property "started" in order to put the | 1121 | (tramp-set-connection-property vec "started" t))))) |
| 1119 | ;; remote location into the cache, which is helpful for further | ||
| 1120 | ;; completion. | ||
| 1121 | (tramp-set-connection-property vec "started" t) | ||
| 1122 | |||
| 1123 | (if (zerop (length (tramp-file-name-user vec))) | ||
| 1124 | (tramp-message | ||
| 1125 | vec 3 "Opening connection for %s using %s...done" host method) | ||
| 1126 | (tramp-message | ||
| 1127 | vec 3 | ||
| 1128 | "Opening connection for %s@%s using %s...done" user host method))))) | ||
| 1129 | 1122 | ||
| 1130 | 1123 | ||
| 1131 | ;; D-Bus BLUEZ functions. | 1124 | ;; D-Bus BLUEZ functions. |
diff --git a/lisp/net/tramp-imap.el b/lisp/net/tramp-imap.el index 68e181ae7d5..e1e91365792 100644 --- a/lisp/net/tramp-imap.el +++ b/lisp/net/tramp-imap.el | |||
| @@ -241,32 +241,31 @@ of `copy' and `rename'." | |||
| 241 | (t2 (and (tramp-tramp-file-p newname) | 241 | (t2 (and (tramp-tramp-file-p newname) |
| 242 | (tramp-imap-file-name-p newname)))) | 242 | (tramp-imap-file-name-p newname)))) |
| 243 | 243 | ||
| 244 | (when (and (not ok-if-already-exists) (file-exists-p newname)) | ||
| 245 | (with-parsed-tramp-file-name (if t1 filename newname) nil | ||
| 246 | (tramp-error | ||
| 247 | v 'file-already-exists "File %s already exists" newname))) | ||
| 248 | |||
| 249 | (with-parsed-tramp-file-name (if t1 filename newname) nil | ||
| 250 | (tramp-message v 0 "Transferring %s to %s..." filename newname)) | ||
| 251 | |||
| 252 | ;; We just make a local copy of FILENAME, and write it then to | ||
| 253 | ;; NEWNAME. This must be optimized, when both files are located | ||
| 254 | ;; on the same IMAP server. | ||
| 255 | (with-temp-buffer | ||
| 256 | (if (and t1 t2) | ||
| 257 | ;; We don't encrypt. | ||
| 258 | (with-parsed-tramp-file-name newname nil | ||
| 259 | (insert (tramp-imap-get-file filename nil)) | ||
| 260 | (tramp-imap-put-file | ||
| 261 | v (current-buffer) | ||
| 262 | (tramp-imap-file-name-name v) | ||
| 263 | nil nil (nth 7 (file-attributes filename)))) | ||
| 264 | ;; One of them is not located on a IMAP mailbox. | ||
| 265 | (insert-file-contents filename) | ||
| 266 | (write-region (point-min) (point-max) newname))) | ||
| 267 | |||
| 268 | (with-parsed-tramp-file-name (if t1 filename newname) nil | 244 | (with-parsed-tramp-file-name (if t1 filename newname) nil |
| 269 | (tramp-message v 0 "Transferring %s to %s...done" filename newname)) | 245 | (when (and (not ok-if-already-exists) (file-exists-p newname)) |
| 246 | (tramp-error | ||
| 247 | v 'file-already-exists "File %s already exists" newname)) | ||
| 248 | |||
| 249 | (with-progress-reporter | ||
| 250 | v 0 (format "%s %s to %s" | ||
| 251 | (if (eq op 'copy) "Copying" "Renaming") | ||
| 252 | filename newname) | ||
| 253 | |||
| 254 | ;; We just make a local copy of FILENAME, and write it then to | ||
| 255 | ;; NEWNAME. This must be optimized, when both files are | ||
| 256 | ;; located on the same IMAP server. | ||
| 257 | (with-temp-buffer | ||
| 258 | (if (and t1 t2) | ||
| 259 | ;; We don't encrypt. | ||
| 260 | (with-parsed-tramp-file-name newname v1 | ||
| 261 | (insert (tramp-imap-get-file filename nil)) | ||
| 262 | (tramp-imap-put-file | ||
| 263 | v1 (current-buffer) | ||
| 264 | (tramp-imap-file-name-name v1) | ||
| 265 | nil nil (nth 7 (file-attributes filename)))) | ||
| 266 | ;; One of them is not located on a IMAP mailbox. | ||
| 267 | (insert-file-contents filename) | ||
| 268 | (write-region (point-min) (point-max) newname))))) | ||
| 270 | 269 | ||
| 271 | (when (eq op 'rename) | 270 | (when (eq op 'rename) |
| 272 | (tramp-compat-delete-file filename 'force)))) | 271 | (tramp-compat-delete-file filename 'force)))) |
| @@ -505,17 +504,16 @@ SIZE MODE WEIRD INODE DEVICE)." | |||
| 505 | v 'file-error "File `%s' not found on remote host" filename) | 504 | v 'file-error "File `%s' not found on remote host" filename) |
| 506 | (let ((point (point)) | 505 | (let ((point (point)) |
| 507 | size data) | 506 | size data) |
| 508 | (tramp-message v 4 "Fetching file %s..." filename) | 507 | (with-progress-reporter v 3 (format "Fetching file %s" filename) |
| 509 | (insert (tramp-imap-get-file filename t)) | 508 | (insert (tramp-imap-get-file filename t)) |
| 510 | (setq size (- (point) point)) | 509 | (setq size (- (point) point)) |
| 511 | ;;; TODO: handle ranges. | 510 | ;;; TODO: handle ranges. |
| 512 | ;;; (let ((beg (or beg (point-min))) | 511 | ;;; (let ((beg (or beg (point-min))) |
| 513 | ;;; (end (min (or end (point-max)) (point-max)))) | 512 | ;;; (end (min (or end (point-max)) (point-max)))) |
| 514 | ;;; (setq size (- end beg)) | 513 | ;;; (setq size (- end beg)) |
| 515 | ;;; (buffer-substring beg end)) | 514 | ;;; (buffer-substring beg end)) |
| 516 | (goto-char point) | 515 | (goto-char point) |
| 517 | (tramp-message v 4 "Fetching file %s...done" filename) | 516 | (list (expand-file-name filename) size)))))) |
| 518 | (list (expand-file-name filename) size))))) | ||
| 519 | 517 | ||
| 520 | (defun tramp-imap-handle-file-exists-p (filename) | 518 | (defun tramp-imap-handle-file-exists-p (filename) |
| 521 | "Like `file-exists-p' for Tramp files." | 519 | "Like `file-exists-p' for Tramp files." |
| @@ -588,12 +586,12 @@ SIZE MODE WEIRD INODE DEVICE)." | |||
| 588 | v 'file-error | 586 | v 'file-error |
| 589 | "Cannot make local copy of non-existing file `%s'" filename)) | 587 | "Cannot make local copy of non-existing file `%s'" filename)) |
| 590 | (let ((tmpfile (tramp-compat-make-temp-file filename))) | 588 | (let ((tmpfile (tramp-compat-make-temp-file filename))) |
| 591 | (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile) | 589 | (with-progress-reporter |
| 592 | (with-temp-buffer | 590 | v 3 (format "Fetching %s to tmp file %s" filename tmpfile) |
| 593 | (insert-file-contents filename) | 591 | (with-temp-buffer |
| 594 | (write-region (point-min) (point-max) tmpfile) | 592 | (insert-file-contents filename) |
| 595 | (tramp-message v 4 "Fetching %s to tmp file %s...done" filename tmpfile) | 593 | (write-region (point-min) (point-max) tmpfile) |
| 596 | tmpfile)))) | 594 | tmpfile))))) |
| 597 | 595 | ||
| 598 | (defun tramp-imap-put-file | 596 | (defun tramp-imap-put-file |
| 599 | (vec filename-or-buffer &optional subject inode encode size) | 597 | (vec filename-or-buffer &optional subject inode encode size) |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index c5addae8e5d..d643e85ec24 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -334,6 +334,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 334 | ("scp" (tramp-login-program "ssh") | 334 | ("scp" (tramp-login-program "ssh") |
| 335 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 335 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 336 | ("-e" "none"))) | 336 | ("-e" "none"))) |
| 337 | (tramp-async-args (("-q"))) | ||
| 337 | (tramp-remote-sh "/bin/sh") | 338 | (tramp-remote-sh "/bin/sh") |
| 338 | (tramp-copy-program "scp") | 339 | (tramp-copy-program "scp") |
| 339 | (tramp-copy-args (("-P" "%p") ("-p" "%k") | 340 | (tramp-copy-args (("-P" "%p") ("-p" "%k") |
| @@ -349,6 +350,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 349 | ("scp1" (tramp-login-program "ssh") | 350 | ("scp1" (tramp-login-program "ssh") |
| 350 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 351 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 351 | ("-1" "-e" "none"))) | 352 | ("-1" "-e" "none"))) |
| 353 | (tramp-async-args (("-q"))) | ||
| 352 | (tramp-remote-sh "/bin/sh") | 354 | (tramp-remote-sh "/bin/sh") |
| 353 | (tramp-copy-program "scp") | 355 | (tramp-copy-program "scp") |
| 354 | (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") | 356 | (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") |
| @@ -364,6 +366,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 364 | ("scp2" (tramp-login-program "ssh") | 366 | ("scp2" (tramp-login-program "ssh") |
| 365 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 367 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 366 | ("-2" "-e" "none"))) | 368 | ("-2" "-e" "none"))) |
| 369 | (tramp-async-args (("-q"))) | ||
| 367 | (tramp-remote-sh "/bin/sh") | 370 | (tramp-remote-sh "/bin/sh") |
| 368 | (tramp-copy-program "scp") | 371 | (tramp-copy-program "scp") |
| 369 | (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") | 372 | (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") |
| @@ -399,6 +402,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 399 | ("sftp" (tramp-login-program "ssh") | 402 | ("sftp" (tramp-login-program "ssh") |
| 400 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 403 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 401 | ("-e" "none"))) | 404 | ("-e" "none"))) |
| 405 | (tramp-async-args (("-q"))) | ||
| 402 | (tramp-remote-sh "/bin/sh") | 406 | (tramp-remote-sh "/bin/sh") |
| 403 | (tramp-copy-program "sftp") | 407 | (tramp-copy-program "sftp") |
| 404 | (tramp-copy-args nil) | 408 | (tramp-copy-args nil) |
| @@ -407,6 +411,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 407 | ("rsync" (tramp-login-program "ssh") | 411 | ("rsync" (tramp-login-program "ssh") |
| 408 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 412 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 409 | ("-e" "none"))) | 413 | ("-e" "none"))) |
| 414 | (tramp-async-args (("-q"))) | ||
| 410 | (tramp-remote-sh "/bin/sh") | 415 | (tramp-remote-sh "/bin/sh") |
| 411 | (tramp-copy-program "rsync") | 416 | (tramp-copy-program "rsync") |
| 412 | (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) | 417 | (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) |
| @@ -420,6 +425,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 420 | ("-o" "ControlPath=%t.%%r@%%h:%%p") | 425 | ("-o" "ControlPath=%t.%%r@%%h:%%p") |
| 421 | ("-o" "ControlMaster=yes") | 426 | ("-o" "ControlMaster=yes") |
| 422 | ("-e" "none"))) | 427 | ("-e" "none"))) |
| 428 | (tramp-async-args (("-q"))) | ||
| 423 | (tramp-remote-sh "/bin/sh") | 429 | (tramp-remote-sh "/bin/sh") |
| 424 | (tramp-copy-program "rsync") | 430 | (tramp-copy-program "rsync") |
| 425 | (tramp-copy-args (("-t" "%k") ("-r"))) | 431 | (tramp-copy-args (("-t" "%k") ("-r"))) |
| @@ -449,6 +455,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 449 | ("ssh" (tramp-login-program "ssh") | 455 | ("ssh" (tramp-login-program "ssh") |
| 450 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 456 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 451 | ("-e" "none"))) | 457 | ("-e" "none"))) |
| 458 | (tramp-async-args (("-q"))) | ||
| 452 | (tramp-remote-sh "/bin/sh") | 459 | (tramp-remote-sh "/bin/sh") |
| 453 | (tramp-copy-program nil) | 460 | (tramp-copy-program nil) |
| 454 | (tramp-copy-args nil) | 461 | (tramp-copy-args nil) |
| @@ -462,6 +469,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 462 | ("ssh1" (tramp-login-program "ssh") | 469 | ("ssh1" (tramp-login-program "ssh") |
| 463 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 470 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 464 | ("-1" "-e" "none"))) | 471 | ("-1" "-e" "none"))) |
| 472 | (tramp-async-args (("-q"))) | ||
| 465 | (tramp-remote-sh "/bin/sh") | 473 | (tramp-remote-sh "/bin/sh") |
| 466 | (tramp-copy-program nil) | 474 | (tramp-copy-program nil) |
| 467 | (tramp-copy-args nil) | 475 | (tramp-copy-args nil) |
| @@ -475,6 +483,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 475 | ("ssh2" (tramp-login-program "ssh") | 483 | ("ssh2" (tramp-login-program "ssh") |
| 476 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 484 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 477 | ("-2" "-e" "none"))) | 485 | ("-2" "-e" "none"))) |
| 486 | (tramp-async-args (("-q"))) | ||
| 478 | (tramp-remote-sh "/bin/sh") | 487 | (tramp-remote-sh "/bin/sh") |
| 479 | (tramp-copy-program nil) | 488 | (tramp-copy-program nil) |
| 480 | (tramp-copy-args nil) | 489 | (tramp-copy-args nil) |
| @@ -489,6 +498,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 489 | (tramp-login-program "ssh1") | 498 | (tramp-login-program "ssh1") |
| 490 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 499 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 491 | ("-e" "none"))) | 500 | ("-e" "none"))) |
| 501 | (tramp-async-args (("-q"))) | ||
| 492 | (tramp-remote-sh "/bin/sh") | 502 | (tramp-remote-sh "/bin/sh") |
| 493 | (tramp-copy-program nil) | 503 | (tramp-copy-program nil) |
| 494 | (tramp-copy-args nil) | 504 | (tramp-copy-args nil) |
| @@ -539,6 +549,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 539 | ("-o" "ControlPath=%t.%%r@%%h:%%p") | 549 | ("-o" "ControlPath=%t.%%r@%%h:%%p") |
| 540 | ("-o" "ControlMaster=yes") | 550 | ("-o" "ControlMaster=yes") |
| 541 | ("-e" "none"))) | 551 | ("-e" "none"))) |
| 552 | (tramp-async-args (("-q"))) | ||
| 542 | (tramp-remote-sh "/bin/sh") | 553 | (tramp-remote-sh "/bin/sh") |
| 543 | (tramp-copy-program "scp") | 554 | (tramp-copy-program "scp") |
| 544 | (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") | 555 | (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") |
| @@ -554,6 +565,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 554 | ("scpx" (tramp-login-program "ssh") | 565 | ("scpx" (tramp-login-program "ssh") |
| 555 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 566 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 556 | ("-e" "none" "-t" "-t" "/bin/sh"))) | 567 | ("-e" "none" "-t" "-t" "/bin/sh"))) |
| 568 | (tramp-async-args (("-q"))) | ||
| 557 | (tramp-remote-sh "/bin/sh") | 569 | (tramp-remote-sh "/bin/sh") |
| 558 | (tramp-copy-program "scp") | 570 | (tramp-copy-program "scp") |
| 559 | (tramp-copy-args (("-p" "%k"))) | 571 | (tramp-copy-args (("-p" "%k"))) |
| @@ -567,6 +579,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 567 | ("sshx" (tramp-login-program "ssh") | 579 | ("sshx" (tramp-login-program "ssh") |
| 568 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 580 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 569 | ("-e" "none" "-t" "-t" "/bin/sh"))) | 581 | ("-e" "none" "-t" "-t" "/bin/sh"))) |
| 582 | (tramp-async-args (("-q"))) | ||
| 570 | (tramp-remote-sh "/bin/sh") | 583 | (tramp-remote-sh "/bin/sh") |
| 571 | (tramp-copy-program nil) | 584 | (tramp-copy-program nil) |
| 572 | (tramp-copy-args nil) | 585 | (tramp-copy-args nil) |
| @@ -672,6 +685,11 @@ pair of the form (KEY VALUE). The following KEYs are defined: | |||
| 672 | \"%t\" is replaced by the temporary file name produced with | 685 | \"%t\" is replaced by the temporary file name produced with |
| 673 | `tramp-make-tramp-temp-file'. \"%k\" indicates the keep-date | 686 | `tramp-make-tramp-temp-file'. \"%k\" indicates the keep-date |
| 674 | parameter of a program, if exists. | 687 | parameter of a program, if exists. |
| 688 | * `tramp-async-args' | ||
| 689 | When an asynchronous process is started, we know already that | ||
| 690 | the connection works. Therefore, we can pass additional | ||
| 691 | parameters to suppress diagnostic messages, in order not to | ||
| 692 | tamper the process output. | ||
| 675 | * `tramp-copy-program' | 693 | * `tramp-copy-program' |
| 676 | This specifies the name of the program to use for remotely copying | 694 | This specifies the name of the program to use for remotely copying |
| 677 | the file; this might be the absolute filename of rcp or the name of | 695 | the file; this might be the absolute filename of rcp or the name of |
| @@ -3641,85 +3659,86 @@ and `rename'. FILENAME and NEWNAME must be absolute file names." | |||
| 3641 | (apply 'file-selinux-context (list filename)))) | 3659 | (apply 'file-selinux-context (list filename)))) |
| 3642 | pr tm) | 3660 | pr tm) |
| 3643 | 3661 | ||
| 3644 | (when (and (not ok-if-already-exists) (file-exists-p newname)) | 3662 | (with-parsed-tramp-file-name (if t1 filename newname) nil |
| 3645 | (with-parsed-tramp-file-name (if t1 filename newname) nil | 3663 | (when (and (not ok-if-already-exists) (file-exists-p newname)) |
| 3646 | (tramp-error | 3664 | (tramp-error |
| 3647 | v 'file-already-exists "File %s already exists" newname))) | 3665 | v 'file-already-exists "File %s already exists" newname)) |
| 3648 | 3666 | ||
| 3649 | (with-parsed-tramp-file-name (if t1 filename newname) nil | ||
| 3650 | (with-progress-reporter | 3667 | (with-progress-reporter |
| 3651 | v 0 (format "Transferring %s to %s" filename newname) | 3668 | v 0 (format "%s %s to %s" |
| 3669 | (if (eq op 'copy) "Copying" "Renaming") | ||
| 3670 | filename newname) | ||
| 3652 | 3671 | ||
| 3653 | (cond | 3672 | (cond |
| 3654 | ;; Both are Tramp files. | 3673 | ;; Both are Tramp files. |
| 3655 | ((and t1 t2) | 3674 | ((and t1 t2) |
| 3656 | (with-parsed-tramp-file-name filename v1 | 3675 | (with-parsed-tramp-file-name filename v1 |
| 3657 | (with-parsed-tramp-file-name newname v2 | 3676 | (with-parsed-tramp-file-name newname v2 |
| 3658 | (cond | 3677 | (cond |
| 3659 | ;; Shortcut: if method, host, user are the same for both | 3678 | ;; Shortcut: if method, host, user are the same for |
| 3660 | ;; files, we invoke `cp' or `mv' on the remote host | 3679 | ;; both files, we invoke `cp' or `mv' on the remote |
| 3661 | ;; directly. | 3680 | ;; host directly. |
| 3662 | ((tramp-equal-remote filename newname) | 3681 | ((tramp-equal-remote filename newname) |
| 3663 | (tramp-do-copy-or-rename-file-directly | 3682 | (tramp-do-copy-or-rename-file-directly |
| 3664 | op filename newname | 3683 | op filename newname |
| 3665 | ok-if-already-exists keep-date preserve-uid-gid)) | 3684 | ok-if-already-exists keep-date preserve-uid-gid)) |
| 3666 | 3685 | ||
| 3667 | ;; Try out-of-band operation. | 3686 | ;; Try out-of-band operation. |
| 3668 | ((tramp-method-out-of-band-p | 3687 | ((tramp-method-out-of-band-p |
| 3669 | v1 (nth 7 (file-attributes filename))) | 3688 | v1 (nth 7 (file-attributes filename))) |
| 3670 | (tramp-do-copy-or-rename-file-out-of-band | 3689 | (tramp-do-copy-or-rename-file-out-of-band |
| 3671 | op filename newname keep-date)) | 3690 | op filename newname keep-date)) |
| 3672 | 3691 | ||
| 3673 | ;; No shortcut was possible. So we copy the | 3692 | ;; No shortcut was possible. So we copy the file |
| 3674 | ;; file first. If the operation was `rename', we go | 3693 | ;; first. If the operation was `rename', we go back |
| 3675 | ;; back and delete the original file (if the copy was | 3694 | ;; and delete the original file (if the copy was |
| 3676 | ;; successful). The approach is simple-minded: we | 3695 | ;; successful). The approach is simple-minded: we |
| 3677 | ;; create a new buffer, insert the contents of the | 3696 | ;; create a new buffer, insert the contents of the |
| 3678 | ;; source file into it, then write out the buffer to | 3697 | ;; source file into it, then write out the buffer to |
| 3679 | ;; the target file. The advantage is that it doesn't | 3698 | ;; the target file. The advantage is that it doesn't |
| 3680 | ;; matter which filename handlers are used for the | 3699 | ;; matter which filename handlers are used for the |
| 3681 | ;; source and target file. | 3700 | ;; source and target file. |
| 3682 | (t | 3701 | (t |
| 3683 | (tramp-do-copy-or-rename-file-via-buffer | 3702 | (tramp-do-copy-or-rename-file-via-buffer |
| 3684 | op filename newname keep-date)))))) | 3703 | op filename newname keep-date)))))) |
| 3685 | 3704 | ||
| 3686 | ;; One file is a Tramp file, the other one is local. | 3705 | ;; One file is a Tramp file, the other one is local. |
| 3687 | ((or t1 t2) | 3706 | ((or t1 t2) |
| 3688 | (cond | 3707 | (cond |
| 3689 | ;; Fast track on local machine. | 3708 | ;; Fast track on local machine. |
| 3690 | ((tramp-local-host-p v) | 3709 | ((tramp-local-host-p v) |
| 3691 | (tramp-do-copy-or-rename-file-directly | 3710 | (tramp-do-copy-or-rename-file-directly |
| 3692 | op filename newname | 3711 | op filename newname |
| 3693 | ok-if-already-exists keep-date preserve-uid-gid)) | 3712 | ok-if-already-exists keep-date preserve-uid-gid)) |
| 3694 | 3713 | ||
| 3695 | ;; If the Tramp file has an out-of-band method, the corresponding | 3714 | ;; If the Tramp file has an out-of-band method, the |
| 3696 | ;; copy-program can be invoked. | 3715 | ;; corresponding copy-program can be invoked. |
| 3697 | ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename))) | 3716 | ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename))) |
| 3698 | (tramp-do-copy-or-rename-file-out-of-band | 3717 | (tramp-do-copy-or-rename-file-out-of-band |
| 3699 | op filename newname keep-date)) | 3718 | op filename newname keep-date)) |
| 3700 | 3719 | ||
| 3701 | ;; Use the inline method via a Tramp buffer. | 3720 | ;; Use the inline method via a Tramp buffer. |
| 3702 | (t (tramp-do-copy-or-rename-file-via-buffer | 3721 | (t (tramp-do-copy-or-rename-file-via-buffer |
| 3703 | op filename newname keep-date)))) | 3722 | op filename newname keep-date)))) |
| 3704 | 3723 | ||
| 3705 | (t | 3724 | (t |
| 3706 | ;; One of them must be a Tramp file. | 3725 | ;; One of them must be a Tramp file. |
| 3707 | (error "Tramp implementation says this cannot happen"))) | 3726 | (error "Tramp implementation says this cannot happen"))) |
| 3708 | 3727 | ||
| 3709 | ;; Handle `preserve-selinux-context'. | 3728 | ;; Handle `preserve-selinux-context'. |
| 3710 | (when context (apply 'set-file-selinux-context (list newname context))) | 3729 | (when context (apply 'set-file-selinux-context (list newname context))) |
| 3711 | 3730 | ||
| 3712 | ;; In case of `rename', we must flush the cache of the source file. | 3731 | ;; In case of `rename', we must flush the cache of the source file. |
| 3713 | (when (and t1 (eq op 'rename)) | 3732 | (when (and t1 (eq op 'rename)) |
| 3714 | (with-parsed-tramp-file-name filename v1 | 3733 | (with-parsed-tramp-file-name filename v1 |
| 3715 | (tramp-flush-file-property v1 (file-name-directory localname)) | 3734 | (tramp-flush-file-property v1 (file-name-directory localname)) |
| 3716 | (tramp-flush-file-property v1 localname))) | 3735 | (tramp-flush-file-property v1 localname))) |
| 3717 | 3736 | ||
| 3718 | ;; When newname did exist, we have wrong cached values. | 3737 | ;; When newname did exist, we have wrong cached values. |
| 3719 | (when t2 | 3738 | (when t2 |
| 3720 | (with-parsed-tramp-file-name newname v2 | 3739 | (with-parsed-tramp-file-name newname v2 |
| 3721 | (tramp-flush-file-property v2 (file-name-directory localname)) | 3740 | (tramp-flush-file-property v2 (file-name-directory localname)) |
| 3722 | (tramp-flush-file-property v2 localname))))))) | 3741 | (tramp-flush-file-property v2 localname))))))) |
| 3723 | 3742 | ||
| 3724 | (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) | 3743 | (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) |
| 3725 | "Use an Emacs buffer to copy or rename a file. | 3744 | "Use an Emacs buffer to copy or rename a file. |
| @@ -4752,7 +4771,7 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1." | |||
| 4752 | (rem-enc | 4771 | (rem-enc |
| 4753 | (save-excursion | 4772 | (save-excursion |
| 4754 | (with-progress-reporter | 4773 | (with-progress-reporter |
| 4755 | v 5 (format "Encoding remote file %s" filename) | 4774 | v 3 (format "Encoding remote file %s" filename) |
| 4756 | (tramp-barf-unless-okay | 4775 | (tramp-barf-unless-okay |
| 4757 | v (format rem-enc (tramp-shell-quote-argument localname)) | 4776 | v (format rem-enc (tramp-shell-quote-argument localname)) |
| 4758 | "Encoding remote file failed")) | 4777 | "Encoding remote file failed")) |
| @@ -5323,46 +5342,50 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." | |||
| 5323 | ;; any other remote command. | 5342 | ;; any other remote command. |
| 5324 | (defun tramp-handle-vc-registered (file) | 5343 | (defun tramp-handle-vc-registered (file) |
| 5325 | "Like `vc-registered' for Tramp files." | 5344 | "Like `vc-registered' for Tramp files." |
| 5326 | (with-parsed-tramp-file-name file nil | 5345 | (with-temp-message "" |
| 5327 | 5346 | (with-parsed-tramp-file-name file nil | |
| 5328 | ;; There could be new files, created by the vc backend. We cannot | 5347 | (with-progress-reporter |
| 5329 | ;; reuse the old cache entries, therefore. | 5348 | v 3 (format "Checking `vc-registered' for %s" file) |
| 5330 | (let (tramp-vc-registered-file-names | 5349 | |
| 5331 | (tramp-cache-inhibit-cache (current-time)) | 5350 | ;; There could be new files, created by the vc backend. We |
| 5332 | (file-name-handler-alist | 5351 | ;; cannot reuse the old cache entries, therefore. |
| 5333 | `((,tramp-file-name-regexp . tramp-vc-file-name-handler)))) | 5352 | (let (tramp-vc-registered-file-names |
| 5334 | 5353 | (tramp-cache-inhibit-cache (current-time)) | |
| 5335 | ;; Here we collect only file names, which need an operation. | 5354 | (file-name-handler-alist |
| 5336 | (tramp-run-real-handler 'vc-registered (list file)) | 5355 | `((,tramp-file-name-regexp . tramp-vc-file-name-handler)))) |
| 5337 | (tramp-message v 10 "\n%s" tramp-vc-registered-file-names) | 5356 | |
| 5338 | 5357 | ;; Here we collect only file names, which need an operation. | |
| 5339 | ;; Send just one command, in order to fill the cache. | 5358 | (tramp-run-real-handler 'vc-registered (list file)) |
| 5340 | (when tramp-vc-registered-file-names | 5359 | (tramp-message v 10 "\n%s" tramp-vc-registered-file-names) |
| 5341 | (tramp-maybe-send-script | 5360 | |
| 5342 | v | 5361 | ;; Send just one command, in order to fill the cache. |
| 5343 | (format tramp-vc-registered-read-file-names | 5362 | (when tramp-vc-registered-file-names |
| 5344 | (tramp-get-file-exists-command v) | 5363 | (tramp-maybe-send-script |
| 5345 | (format "%s -r" (tramp-get-test-command v))) | 5364 | v |
| 5346 | "tramp_vc_registered_read_file_names") | 5365 | (format tramp-vc-registered-read-file-names |
| 5347 | 5366 | (tramp-get-file-exists-command v) | |
| 5348 | (dolist | 5367 | (format "%s -r" (tramp-get-test-command v))) |
| 5349 | (elt | 5368 | "tramp_vc_registered_read_file_names") |
| 5350 | (tramp-send-command-and-read | 5369 | |
| 5351 | v | 5370 | (dolist |
| 5352 | (format | 5371 | (elt |
| 5353 | "tramp_vc_registered_read_file_names %s" | 5372 | (tramp-send-command-and-read |
| 5354 | (mapconcat 'tramp-shell-quote-argument | 5373 | v |
| 5355 | tramp-vc-registered-file-names | 5374 | (format |
| 5356 | " ")))) | 5375 | "tramp_vc_registered_read_file_names %s" |
| 5357 | 5376 | (mapconcat 'tramp-shell-quote-argument | |
| 5358 | (tramp-set-file-property v (car elt) (cadr elt) (cadr (cdr elt)))))) | 5377 | tramp-vc-registered-file-names |
| 5359 | 5378 | " ")))) | |
| 5360 | ;; Second run. Now all `file-exists-p' or `file-readable-p' calls | 5379 | |
| 5361 | ;; shall be answered from the file cache. | 5380 | (tramp-set-file-property |
| 5362 | ;; We unset `process-file-side-effects' in order to keep the cache | 5381 | v (car elt) (cadr elt) (cadr (cdr elt)))))) |
| 5363 | ;; when `process-file' calls appear. | 5382 | |
| 5364 | (let (process-file-side-effects) | 5383 | ;; Second run. Now all `file-exists-p' or `file-readable-p' |
| 5365 | (tramp-run-real-handler 'vc-registered (list file))))) | 5384 | ;; calls shall be answered from the file cache. We unset |
| 5385 | ;; `process-file-side-effects' in order to keep the cache when | ||
| 5386 | ;; `process-file' calls appear. | ||
| 5387 | (let (process-file-side-effects) | ||
| 5388 | (tramp-run-real-handler 'vc-registered (list file))))))) | ||
| 5366 | 5389 | ||
| 5367 | ;;;###autoload | 5390 | ;;;###autoload |
| 5368 | (progn (defun tramp-run-real-handler (operation args) | 5391 | (progn (defun tramp-run-real-handler (operation args) |
| @@ -7380,6 +7403,7 @@ Does not do anything if a connection is already open, but re-opens the | |||
| 7380 | connection if a previous connection has died for some reason." | 7403 | connection if a previous connection has died for some reason." |
| 7381 | (catch 'uname-changed | 7404 | (catch 'uname-changed |
| 7382 | (let ((p (tramp-get-connection-process vec)) | 7405 | (let ((p (tramp-get-connection-process vec)) |
| 7406 | (process-name (tramp-get-connection-property vec "process-name" nil)) | ||
| 7383 | (process-environment (copy-sequence process-environment))) | 7407 | (process-environment (copy-sequence process-environment))) |
| 7384 | 7408 | ||
| 7385 | ;; If too much time has passed since last command was sent, look | 7409 | ;; If too much time has passed since last command was sent, look |
| @@ -7413,126 +7437,135 @@ connection if a previous connection has died for some reason." | |||
| 7413 | ;; We call `tramp-get-buffer' in order to get a debug buffer for | 7437 | ;; We call `tramp-get-buffer' in order to get a debug buffer for |
| 7414 | ;; messages from the beginning. | 7438 | ;; messages from the beginning. |
| 7415 | (tramp-get-buffer vec) | 7439 | (tramp-get-buffer vec) |
| 7416 | (if (zerop (length (tramp-file-name-user vec))) | 7440 | (with-progress-reporter |
| 7417 | (tramp-message | 7441 | vec 3 |
| 7418 | vec 3 "Opening connection for %s using %s" | 7442 | (if (zerop (length (tramp-file-name-user vec))) |
| 7419 | (tramp-file-name-host vec) | 7443 | (format "Opening connection for %s using %s" |
| 7420 | (tramp-file-name-method vec)) | 7444 | (tramp-file-name-host vec) |
| 7421 | (tramp-message | 7445 | (tramp-file-name-method vec)) |
| 7422 | vec 3 "Opening connection for %s@%s using %s" | 7446 | (format "Opening connection for %s@%s using %s" |
| 7423 | (tramp-file-name-user vec) | 7447 | (tramp-file-name-user vec) |
| 7424 | (tramp-file-name-host vec) | 7448 | (tramp-file-name-host vec) |
| 7425 | (tramp-file-name-method vec))) | 7449 | (tramp-file-name-method vec))) |
| 7426 | 7450 | ||
| 7427 | ;; Start new process. | 7451 | ;; Start new process. |
| 7428 | (when (and p (processp p)) | 7452 | (when (and p (processp p)) |
| 7429 | (delete-process p)) | 7453 | (delete-process p)) |
| 7430 | (setenv "TERM" tramp-terminal-type) | 7454 | (setenv "TERM" tramp-terminal-type) |
| 7431 | (setenv "LC_ALL" "C") | 7455 | (setenv "LC_ALL" "C") |
| 7432 | (setenv "PROMPT_COMMAND") | 7456 | (setenv "PROMPT_COMMAND") |
| 7433 | (setenv "PS1" tramp-initial-end-of-output) | 7457 | (setenv "PS1" tramp-initial-end-of-output) |
| 7434 | (let* ((target-alist (tramp-compute-multi-hops vec)) | 7458 | (let* ((target-alist (tramp-compute-multi-hops vec)) |
| 7435 | (process-connection-type tramp-process-connection-type) | 7459 | (process-connection-type tramp-process-connection-type) |
| 7436 | (process-adaptive-read-buffering nil) | 7460 | (process-adaptive-read-buffering nil) |
| 7437 | (coding-system-for-read nil) | 7461 | (coding-system-for-read nil) |
| 7438 | ;; This must be done in order to avoid our file name handler. | 7462 | ;; This must be done in order to avoid our file name handler. |
| 7439 | (p (let ((default-directory | 7463 | (p (let ((default-directory |
| 7440 | (tramp-compat-temporary-file-directory))) | 7464 | (tramp-compat-temporary-file-directory))) |
| 7441 | (start-process | 7465 | (start-process |
| 7442 | (or (tramp-get-connection-property vec "process-name" nil) | 7466 | (or process-name (tramp-buffer-name vec)) |
| 7443 | (tramp-buffer-name vec)) | 7467 | (tramp-get-connection-buffer vec) |
| 7444 | (tramp-get-connection-buffer vec) | 7468 | tramp-encoding-shell)))) |
| 7445 | tramp-encoding-shell)))) | ||
| 7446 | 7469 | ||
| 7447 | (tramp-message | 7470 | (tramp-message |
| 7448 | vec 6 "%s" (mapconcat 'identity (process-command p) " ")) | 7471 | vec 6 "%s" (mapconcat 'identity (process-command p) " ")) |
| 7449 | 7472 | ||
| 7450 | ;; Check whether process is alive. | 7473 | ;; Check whether process is alive. |
| 7451 | (tramp-set-process-query-on-exit-flag p nil) | 7474 | (tramp-set-process-query-on-exit-flag p nil) |
| 7452 | (with-progress-reporter vec 3 "Waiting 60s for local shell to come up" | ||
| 7453 | (tramp-barf-if-no-shell-prompt | 7475 | (tramp-barf-if-no-shell-prompt |
| 7454 | p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell)) | 7476 | p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell) |
| 7455 | 7477 | ||
| 7456 | ;; Now do all the connections as specified. | 7478 | ;; Now do all the connections as specified. |
| 7457 | (while target-alist | 7479 | (while target-alist |
| 7458 | (let* ((hop (car target-alist)) | 7480 | (let* ((hop (car target-alist)) |
| 7459 | (l-method (tramp-file-name-method hop)) | 7481 | (l-method (tramp-file-name-method hop)) |
| 7460 | (l-user (tramp-file-name-user hop)) | 7482 | (l-user (tramp-file-name-user hop)) |
| 7461 | (l-host (tramp-file-name-host hop)) | 7483 | (l-host (tramp-file-name-host hop)) |
| 7462 | (l-port nil) | 7484 | (l-port nil) |
| 7463 | (login-program | 7485 | (login-program |
| 7464 | (tramp-get-method-parameter l-method 'tramp-login-program)) | 7486 | (tramp-get-method-parameter |
| 7465 | (login-args | 7487 | l-method 'tramp-login-program)) |
| 7466 | (tramp-get-method-parameter l-method 'tramp-login-args)) | 7488 | (login-args |
| 7467 | (gw-args | 7489 | (tramp-get-method-parameter l-method 'tramp-login-args)) |
| 7468 | (tramp-get-method-parameter l-method 'tramp-gw-args)) | 7490 | (async-args |
| 7469 | (gw (tramp-get-file-property hop "" "gateway" nil)) | 7491 | (tramp-get-method-parameter l-method 'tramp-async-args)) |
| 7470 | (g-method (and gw (tramp-file-name-method gw))) | 7492 | (gw-args |
| 7471 | (g-user (and gw (tramp-file-name-user gw))) | 7493 | (tramp-get-method-parameter l-method 'tramp-gw-args)) |
| 7472 | (g-host (and gw (tramp-file-name-host gw))) | 7494 | (gw (tramp-get-file-property hop "" "gateway" nil)) |
| 7473 | (command login-program) | 7495 | (g-method (and gw (tramp-file-name-method gw))) |
| 7474 | ;; We don't create the temporary file. In fact, it | 7496 | (g-user (and gw (tramp-file-name-user gw))) |
| 7475 | ;; is just a prefix for the ControlPath option of | 7497 | (g-host (and gw (tramp-file-name-host gw))) |
| 7476 | ;; ssh; the real temporary file has another name, and | 7498 | (command login-program) |
| 7477 | ;; it is created and protected by ssh. It is also | 7499 | ;; We don't create the temporary file. In fact, |
| 7478 | ;; removed by ssh, when the connection is closed. | 7500 | ;; it is just a prefix for the ControlPath option |
| 7479 | (tmpfile | 7501 | ;; of ssh; the real temporary file has another |
| 7480 | (tramp-set-connection-property | 7502 | ;; name, and it is created and protected by ssh. |
| 7481 | p "temp-file" | 7503 | ;; It is also removed by ssh, when the connection |
| 7482 | (make-temp-name | 7504 | ;; is closed. |
| 7483 | (expand-file-name | 7505 | (tmpfile |
| 7484 | tramp-temp-name-prefix | 7506 | (tramp-set-connection-property |
| 7485 | (tramp-compat-temporary-file-directory))))) | 7507 | p "temp-file" |
| 7486 | spec) | 7508 | (make-temp-name |
| 7487 | 7509 | (expand-file-name | |
| 7488 | ;; Add gateway arguments if necessary. | 7510 | tramp-temp-name-prefix |
| 7489 | (when (and gw gw-args) | 7511 | (tramp-compat-temporary-file-directory))))) |
| 7490 | (setq login-args (append login-args gw-args))) | 7512 | spec) |
| 7491 | 7513 | ||
| 7492 | ;; Check for port number. Until now, there's no need | 7514 | ;; Add arguments for asynchrononous processes. |
| 7493 | ;; for handling like method, user, host. | 7515 | (when (and process-name async-args) |
| 7494 | (when (string-match tramp-host-with-port-regexp l-host) | 7516 | (setq login-args (append login-args async-args))) |
| 7517 | |||
| 7518 | ;; Add gateway arguments if necessary. | ||
| 7519 | (when (and gw gw-args) | ||
| 7520 | (setq login-args (append login-args gw-args))) | ||
| 7521 | |||
| 7522 | ;; Check for port number. Until now, there's no need | ||
| 7523 | ;; for handling like method, user, host. | ||
| 7524 | (when (string-match tramp-host-with-port-regexp l-host) | ||
| 7495 | (setq l-port (match-string 2 l-host) | 7525 | (setq l-port (match-string 2 l-host) |
| 7496 | l-host (match-string 1 l-host))) | 7526 | l-host (match-string 1 l-host))) |
| 7497 | 7527 | ||
| 7498 | ;; Set variables for computing the prompt for reading | 7528 | ;; Set variables for computing the prompt for reading |
| 7499 | ;; password. They can also be derived from a gateway. | 7529 | ;; password. They can also be derived from a gateway. |
| 7500 | (setq tramp-current-method (or g-method l-method) | 7530 | (setq tramp-current-method (or g-method l-method) |
| 7501 | tramp-current-user (or g-user l-user) | 7531 | tramp-current-user (or g-user l-user) |
| 7502 | tramp-current-host (or g-host l-host)) | 7532 | tramp-current-host (or g-host l-host)) |
| 7503 | 7533 | ||
| 7504 | ;; Replace login-args place holders. | 7534 | ;; Replace login-args place holders. |
| 7505 | (setq | 7535 | (setq |
| 7506 | l-host (or l-host "") | 7536 | l-host (or l-host "") |
| 7507 | l-user (or l-user "") | 7537 | l-user (or l-user "") |
| 7508 | l-port (or l-port "") | 7538 | l-port (or l-port "") |
| 7509 | spec (format-spec-make ?h l-host ?u l-user ?p l-port ?t tmpfile) | 7539 | spec (format-spec-make |
| 7510 | command | 7540 | ?h l-host ?u l-user ?p l-port ?t tmpfile) |
| 7511 | (concat | 7541 | command |
| 7512 | ;; We do not want to see the trailing local prompt in | 7542 | (concat |
| 7513 | ;; `start-file-process'. | 7543 | ;; We do not want to see the trailing local prompt in |
| 7514 | (unless (memq system-type '(windows-nt)) "exec ") | 7544 | ;; `start-file-process'. |
| 7515 | command " " | 7545 | (unless (memq system-type '(windows-nt)) "exec ") |
| 7516 | (mapconcat | 7546 | command " " |
| 7517 | (lambda (x) | 7547 | (mapconcat |
| 7518 | (setq x (mapcar (lambda (y) (format-spec y spec)) x)) | 7548 | (lambda (x) |
| 7519 | (unless (member "" x) (mapconcat 'identity x " "))) | 7549 | (setq x (mapcar (lambda (y) (format-spec y spec)) x)) |
| 7520 | login-args " ") | 7550 | (unless (member "" x) (mapconcat 'identity x " "))) |
| 7521 | ;; Local shell could be a Windows COMSPEC. It doesn't | 7551 | login-args " ") |
| 7522 | ;; know the ";" syntax, but we must exit always for | 7552 | ;; Local shell could be a Windows COMSPEC. It |
| 7523 | ;; `start-file-process'. "exec" does not work either. | 7553 | ;; doesn't know the ";" syntax, but we must exit |
| 7524 | (if (memq system-type '(windows-nt)) " && exit || exit"))) | 7554 | ;; always for `start-file-process'. "exec" does not |
| 7525 | 7555 | ;; work either. | |
| 7526 | ;; Send the command. | 7556 | (if (memq system-type '(windows-nt)) " && exit || exit"))) |
| 7527 | (tramp-message vec 3 "Sending command `%s'" command) | 7557 | |
| 7528 | (tramp-send-command vec command t t) | 7558 | ;; Send the command. |
| 7529 | (tramp-process-actions p vec tramp-actions-before-shell 60) | 7559 | (tramp-message vec 3 "Sending command `%s'" command) |
| 7530 | (tramp-message vec 3 "Found remote shell prompt on `%s'" l-host)) | 7560 | (tramp-send-command vec command t t) |
| 7531 | ;; Next hop. | 7561 | (tramp-process-actions p vec tramp-actions-before-shell 60) |
| 7532 | (setq target-alist (cdr target-alist))) | 7562 | (tramp-message |
| 7533 | 7563 | vec 3 "Found remote shell prompt on `%s'" l-host)) | |
| 7534 | ;; Make initial shell settings. | 7564 | ;; Next hop. |
| 7535 | (tramp-open-connection-setup-interactive-shell p vec)))))) | 7565 | (setq target-alist (cdr target-alist))) |
| 7566 | |||
| 7567 | ;; Make initial shell settings. | ||
| 7568 | (tramp-open-connection-setup-interactive-shell p vec))))))) | ||
| 7536 | 7569 | ||
| 7537 | (defun tramp-send-command (vec command &optional neveropen nooutput) | 7570 | (defun tramp-send-command (vec command &optional neveropen nooutput) |
| 7538 | "Send the COMMAND to connection VEC. | 7571 | "Send the COMMAND to connection VEC. |
diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 5eb9840a4ca..101b2585186 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el | |||
| @@ -404,6 +404,7 @@ reference.") | |||
| 404 | (define-key map "\M-}" 'nxml-forward-paragraph) | 404 | (define-key map "\M-}" 'nxml-forward-paragraph) |
| 405 | (define-key map "\M-h" 'nxml-mark-paragraph) | 405 | (define-key map "\M-h" 'nxml-mark-paragraph) |
| 406 | (define-key map "\C-c\C-f" 'nxml-finish-element) | 406 | (define-key map "\C-c\C-f" 'nxml-finish-element) |
| 407 | (define-key map "\C-c/" 'nxml-finish-element) | ||
| 407 | (define-key map "\C-c\C-m" 'nxml-split-element) | 408 | (define-key map "\C-c\C-m" 'nxml-split-element) |
| 408 | (define-key map "\C-c\C-b" 'nxml-balanced-close-start-tag-block) | 409 | (define-key map "\C-c\C-b" 'nxml-balanced-close-start-tag-block) |
| 409 | (define-key map "\C-c\C-i" 'nxml-balanced-close-start-tag-inline) | 410 | (define-key map "\C-c\C-i" 'nxml-balanced-close-start-tag-inline) |
diff --git a/lisp/password-cache.el b/lisp/password-cache.el index 126205a532f..7c07642a1f3 100644 --- a/lisp/password-cache.el +++ b/lisp/password-cache.el | |||
| @@ -105,7 +105,7 @@ remove incorrect ones from the cache." | |||
| 105 | 105 | ||
| 106 | (defun password-cache-remove (key) | 106 | (defun password-cache-remove (key) |
| 107 | "Remove password indexed by KEY from password cache. | 107 | "Remove password indexed by KEY from password cache. |
| 108 | This is typically run be a timer setup from `password-cache-add', | 108 | This is typically run by a timer setup from `password-cache-add', |
| 109 | but can be invoked at any time to forcefully remove passwords | 109 | but can be invoked at any time to forcefully remove passwords |
| 110 | from the cache. This may be useful when it has been detected | 110 | from the cache. This may be useful when it has been detected |
| 111 | that a password is invalid, so that `password-read' query the | 111 | that a password is invalid, so that `password-read' query the |
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 2d28d003fd5..1ee3c295fe1 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -2245,50 +2245,50 @@ comment at the start of cc-engine.el for more info." | |||
| 2245 | (setq cnt (1- cnt))))) | 2245 | (setq cnt (1- cnt))))) |
| 2246 | (point))) | 2246 | (point))) |
| 2247 | 2247 | ||
| 2248 | (defun c-state-balance-parens-backwards (here top) | 2248 | (defun c-state-balance-parens-backwards (here- here+ top) |
| 2249 | ;; Return the position of the opening paren/brace/bracket before HERE which | 2249 | ;; Return the position of the opening paren/brace/bracket before HERE- which |
| 2250 | ;; matches the outermost close p/b/b between HERE and TOP, like this: | 2250 | ;; matches the outermost close p/b/b between HERE+ and TOP. Except when |
| 2251 | ;; | 2251 | ;; there's a macro, HERE- and HERE+ are the same. Like this: |
| 2252 | ;; ...................................... | 2252 | ;; |
| 2253 | ;; | | | 2253 | ;; ............................................ |
| 2254 | ;; ( [ ( ........... ) ( ) ] ) | 2254 | ;; | | |
| 2255 | ;; ^ ^ ^ | 2255 | ;; ( [ ( .........#macro.. ) ( ) ] ) |
| 2256 | ;; | | | | 2256 | ;; ^ ^ ^ ^ |
| 2257 | ;; return HERE TOP | 2257 | ;; | | | | |
| 2258 | ;; return HERE- HERE+ TOP | ||
| 2258 | ;; | 2259 | ;; |
| 2259 | ;; If there aren't enough opening paren/brace/brackets, return the position | 2260 | ;; If there aren't enough opening paren/brace/brackets, return the position |
| 2260 | ;; of the outermost one found, or HERE it there are none. If there are no | 2261 | ;; of the outermost one found, or HERE- if there are none. If there are no |
| 2261 | ;; closeing p/b/bs between HERE and TOP, return HERE. HERE and TOP must not | 2262 | ;; closeing p/b/bs between HERE+ and TOP, return HERE-. HERE-/+ and TOP |
| 2262 | ;; be inside literals. Only the accessible portion of the buffer will be | 2263 | ;; must not be inside literals. Only the accessible portion of the buffer |
| 2263 | ;; scanned. | 2264 | ;; will be scanned. |
| 2264 | 2265 | ||
| 2265 | ;; PART 1: scan from `here' up to `top', accumulating ")"s which enclose | 2266 | ;; PART 1: scan from `here+' up to `top', accumulating ")"s which enclose |
| 2266 | ;; `here'. Go round the next loop each time we pass over such a ")". These | 2267 | ;; `here'. Go round the next loop each time we pass over such a ")". These |
| 2267 | ;; probably match "("s before `here'. | 2268 | ;; probably match "("s before `here-'. |
| 2268 | (let (pos pa ren+1 lonely-rens) | 2269 | (let (pos pa ren+1 lonely-rens) |
| 2269 | (save-excursion | 2270 | (save-excursion |
| 2270 | (save-restriction | 2271 | (save-restriction |
| 2271 | (narrow-to-region (point-min) top) ; This can move point, sometimes. | 2272 | (narrow-to-region (point-min) top) ; This can move point, sometimes. |
| 2272 | (setq pos here) | 2273 | (setq pos here+) |
| 2273 | (c-safe | 2274 | (c-safe |
| 2274 | (while | 2275 | (while |
| 2275 | (setq ren+1 (scan-lists pos 1 1)) ; might signal | 2276 | (setq ren+1 (scan-lists pos 1 1)) ; might signal |
| 2276 | (setq lonely-rens (cons ren+1 lonely-rens) | 2277 | (setq lonely-rens (cons ren+1 lonely-rens) |
| 2277 | pos ren+1))))) | 2278 | pos ren+1))))) |
| 2278 | 2279 | ||
| 2279 | ;; PART 2: Scan back before `here' searching for the "("s | 2280 | ;; PART 2: Scan back before `here-' searching for the "("s |
| 2280 | ;; matching/mismatching the ")"s found above. We only need to direct the | 2281 | ;; matching/mismatching the ")"s found above. We only need to direct the |
| 2281 | ;; caller to scan when we've encountered unmatched right parens. | 2282 | ;; caller to scan when we've encountered unmatched right parens. |
| 2282 | (when lonely-rens | 2283 | (setq pos here-) |
| 2283 | (setq pos here) | 2284 | (when lonely-rens |
| 2284 | (c-safe | 2285 | (c-safe |
| 2285 | (while | 2286 | (while |
| 2286 | (and lonely-rens ; actual values aren't used. | 2287 | (and lonely-rens ; actual values aren't used. |
| 2287 | (setq pa (scan-lists pos -1 1))) | 2288 | (setq pa (scan-lists pos -1 1))) |
| 2288 | (setq pos pa) | 2289 | (setq pos pa) |
| 2289 | (setq lonely-rens (cdr lonely-rens)))) ;) | 2290 | (setq lonely-rens (cdr lonely-rens))))) |
| 2290 | ) | 2291 | pos)) |
| 2291 | pos)) | ||
| 2292 | 2292 | ||
| 2293 | (defun c-parse-state-get-strategy (here good-pos) | 2293 | (defun c-parse-state-get-strategy (here good-pos) |
| 2294 | ;; Determine the scanning strategy for adjusting `c-parse-state', attempting | 2294 | ;; Determine the scanning strategy for adjusting `c-parse-state', attempting |
| @@ -2746,6 +2746,7 @@ comment at the start of cc-engine.el for more info." | |||
| 2746 | lit ; (START . END) of a literal containing some point. | 2746 | lit ; (START . END) of a literal containing some point. |
| 2747 | here-lit-start here-lit-end ; bounds of literal containing `here' | 2747 | here-lit-start here-lit-end ; bounds of literal containing `here' |
| 2748 | ; or `here' itself. | 2748 | ; or `here' itself. |
| 2749 | here- here+ ; start/end of macro around HERE, or HERE | ||
| 2749 | (here-bol (c-point 'bol here)) | 2750 | (here-bol (c-point 'bol here)) |
| 2750 | (too-far-back (max (- here c-state-cache-too-far) 1))) | 2751 | (too-far-back (max (- here c-state-cache-too-far) 1))) |
| 2751 | 2752 | ||
| @@ -2758,57 +2759,73 @@ comment at the start of cc-engine.el for more info." | |||
| 2758 | ;; At this stage, (> pos here); | 2759 | ;; At this stage, (> pos here); |
| 2759 | ;; (< (c-state-cache-top-lparen) here) (or is nil). | 2760 | ;; (< (c-state-cache-top-lparen) here) (or is nil). |
| 2760 | 2761 | ||
| 2761 | ;; CASE 1: The top of the cache is a brace pair which now encloses `here'. | 2762 | (cond |
| 2762 | ;; As good-pos, return the address. of the "{". | 2763 | ((and (consp (car c-state-cache)) |
| 2763 | (if (and (consp (car c-state-cache)) | 2764 | (> (cdar c-state-cache) here)) |
| 2764 | (> (cdar c-state-cache) here)) | 2765 | ;; CASE 1: The top of the cache is a brace pair which now encloses |
| 2765 | ;; Since we've no knowledge of what's inside these braces, we have no | 2766 | ;; `here'. As good-pos, return the address. of the "{". Since we've no |
| 2766 | ;; alternative but to direct the caller to scan the buffer from the | 2767 | ;; knowledge of what's inside these braces, we have no alternative but |
| 2767 | ;; opening brace. | 2768 | ;; to direct the caller to scan the buffer from the opening brace. |
| 2768 | (progn | 2769 | (setq pos (caar c-state-cache)) |
| 2769 | (setq pos (caar c-state-cache)) | 2770 | (setcar c-state-cache pos) |
| 2770 | (setcar c-state-cache pos) | 2771 | (list (1+ pos) pos t)) ; return value. We've just converted a brace pair |
| 2771 | (list (1+ pos) pos t)) ; return value. We've just converted a brace | 2772 | ; entry into a { entry, so the caller needs to |
| 2772 | ; pair entry into a { entry, so the caller | 2773 | ; search for a brace pair before the {. |
| 2773 | ; needs to search for a brace pair before the | 2774 | |
| 2774 | ; {. | 2775 | ;; `here' might be inside a literal. Check for this. |
| 2775 | 2776 | ((progn | |
| 2776 | ;; ;; `here' might be inside a literal. Check for this. | 2777 | (setq lit (c-state-literal-at here) |
| 2777 | (setq lit (c-state-literal-at here) | 2778 | here-lit-start (or (car lit) here) |
| 2778 | here-lit-start (or (car lit) here) | 2779 | here-lit-end (or (cdr lit) here)) |
| 2779 | here-lit-end (or (cdr lit) here)) | 2780 | ;; Has `here' just "newly entered" a macro? |
| 2780 | 2781 | (save-excursion | |
| 2781 | ;; `here' might be nested inside any depth of parens (or brackets but | 2782 | (goto-char here-lit-start) |
| 2782 | ;; not braces). Scan backwards to find the outermost such opening | 2783 | (if (and (c-beginning-of-macro) |
| 2783 | ;; paren, if there is one. This will be the scan position to return. | 2784 | (or (null c-state-old-cpp-beg) |
| 2784 | (save-restriction | 2785 | (not (= (point) c-state-old-cpp-beg)))) |
| 2785 | (narrow-to-region cache-pos (point-max)) | 2786 | (progn |
| 2786 | (setq pos (c-state-balance-parens-backwards here-lit-end pos))) | 2787 | (setq here- (point)) |
| 2787 | 2788 | (c-end-of-macro) | |
| 2788 | (if (< pos here-lit-start) | 2789 | (setq here+ (point))) |
| 2789 | ;; CASE 2: Address of outermost ( or [ which now encloses `here', | 2790 | (setq here- here-lit-start |
| 2790 | ;; but didn't enclose the (previous) `c-state-cache-good-pos'. If | 2791 | here+ here-lit-end))) |
| 2791 | ;; there is a brace pair preceding this, it will already be in | 2792 | |
| 2792 | ;; `c-state-cache', unless there was a brace pair after it, | 2793 | ;; `here' might be nested inside any depth of parens (or brackets but |
| 2793 | ;; i.e. there'll only be one to scan for if we've just deleted one. | 2794 | ;; not braces). Scan backwards to find the outermost such opening |
| 2794 | (list pos (and dropped-cons pos) t) ; Return value. | 2795 | ;; paren, if there is one. This will be the scan position to return. |
| 2795 | 2796 | (save-restriction | |
| 2796 | ;; `here' isn't enclosed in a (previously unrecorded) bracket/paren. | 2797 | (narrow-to-region cache-pos (point-max)) |
| 2797 | ;; Further forward scanning isn't needed, but we still need to find a | 2798 | (setq pos (c-state-balance-parens-backwards here- here+ pos))) |
| 2798 | ;; GOOD-POS. Step out of all enclosing "("s on HERE's line. | 2799 | nil)) ; for the cond |
| 2800 | |||
| 2801 | ((< pos here-lit-start) | ||
| 2802 | ;; CASE 2: Address of outermost ( or [ which now encloses `here', but | ||
| 2803 | ;; didn't enclose the (previous) `c-state-cache-good-pos'. If there is | ||
| 2804 | ;; a brace pair preceding this, it will already be in `c-state-cache', | ||
| 2805 | ;; unless there was a brace pair after it, i.e. there'll only be one to | ||
| 2806 | ;; scan for if we've just deleted one. | ||
| 2807 | (list pos (and dropped-cons pos) t)) ; Return value. | ||
| 2808 | |||
| 2809 | ;; `here' isn't enclosed in a (previously unrecorded) bracket/paren. | ||
| 2810 | ;; Further forward scanning isn't needed, but we still need to find a | ||
| 2811 | ;; GOOD-POS. Step out of all enclosing "("s on HERE's line. | ||
| 2812 | ((progn | ||
| 2799 | (save-restriction | 2813 | (save-restriction |
| 2800 | (narrow-to-region here-bol (point-max)) | 2814 | (narrow-to-region here-bol (point-max)) |
| 2801 | (setq pos here-lit-start) | 2815 | (setq pos here-lit-start) |
| 2802 | (c-safe (while (setq pa (scan-lists pos -1 1)) | 2816 | (c-safe (while (setq pa (scan-lists pos -1 1)) |
| 2803 | (setq pos pa)))) ; might signal | 2817 | (setq pos pa)))) ; might signal |
| 2804 | (if (setq ren (c-safe-scan-lists pos -1 -1 too-far-back)) | 2818 | nil)) ; for the cond |
| 2805 | ;; CASE 3: After a }/)/] before `here''s BOL. | 2819 | |
| 2806 | (list (1+ ren) (and dropped-cons pos) nil) ; Return value | 2820 | ((setq ren (c-safe-scan-lists pos -1 -1 too-far-back)) |
| 2807 | 2821 | ;; CASE 3: After a }/)/] before `here''s BOL. | |
| 2808 | ;; CASE 4; Best of a bad job: BOL before `here-bol', or beginning of | 2822 | (list (1+ ren) (and dropped-cons pos) nil)) ; Return value |
| 2809 | ;; literal containing it. | 2823 | |
| 2810 | (setq good-pos (c-state-lit-beg (c-point 'bopl here-bol))) | 2824 | (t |
| 2811 | (list good-pos (and dropped-cons good-pos) nil)))))) | 2825 | ;; CASE 4; Best of a bad job: BOL before `here-bol', or beginning of |
| 2826 | ;; literal containing it. | ||
| 2827 | (setq good-pos (c-state-lit-beg (c-point 'bopl here-bol))) | ||
| 2828 | (list good-pos (and dropped-cons good-pos) nil))))) | ||
| 2812 | 2829 | ||
| 2813 | 2830 | ||
| 2814 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 2831 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index 0a3c96d7894..64c716208e9 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el | |||
| @@ -1008,7 +1008,7 @@ Set subexpression 1 in the match-data to the name of the type." | |||
| 1008 | :regexp "\\(?:[^[:word:]_`]\\|^\\)\\(`?[[:word:]_]+\\)[^[:word:]_]*") | 1008 | :regexp "\\(?:[^[:word:]_`]\\|^\\)\\(`?[[:word:]_]+\\)[^[:word:]_]*") |
| 1009 | 1009 | ||
| 1010 | ;;;###autoload | 1010 | ;;;###autoload |
| 1011 | (defun f90-mode () | 1011 | (define-derived-mode f90-mode prog-mode "F90" |
| 1012 | "Major mode for editing Fortran 90,95 code in free format. | 1012 | "Major mode for editing Fortran 90,95 code in free format. |
| 1013 | For fixed format code, use `fortran-mode'. | 1013 | For fixed format code, use `fortran-mode'. |
| 1014 | 1014 | ||
| @@ -1065,13 +1065,9 @@ Variables controlling indentation style and extra features: | |||
| 1065 | 1065 | ||
| 1066 | Turning on F90 mode calls the value of the variable `f90-mode-hook' | 1066 | Turning on F90 mode calls the value of the variable `f90-mode-hook' |
| 1067 | with no args, if that value is non-nil." | 1067 | with no args, if that value is non-nil." |
| 1068 | (interactive) | 1068 | :group 'f90 |
| 1069 | (kill-all-local-variables) | 1069 | :syntax-table f90-mode-syntax-table |
| 1070 | (setq major-mode 'f90-mode | 1070 | :abbrev-table f90-mode-abbrev-table |
| 1071 | mode-name "F90" | ||
| 1072 | local-abbrev-table f90-mode-abbrev-table) | ||
| 1073 | (set-syntax-table f90-mode-syntax-table) | ||
| 1074 | (use-local-map f90-mode-map) | ||
| 1075 | (set (make-local-variable 'indent-line-function) 'f90-indent-line) | 1071 | (set (make-local-variable 'indent-line-function) 'f90-indent-line) |
| 1076 | (set (make-local-variable 'indent-region-function) 'f90-indent-region) | 1072 | (set (make-local-variable 'indent-region-function) 'f90-indent-region) |
| 1077 | (set (make-local-variable 'require-final-newline) mode-require-final-newline) | 1073 | (set (make-local-variable 'require-final-newline) mode-require-final-newline) |
| @@ -1094,8 +1090,7 @@ with no args, if that value is non-nil." | |||
| 1094 | 'f90-beginning-of-subprogram) | 1090 | 'f90-beginning-of-subprogram) |
| 1095 | (set (make-local-variable 'end-of-defun-function) 'f90-end-of-subprogram) | 1091 | (set (make-local-variable 'end-of-defun-function) 'f90-end-of-subprogram) |
| 1096 | (set (make-local-variable 'add-log-current-defun-function) | 1092 | (set (make-local-variable 'add-log-current-defun-function) |
| 1097 | #'f90-current-defun) | 1093 | #'f90-current-defun)) |
| 1098 | (run-mode-hooks 'f90-mode-hook)) | ||
| 1099 | 1094 | ||
| 1100 | 1095 | ||
| 1101 | ;; Inline-functions. | 1096 | ;; Inline-functions. |
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index 3784ba787c4..c37744bfe45 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el | |||
| @@ -778,7 +778,7 @@ Used in the Fortran entry in `hs-special-modes-alist'.") | |||
| 778 | 778 | ||
| 779 | 779 | ||
| 780 | ;;;###autoload | 780 | ;;;###autoload |
| 781 | (defun fortran-mode () | 781 | (define-derived-mode fortran-mode prog-mode "Fortran" |
| 782 | "Major mode for editing Fortran code in fixed format. | 782 | "Major mode for editing Fortran code in fixed format. |
| 783 | For free format code, use `f90-mode'. | 783 | For free format code, use `f90-mode'. |
| 784 | 784 | ||
| @@ -848,13 +848,9 @@ Variables controlling indentation style and extra features: | |||
| 848 | 848 | ||
| 849 | Turning on Fortran mode calls the value of the variable `fortran-mode-hook' | 849 | Turning on Fortran mode calls the value of the variable `fortran-mode-hook' |
| 850 | with no args, if that value is non-nil." | 850 | with no args, if that value is non-nil." |
| 851 | (interactive) | 851 | :group 'fortran |
| 852 | (kill-all-local-variables) | 852 | :syntax-table fortran-mode-syntax-table |
| 853 | (setq major-mode 'fortran-mode | 853 | :abbrev-table fortran-mode-abbrev-table |
| 854 | mode-name "Fortran" | ||
| 855 | local-abbrev-table fortran-mode-abbrev-table) | ||
| 856 | (set-syntax-table fortran-mode-syntax-table) | ||
| 857 | (use-local-map fortran-mode-map) | ||
| 858 | (set (make-local-variable 'indent-line-function) 'fortran-indent-line) | 854 | (set (make-local-variable 'indent-line-function) 'fortran-indent-line) |
| 859 | (set (make-local-variable 'indent-region-function) | 855 | (set (make-local-variable 'indent-region-function) |
| 860 | (lambda (start end) | 856 | (lambda (start end) |
| @@ -906,8 +902,7 @@ with no args, if that value is non-nil." | |||
| 906 | #'fortran-current-defun) | 902 | #'fortran-current-defun) |
| 907 | (set (make-local-variable 'dabbrev-case-fold-search) 'case-fold-search) | 903 | (set (make-local-variable 'dabbrev-case-fold-search) 'case-fold-search) |
| 908 | (set (make-local-variable 'gud-find-expr-function) 'fortran-gud-find-expr) | 904 | (set (make-local-variable 'gud-find-expr-function) 'fortran-gud-find-expr) |
| 909 | (add-hook 'hack-local-variables-hook 'fortran-hack-local-variables nil t) | 905 | (add-hook 'hack-local-variables-hook 'fortran-hack-local-variables nil t)) |
| 910 | (run-mode-hooks 'fortran-mode-hook)) | ||
| 911 | 906 | ||
| 912 | 907 | ||
| 913 | (defun fortran-line-length (nchars &optional global) | 908 | (defun fortran-line-length (nchars &optional global) |
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index de94620c737..3f5fa543813 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el | |||
| @@ -781,12 +781,17 @@ substitution string. Note dynamic scoping of variables.") | |||
| 781 | (file-name-nondirectory bn))) | 781 | (file-name-nondirectory bn))) |
| 782 | (default-alias | 782 | (default-alias |
| 783 | (and fn | 783 | (and fn |
| 784 | (let ((aliases grep-files-aliases) | 784 | (let ((aliases (remove (assoc "all" grep-files-aliases) |
| 785 | grep-files-aliases)) | ||
| 785 | alias) | 786 | alias) |
| 786 | (while aliases | 787 | (while aliases |
| 787 | (setq alias (car aliases) | 788 | (setq alias (car aliases) |
| 788 | aliases (cdr aliases)) | 789 | aliases (cdr aliases)) |
| 789 | (if (string-match (wildcard-to-regexp (cdr alias)) fn) | 790 | (if (string-match (mapconcat |
| 791 | 'wildcard-to-regexp | ||
| 792 | (split-string (cdr alias) nil t) | ||
| 793 | "\\|") | ||
| 794 | fn) | ||
| 790 | (setq aliases nil) | 795 | (setq aliases nil) |
| 791 | (setq alias nil))) | 796 | (setq alias nil))) |
| 792 | (cdr alias)))) | 797 | (cdr alias)))) |
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el index eb84be601de..12f561c6814 100644 --- a/lisp/progmodes/octave-mod.el +++ b/lisp/progmodes/octave-mod.el | |||
| @@ -214,6 +214,7 @@ parenthetical grouping.") | |||
| 214 | (define-key map "\C-c\M-\C-d" 'octave-down-block) | 214 | (define-key map "\C-c\M-\C-d" 'octave-down-block) |
| 215 | (define-key map "\C-c\M-\C-h" 'octave-mark-block) | 215 | (define-key map "\C-c\M-\C-h" 'octave-mark-block) |
| 216 | (define-key map "\C-c]" 'octave-close-block) | 216 | (define-key map "\C-c]" 'octave-close-block) |
| 217 | (define-key map "\C-c/" 'octave-close-block) | ||
| 217 | (define-key map "\C-c\C-f" 'octave-insert-defun) | 218 | (define-key map "\C-c\C-f" 'octave-insert-defun) |
| 218 | (define-key map "\C-c\C-h" 'octave-help) | 219 | (define-key map "\C-c\C-h" 'octave-help) |
| 219 | (define-key map "\C-c\C-il" 'octave-send-line) | 220 | (define-key map "\C-c\C-il" 'octave-send-line) |
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el index 4081791ae2e..7df42c8b9a2 100644 --- a/lisp/progmodes/subword.el +++ b/lisp/progmodes/subword.el | |||
| @@ -76,7 +76,7 @@ | |||
| 76 | ;; the old `c-forward-into-nomenclature' originally contributed by | 76 | ;; the old `c-forward-into-nomenclature' originally contributed by |
| 77 | ;; Terry_Glanfield dot Southern at rxuk dot xerox dot com. | 77 | ;; Terry_Glanfield dot Southern at rxuk dot xerox dot com. |
| 78 | 78 | ||
| 79 | ;; TODO: ispell-word and subword oriented C-w in isearch. | 79 | ;; TODO: ispell-word. |
| 80 | 80 | ||
| 81 | ;;; Code: | 81 | ;;; Code: |
| 82 | 82 | ||
diff --git a/lisp/replace.el b/lisp/replace.el index 487974073aa..d73692ccc20 100644 --- a/lisp/replace.el +++ b/lisp/replace.el | |||
| @@ -1980,6 +1980,9 @@ make, or the user didn't cancel the call." | |||
| 1980 | (isearch-regexp regexp) | 1980 | (isearch-regexp regexp) |
| 1981 | (search-whitespace-regexp nil) | 1981 | (search-whitespace-regexp nil) |
| 1982 | (isearch-case-fold-search case-fold)) | 1982 | (isearch-case-fold-search case-fold)) |
| 1983 | ;; Set isearch-word to nil because word-replace is regexp-based, | ||
| 1984 | ;; so `isearch-search-fun' should not use `word-search-forward'. | ||
| 1985 | (if (and isearch-word isearch-regexp) (setq isearch-word nil)) | ||
| 1983 | (isearch-lazy-highlight-new-loop range-beg range-end)))) | 1986 | (isearch-lazy-highlight-new-loop range-beg range-end)))) |
| 1984 | 1987 | ||
| 1985 | (defun replace-dehighlight () | 1988 | (defun replace-dehighlight () |
diff --git a/lisp/simple.el b/lisp/simple.el index 48e1148ae6b..608151e5dd2 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -4539,6 +4539,9 @@ rests." | |||
| 4539 | (let ((goal-column 0) | 4539 | (let ((goal-column 0) |
| 4540 | (line-move-visual nil)) | 4540 | (line-move-visual nil)) |
| 4541 | (and (line-move arg t) | 4541 | (and (line-move arg t) |
| 4542 | ;; With bidi reordering, we may not be at bol, | ||
| 4543 | ;; so make sure we are. | ||
| 4544 | (skip-chars-backward "^\n") | ||
| 4542 | (not (bobp)) | 4545 | (not (bobp)) |
| 4543 | (progn | 4546 | (progn |
| 4544 | (while (and (not (bobp)) (invisible-p (1- (point)))) | 4547 | (while (and (not (bobp)) (invisible-p (1- (point)))) |
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index 732f7d19cf9..e9cba88ea1a 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el | |||
| @@ -457,8 +457,8 @@ BUF contains a plain diff between match-1 and match-3." | |||
| 457 | 457 | ||
| 458 | (defun smerge-resolve (&optional safe) | 458 | (defun smerge-resolve (&optional safe) |
| 459 | "Resolve the conflict at point intelligently. | 459 | "Resolve the conflict at point intelligently. |
| 460 | This relies on mode-specific knowledge and thus only works in | 460 | This relies on mode-specific knowledge and thus only works in some |
| 461 | some major modes. Uses `smerge-resolve-function' to do the actual work." | 461 | major modes. Uses `smerge-resolve-function' to do the actual work." |
| 462 | (interactive) | 462 | (interactive) |
| 463 | (smerge-match-conflict) | 463 | (smerge-match-conflict) |
| 464 | (smerge-remove-props (match-beginning 0) (match-end 0)) | 464 | (smerge-remove-props (match-beginning 0) (match-end 0)) |
| @@ -815,12 +815,12 @@ Its behavior has mainly two restrictions: | |||
| 815 | This only matters if `smerge-refine-weight-hack' is nil.") | 815 | This only matters if `smerge-refine-weight-hack' is nil.") |
| 816 | 816 | ||
| 817 | (defvar smerge-refine-ignore-whitespace t | 817 | (defvar smerge-refine-ignore-whitespace t |
| 818 | "If non-nil,Indicate that smerge-refine should try to ignore change in whitespace.") | 818 | "If non-nil, indicate that `smerge-refine' should try to ignore change in whitespace.") |
| 819 | 819 | ||
| 820 | (defvar smerge-refine-weight-hack t | 820 | (defvar smerge-refine-weight-hack t |
| 821 | "If non-nil, pass to diff as many lines as there are chars in the region. | 821 | "If non-nil, pass to diff as many lines as there are chars in the region. |
| 822 | I.e. each atomic element (e.g. word) will be copied as many times (on different | 822 | I.e. each atomic element (e.g. word) will be copied as many times (on different |
| 823 | lines) as it has chars. This has 2 advantages: | 823 | lines) as it has chars. This has two advantages: |
| 824 | - if `diff' tries to minimize the number *lines* (rather than chars) | 824 | - if `diff' tries to minimize the number *lines* (rather than chars) |
| 825 | added/removed, this adjust the weights so that adding/removing long | 825 | added/removed, this adjust the weights so that adding/removing long |
| 826 | symbols is considered correspondingly more costly. | 826 | symbols is considered correspondingly more costly. |
| @@ -919,8 +919,8 @@ chars to try and eliminate some spurious differences." | |||
| 919 | "Show fine differences in the two regions BEG1..END1 and BEG2..END2. | 919 | "Show fine differences in the two regions BEG1..END1 and BEG2..END2. |
| 920 | PROPS is an alist of properties to put (via overlays) on the changes. | 920 | PROPS is an alist of properties to put (via overlays) on the changes. |
| 921 | If non-nil, PREPROC is called with no argument in a buffer that contains | 921 | If non-nil, PREPROC is called with no argument in a buffer that contains |
| 922 | a copy of a region, just before preparing it to for `diff'. It can be used to | 922 | a copy of a region, just before preparing it to for `diff'. It can be |
| 923 | replace chars to try and eliminate some spurious differences." | 923 | used to replace chars to try and eliminate some spurious differences." |
| 924 | (let* ((buf (current-buffer)) | 924 | (let* ((buf (current-buffer)) |
| 925 | (pos (point)) | 925 | (pos (point)) |
| 926 | (file1 (make-temp-file "diff1")) | 926 | (file1 (make-temp-file "diff1")) |
| @@ -988,9 +988,9 @@ replace chars to try and eliminate some spurious differences." | |||
| 988 | 988 | ||
| 989 | (defun smerge-refine (&optional part) | 989 | (defun smerge-refine (&optional part) |
| 990 | "Highlight the words of the conflict that are different. | 990 | "Highlight the words of the conflict that are different. |
| 991 | For 3-way conflicts, highlights only 2 of the 3 parts. | 991 | For 3-way conflicts, highlights only two of the three parts. |
| 992 | A numeric argument PART can be used to specify which 2 parts; | 992 | A numeric argument PART can be used to specify which two parts; |
| 993 | repeating the command will highlight other 2 parts." | 993 | repeating the command will highlight other two parts." |
| 994 | (interactive | 994 | (interactive |
| 995 | (if (integerp current-prefix-arg) (list current-prefix-arg) | 995 | (if (integerp current-prefix-arg) (list current-prefix-arg) |
| 996 | (smerge-match-conflict) | 996 | (smerge-match-conflict) |
| @@ -1161,7 +1161,7 @@ buffer names." | |||
| 1161 | 1161 | ||
| 1162 | (defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4) | 1162 | (defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4) |
| 1163 | "Insert diff3 markers to make a new conflict. | 1163 | "Insert diff3 markers to make a new conflict. |
| 1164 | Uses point and mark for 2 of the relevant positions and previous marks | 1164 | Uses point and mark for two of the relevant positions and previous marks |
| 1165 | for the other ones. | 1165 | for the other ones. |
| 1166 | By default, makes up a 2-way conflict, | 1166 | By default, makes up a 2-way conflict, |
| 1167 | with a \\[universal-argument] prefix, makes up a 3-way conflict." | 1167 | with a \\[universal-argument] prefix, makes up a 3-way conflict." |
| @@ -1184,7 +1184,7 @@ with a \\[universal-argument] prefix, makes up a 3-way conflict." | |||
| 1184 | (insert "<<<<<<< MINE\n")) | 1184 | (insert "<<<<<<< MINE\n")) |
| 1185 | (if smerge-mode nil (smerge-mode 1)) | 1185 | (if smerge-mode nil (smerge-mode 1)) |
| 1186 | (smerge-refine)) | 1186 | (smerge-refine)) |
| 1187 | 1187 | ||
| 1188 | 1188 | ||
| 1189 | (defconst smerge-parsep-re | 1189 | (defconst smerge-parsep-re |
| 1190 | (concat smerge-begin-re "\\|" smerge-end-re "\\|" | 1190 | (concat smerge-begin-re "\\|" smerge-end-re "\\|" |
diff --git a/lisp/vc-dir.el b/lisp/vc-dir.el index f24e627de64..5809110e5b5 100644 --- a/lisp/vc-dir.el +++ b/lisp/vc-dir.el | |||
| @@ -1169,7 +1169,8 @@ These are the commands available for use in the file status buffer: | |||
| 1169 | nil t nil nil))))) | 1169 | nil t nil nil))))) |
| 1170 | (unless backend | 1170 | (unless backend |
| 1171 | (setq backend (vc-responsible-backend dir))) | 1171 | (setq backend (vc-responsible-backend dir))) |
| 1172 | (pop-to-buffer (vc-dir-prepare-status-buffer "*vc-dir*" dir backend)) | 1172 | (let (pop-up-windows) ; based on cvs-examine; bug#6204 |
| 1173 | (pop-to-buffer (vc-dir-prepare-status-buffer "*vc-dir*" dir backend))) | ||
| 1173 | (if (derived-mode-p 'vc-dir-mode) | 1174 | (if (derived-mode-p 'vc-dir-mode) |
| 1174 | (vc-dir-refresh) | 1175 | (vc-dir-refresh) |
| 1175 | ;; FIXME: find a better way to pass the backend to `vc-dir-mode'. | 1176 | ;; FIXME: find a better way to pass the backend to `vc-dir-mode'. |
| @@ -121,8 +121,8 @@ while [ $# -gt 0 ]; do | |||
| 121 | done | 121 | done |
| 122 | 122 | ||
| 123 | ### Make sure we're running in the right place. | 123 | ### Make sure we're running in the right place. |
| 124 | if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/version.el ]; then | 124 | if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/subr.el ]; then |
| 125 | echo "${progname}: Can't find \`src/lisp.h' and \`lisp/version.el'." >&2 | 125 | echo "${progname}: Can't find \`src/lisp.h' and \`lisp/subr.el'." >&2 |
| 126 | echo "${progname} must be run in the top directory of the Emacs" >&2 | 126 | echo "${progname} must be run in the top directory of the Emacs" >&2 |
| 127 | echo "distribution tree. cd to that directory and try again." >&2 | 127 | echo "distribution tree. cd to that directory and try again." >&2 |
| 128 | exit 1 | 128 | exit 1 |
| @@ -150,12 +150,12 @@ then | |||
| 150 | fi | 150 | fi |
| 151 | 151 | ||
| 152 | ### Find out which version of Emacs this is. | 152 | ### Find out which version of Emacs this is. |
| 153 | shortversion=`grep 'defconst[ ]*emacs-version' lisp/version.el \ | 153 | shortversion=`grep 'char emacs_version' src/emacs.c \ |
| 154 | | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'` | 154 | | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'` |
| 155 | version=`grep 'defconst[ ]*emacs-version' lisp/version.el \ | 155 | version=`grep 'char emacs_version' src/emacs.c \ |
| 156 | | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'` | 156 | | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'` |
| 157 | if [ ! "${version}" ]; then | 157 | if [ ! "${version}" ]; then |
| 158 | echo "${progname}: can't find current Emacs version in \`./lisp/version.el'" >&2 | 158 | echo "${progname}: can't find current Emacs version in \`./src/emacs.c'" >&2 |
| 159 | exit 1 | 159 | exit 1 |
| 160 | fi | 160 | fi |
| 161 | 161 | ||
| @@ -440,6 +440,7 @@ echo "Making links to \`src'" | |||
| 440 | ln [a-zA-Z]*.h ../${tempdir}/src | 440 | ln [a-zA-Z]*.h ../${tempdir}/src |
| 441 | ln [a-zA-Z]*.m ../${tempdir}/src | 441 | ln [a-zA-Z]*.m ../${tempdir}/src |
| 442 | ln [a-zA-Z]*.in ../${tempdir}/src | 442 | ln [a-zA-Z]*.in ../${tempdir}/src |
| 443 | ln [a-zA-Z]*.mk ../${tempdir}/src | ||
| 443 | ## If we ended up with a symlink, or if we did not get anything | 444 | ## If we ended up with a symlink, or if we did not get anything |
| 444 | ## due to a cross-device symlink, copy the file. | 445 | ## due to a cross-device symlink, copy the file. |
| 445 | for file in [a-zA-Z]*.[hcs] [a-zA-Z]*.in; do | 446 | for file in [a-zA-Z]*.[hcs] [a-zA-Z]*.in; do |
diff --git a/msdos/ChangeLog b/msdos/ChangeLog index fd320d85920..54e9f9cbe76 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog | |||
| @@ -1,3 +1,24 @@ | |||
| 1 | 2010-05-21 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * sed1v2.inp(@ns_frag@): Edit to nothing. | ||
| 4 | |||
| 5 | * sed1x.inp (OLDXMENU): Replace any initial value. | ||
| 6 | * sed1v2.inp (OLDXMENU): Edit to "nothing". | ||
| 7 | |||
| 8 | * sed1v2.inp (CANNOT_DUMP): Edit to no. | ||
| 9 | |||
| 10 | 2010-05-20 Glenn Morris <rgm@gnu.org> | ||
| 11 | |||
| 12 | * sed1v2.inp (DEPFLAGS, deps_frag): Edit to empty. | ||
| 13 | (MKDEPDIR): Edit to ':'. | ||
| 14 | |||
| 15 | 2010-05-19 Glenn Morris <rgm@gnu.org> | ||
| 16 | |||
| 17 | * sed2v2.inp (ORDINARY_LINK): Set here rather than in s/msdos.h. | ||
| 18 | |||
| 19 | * sed1v2.inp (LD): Edit to $(CC). | ||
| 20 | (YMF_PASS_LDFLAGS): Edit to `flags'. | ||
| 21 | |||
| 1 | 2010-05-18 Eli Zaretskii <eliz@gnu.org> | 22 | 2010-05-18 Eli Zaretskii <eliz@gnu.org> |
| 2 | 23 | ||
| 3 | * sed1x.inp: Add copyright notice. | 24 | * sed1x.inp: Add copyright notice. |
diff --git a/msdos/mainmake.v2 b/msdos/mainmake.v2 index 7044b82f64f..271db707e37 100644 --- a/msdos/mainmake.v2 +++ b/msdos/mainmake.v2 | |||
| @@ -68,10 +68,10 @@ top_srcdir := $(subst \,/,$(shell cd)) | |||
| 68 | version := ${shell sed -n -e '/(defconst emacs-version/s/^[^"]*\("[^"]*"\).*/\1/p' lisp/version.el} | 68 | version := ${shell sed -n -e '/(defconst emacs-version/s/^[^"]*\("[^"]*"\).*/\1/p' lisp/version.el} |
| 69 | 69 | ||
| 70 | # Q: Do we need to bootstrap? | 70 | # Q: Do we need to bootstrap? |
| 71 | # A: Only if we find admin/admin.el, i.e. we are building out of CVS, | 71 | # A: Only if we find admin/admin.el, i.e. we are building out of |
| 72 | # and src/b-emacs.exe does not exist. This avoids building a | 72 | # a VCS-checkout (not a release) and src/b-emacs.exe does not exist. |
| 73 | # bootstrap-emacs and recompiling Lisp files when building a | 73 | # This avoids building a bootstrap-emacs and recompiling Lisp files |
| 74 | # pretest/release tarball. | 74 | # when building a pretest/release tarball. |
| 75 | boot := | 75 | boot := |
| 76 | ifneq ($(wildcard admin/admin.el),) | 76 | ifneq ($(wildcard admin/admin.el),) |
| 77 | ifeq ($(wildcard src/b-emacs.exe),) | 77 | ifeq ($(wildcard src/b-emacs.exe),) |
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index 574910d2beb..ca397e6b08b 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp | |||
| @@ -55,6 +55,7 @@ s/\.h\.in/.h-in/ | |||
| 55 | /^TEMACS_LDFLAGS2 *=/s/@TEMACS_LDFLAGS2@/$(LDFLAGS)/ | 55 | /^TEMACS_LDFLAGS2 *=/s/@TEMACS_LDFLAGS2@/$(LDFLAGS)/ |
| 56 | /^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@// | 56 | /^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@// |
| 57 | /^LIB_GCC *=/s/@LIB_GCC@/-Lgcc/ | 57 | /^LIB_GCC *=/s/@LIB_GCC@/-Lgcc/ |
| 58 | /^LD *=/s/@LINKER@/$(CC)/ | ||
| 58 | /^LIB_STANDARD *=/s/@LIB_STANDARD@// | 59 | /^LIB_STANDARD *=/s/@LIB_STANDARD@// |
| 59 | /^LIB_MATH *=/s/@LIB_MATH@/-lm/ | 60 | /^LIB_MATH *=/s/@LIB_MATH@/-lm/ |
| 60 | /^LIBTIFF *=/s/@LIBTIFF@// | 61 | /^LIBTIFF *=/s/@LIBTIFF@// |
| @@ -113,7 +114,7 @@ s/\.h\.in/.h-in/ | |||
| 113 | /^WINDOW_SUPPORT *=/s/@WINDOW_SUPPORT@// | 114 | /^WINDOW_SUPPORT *=/s/@WINDOW_SUPPORT@// |
| 114 | /^LIBGPM *=/s/@LIBGPM@// | 115 | /^LIBGPM *=/s/@LIBGPM@// |
| 115 | /^EXEEXT *=/s/@EXEEXT@/.exe/ | 116 | /^EXEEXT *=/s/@EXEEXT@/.exe/ |
| 116 | /^OLDXMENU *=/s/@OLDXMENU@// | 117 | /^OLDXMENU *=/s/@OLDXMENU@/nothing/ |
| 117 | /^LIBXMENU *=/s/@LIBXMENU@// | 118 | /^LIBXMENU *=/s/@LIBXMENU@// |
| 118 | /^LIBX_OTHER *=/s/@LIBX_OTHER@// | 119 | /^LIBX_OTHER *=/s/@LIBX_OTHER@// |
| 119 | /^GMALLOC_OBJ *=/s/@GMALLOC_OBJ@/gmalloc.o/ | 120 | /^GMALLOC_OBJ *=/s/@GMALLOC_OBJ@/gmalloc.o/ |
| @@ -122,6 +123,9 @@ s/\.h\.in/.h-in/ | |||
| 122 | /^PRE_ALLOC_OBJ *=/s/@PRE_ALLOC_OBJ@/lastfile.o/ | 123 | /^PRE_ALLOC_OBJ *=/s/@PRE_ALLOC_OBJ@/lastfile.o/ |
| 123 | /^POST_ALLOC_OBJ *=/s/@POST_ALLOC_OBJ@/$(vmlimitobj)/ | 124 | /^POST_ALLOC_OBJ *=/s/@POST_ALLOC_OBJ@/$(vmlimitobj)/ |
| 124 | /^UNEXEC_OBJ *=/s/@unexec@/unexec.o/ | 125 | /^UNEXEC_OBJ *=/s/@unexec@/unexec.o/ |
| 126 | /^CANNOT_DUMP *=/s/@cannot_dump@/no/ | ||
| 127 | /^DEPFLAGS *=/s/@DEPFLAGS@// | ||
| 128 | /^MKDEPDIR *=/s/@MKDEPDIR@/:/ | ||
| 125 | /^version *=/s/@[^@\n]*@// | 129 | /^version *=/s/@[^@\n]*@// |
| 126 | /^M_FILE *=/s!@[^@\n]*@!m/intel386.h! | 130 | /^M_FILE *=/s!@[^@\n]*@!m/intel386.h! |
| 127 | /^S_FILE *=/s!@[^@\n]*@!s/msdos.h! | 131 | /^S_FILE *=/s!@[^@\n]*@!s/msdos.h! |
| @@ -143,6 +147,9 @@ s/\.h\.in/.h-in/ | |||
| 143 | /^ @: /d | 147 | /^ @: /d |
| 144 | /^ -\{0,1\}ln -/s/ln -f/cp -pf/ | 148 | /^ -\{0,1\}ln -/s/ln -f/cp -pf/ |
| 145 | /^[ ]touch /s/touch/djecho $@ >/ | 149 | /^[ ]touch /s/touch/djecho $@ >/ |
| 150 | s/@YMF_PASS_LDFLAGS@/flags/ | ||
| 151 | s/@deps_frag@// | ||
| 152 | s/@ns_frag@// | ||
| 146 | s/bootstrap-emacs/b-emacs/ | 153 | s/bootstrap-emacs/b-emacs/ |
| 147 | s/bootstrap-temacs/b-temacs/ | 154 | s/bootstrap-temacs/b-temacs/ |
| 148 | s/bootstrap-doc/b-doc/ | 155 | s/bootstrap-doc/b-doc/ |
diff --git a/msdos/sed1x.inp b/msdos/sed1x.inp index 118b00c2538..aa755ee784f 100644 --- a/msdos/sed1x.inp +++ b/msdos/sed1x.inp | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | s!^ cd \${oldXMenudir}; \${MAKE}.*$! ${MAKE} -C ${oldXMenudir}.! | 19 | s!^ cd \${oldXMenudir}; \${MAKE}.*$! ${MAKE} -C ${oldXMenudir}.! |
| 20 | s!^ @true *$! @rem! | 20 | s!^ @true *$! @rem! |
| 21 | s/DOC/DOC-X/g | 21 | s/DOC/DOC-X/g |
| 22 | /^OLDXMENU *=/s!= *!= ${oldXMenudir}libXMenu11.a! | 22 | /^OLDXMENU *=/s!=.*!= ${oldXMenudir}libXMenu11.a! |
| 23 | /^LIBXMENU *=/s!= *!= ${OLDXMENU}! | 23 | /^LIBXMENU *=/s!= *!= ${OLDXMENU}! |
| 24 | /^LIBX_OTHER *=/s!= *!= ${LIBXT} ${LIBX_EXTRA}! | 24 | /^LIBX_OTHER *=/s!= *!= ${LIBXT} ${LIBX_EXTRA}! |
| 25 | /^OLDXMENU_TARGET *=/s!= *!= really-oldxmenu! | 25 | /^OLDXMENU_TARGET *=/s!= *!= really-oldxmenu! |
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index ea3f1718646..ab088cf2724 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp | |||
| @@ -52,6 +52,7 @@ | |||
| 52 | /^#undef HAVE_MKSTEMP *$/s/^.*$/#define HAVE_MKSTEMP 1/ | 52 | /^#undef HAVE_MKSTEMP *$/s/^.*$/#define HAVE_MKSTEMP 1/ |
| 53 | /^#undef HAVE_STRUCT_TM_TM_ZONE *$/s/^.*$/#define HAVE_STRUCT_TM_TM_ZONE 1/ | 53 | /^#undef HAVE_STRUCT_TM_TM_ZONE *$/s/^.*$/#define HAVE_STRUCT_TM_TM_ZONE 1/ |
| 54 | /^#undef HAVE_SYNC *$/s/^.*$/#define HAVE_SYNC 1/ | 54 | /^#undef HAVE_SYNC *$/s/^.*$/#define HAVE_SYNC 1/ |
| 55 | /^#undef ORDINARY_LINK/s/^.*$/#define ORDINARY_LINK 1/ | ||
| 55 | /^#undef PACKAGE_BUGREPORT/s/^.*$/#define PACKAGE_BUGREPORT ""/ | 56 | /^#undef PACKAGE_BUGREPORT/s/^.*$/#define PACKAGE_BUGREPORT ""/ |
| 56 | /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ | 57 | /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ |
| 57 | /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ | 58 | /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ |
diff --git a/src/.gdbinit b/src/.gdbinit index 5ecdaa4a572..1fd7e288736 100644 --- a/src/.gdbinit +++ b/src/.gdbinit | |||
| @@ -616,7 +616,7 @@ Pretty print all glyphs in it->glyph_row. | |||
| 616 | end | 616 | end |
| 617 | 617 | ||
| 618 | define prowlims | 618 | define prowlims |
| 619 | printf "start=%d,end=%d,reversed=%d,cont=%d,at_zv=%d\n", $arg0->start.pos.charpos, $arg0->end.pos.charpos, $arg0->reversed_p, $arg0->continued_p, $arg0->ends_at_zv_p | 619 | printf "edges=(%d,%d),r2l=%d,cont=%d,trunc=(%d,%d),at_zv=%d\n", $arg0->minpos.charpos, $arg0->maxpos.charpos, $arg0->reversed_p, $arg0->continued_p, $arg0->truncated_on_left_p, $arg0->truncated_on_right_p, $arg0->ends_at_zv_p |
| 620 | end | 620 | end |
| 621 | document prowlims | 621 | document prowlims |
| 622 | Print important attributes of a glyph_row structure. | 622 | Print important attributes of a glyph_row structure. |
| @@ -626,10 +626,13 @@ end | |||
| 626 | define pmtxrows | 626 | define pmtxrows |
| 627 | set $mtx = $arg0 | 627 | set $mtx = $arg0 |
| 628 | set $gl = $mtx->rows | 628 | set $gl = $mtx->rows |
| 629 | set $glend = $mtx->rows + $mtx->nrows | 629 | set $glend = $mtx->rows + $mtx->nrows - 1 |
| 630 | set $i = 0 | ||
| 630 | while ($gl < $glend) | 631 | while ($gl < $glend) |
| 632 | printf "%d: ", $i | ||
| 631 | prowlims $gl | 633 | prowlims $gl |
| 632 | set $gl = $gl + 1 | 634 | set $gl = $gl + 1 |
| 635 | set $i = $i + 1 | ||
| 633 | end | 636 | end |
| 634 | end | 637 | end |
| 635 | document pmtxrows | 638 | document pmtxrows |
diff --git a/src/ChangeLog b/src/ChangeLog index 347ee7b1f20..67911d5def3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -21,6 +21,139 @@ | |||
| 21 | is at the last character of the current grapheme cluster when | 21 | is at the last character of the current grapheme cluster when |
| 22 | CMP_IT->reversed_p is nonzero. | 22 | CMP_IT->reversed_p is nonzero. |
| 23 | 23 | ||
| 24 | 2010-05-24 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 25 | |||
| 26 | * process.c (Fmake_network_process): Set :host to nil if it's not used. | ||
| 27 | Suggested by Masatake YAMATO <yamato@redhat.com>. | ||
| 28 | |||
| 29 | 2010-05-23 Eli Zaretskii <eliz@gnu.org> | ||
| 30 | |||
| 31 | * dispextern.h (init_iterator): Sync prototype with changed | ||
| 32 | definition. | ||
| 33 | |||
| 34 | 2010-05-19 Eli Zaretskii <eliz@gnu.org> | ||
| 35 | |||
| 36 | Redesign and reimplement bidi-aware edge positions of glyph rows. | ||
| 37 | |||
| 38 | * dispextern.h (struct glyph_row): New members minpos and maxpos. | ||
| 39 | (MATRIX_ROW_START_CHARPOS, MATRIX_ROW_START_BYTEPOS) | ||
| 40 | (MATRIX_ROW_END_CHARPOS, MATRIX_ROW_END_BYTEPOS): Reference minpos | ||
| 41 | and maxpos members instead of start.pos and end.pos, respectively. | ||
| 42 | |||
| 43 | * xdisp.c (display_line): Compare IT_CHARPOS with the position in | ||
| 44 | row->start.pos, rather than with MATRIX_ROW_START_CHARPOS. | ||
| 45 | (cursor_row_p): Use row->end.pos rather than MATRIX_ROW_END_CHARPOS. | ||
| 46 | (try_window_reusing_current_matrix, try_window_id): | ||
| 47 | Use ROW->minpos rather than ROW->start.pos. | ||
| 48 | (init_from_display_pos, init_iterator): Use EMACS_INT for | ||
| 49 | character and byte positions. | ||
| 50 | (find_row_edges): Rename from find_row_end. Accept additional | ||
| 51 | arguments for minimum and maximum buffer positions seen by | ||
| 52 | display_line for this row. Don't use iterator to find the | ||
| 53 | position following the maximum one; instead, increment the | ||
| 54 | position found by display_line directly. Fix logic; eol_pos | ||
| 55 | should be tested before the rest. Handle the case of characters | ||
| 56 | delivered from display vector (bug#6036). Fix tests related to | ||
| 57 | it->method. Handle the truncated_on_right_p rows. | ||
| 58 | (RECORD_MAX_MIN_POS): New macro. | ||
| 59 | (display_line): Use it to record the minimum and maximum buffer | ||
| 60 | positions for glyphs in the row being assembled. Record the | ||
| 61 | position of the newline that terminates the line. If word wrap is | ||
| 62 | in effect, restore minimum and maximum positions seen up to the | ||
| 63 | wrap point, when iterator returns to it. | ||
| 64 | (try_window_reusing_current_matrix): Give up if in bidi-reordered | ||
| 65 | row and cursor not already at point. Restore original pre-bidi | ||
| 66 | code for unidirectional buffers. | ||
| 67 | |||
| 68 | * dispnew.c (increment_row_positions, check_matrix_invariants): | ||
| 69 | Increment and check row->start.pos and row->end.pos, in addition | ||
| 70 | to MATRIX_ROW_START_CHARPOS and MATRIX_ROW_END_CHARPOS. | ||
| 71 | |||
| 72 | * .gdbinit (prowlims): Display row->minpos and row->maxpos. | ||
| 73 | Display truncated_on_left_p and truncated_on_right_p flags. | ||
| 74 | Formatting fixes. | ||
| 75 | (pmtxrows): Display the ordinal number of each row. Don't display | ||
| 76 | rows beyond the last one. | ||
| 77 | |||
| 78 | * bidi.c (bidi_cache_iterator_state): Don't zero out new_paragraph: | ||
| 79 | it is not copied by bidi_copy_it. | ||
| 80 | |||
| 81 | 2010-05-22 Eli Zaretskii <eliz@gnu.org> | ||
| 82 | |||
| 83 | * w32.c (sys_write): Break writes into chunks smaller than 32MB. | ||
| 84 | (Bug#6237) | ||
| 85 | |||
| 86 | 2010-05-22 Chong Yidong <cyd@stupidchicken.com> | ||
| 87 | |||
| 88 | * image.c (Fimage_flush): Rename from image-refresh. | ||
| 89 | |||
| 90 | 2010-05-21 Chong Yidong <cyd@stupidchicken.com> | ||
| 91 | |||
| 92 | * xdisp.c (redisplay_internal): Clear caches even if redisplaying | ||
| 93 | just one window. | ||
| 94 | |||
| 95 | * image.c (Vimage_cache_eviction_delay): Decrease to 300. | ||
| 96 | (clear_image_cache): If the number of cached images is unusually | ||
| 97 | large, decrease the cache eviction delay (Bug#6230). | ||
| 98 | |||
| 99 | 2010-05-21 Glenn Morris <rgm@gnu.org> | ||
| 100 | |||
| 101 | * Makefile.in (${ns_appdir}, ${ns_appbindir}Emacs, ns-app): | ||
| 102 | Move these rules to ns.mk. | ||
| 103 | * ns.mk: New file. | ||
| 104 | |||
| 105 | * Makefile.in (../src/$(OLDXMENU), $(OLDXMENU)): Always define rules. | ||
| 106 | |||
| 107 | * Makefile.in (CANNOT_DUMP): New, set by configure. | ||
| 108 | (emacs${EXEEXT}, bootstrap-emacs${EXEEXT}): Use $CANNOT_DUMP. | ||
| 109 | |||
| 110 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 111 | |||
| 112 | * fileio.c (Fdelete_file): Change interative spec to use | ||
| 113 | `read-file-name' like in `find-file-read-args' where the default | ||
| 114 | value is `default-directory' instead of `buffer-file-name'. | ||
| 115 | http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00533.html | ||
| 116 | |||
| 117 | 2010-05-20 Kevin Ryde <user42@zip.com.au> | ||
| 118 | |||
| 119 | * keyboard.c (Vlast_command, Vkeyboard_translate_table) | ||
| 120 | (Voverriding_terminal_local_map, Vsystem_key_alist) | ||
| 121 | (Vlocal_function_key_map): Fix manual link in docstring (Bug#6224). | ||
| 122 | |||
| 123 | 2010-05-20 Glenn Morris <rgm@gnu.org> | ||
| 124 | |||
| 125 | * Makefile.in (DEPDIR): New constant. | ||
| 126 | (DEPFLAGS): Set with configure, not cpp. | ||
| 127 | (MKDEPDIR): New, set by configure. | ||
| 128 | (.c.o, .m.o, ecrt0.o): Use $MKDEPDIR. | ||
| 129 | (clean): Use $DEPDIR. | ||
| 130 | (deps_frag): Include from configure. | ||
| 131 | Move static/dynamic dependency stuff to deps.mk/autodeps.mk. | ||
| 132 | * deps.mk, autodeps.mk: New files, extracted from Makefile.in. | ||
| 133 | |||
| 134 | * bidi.c (bidi_cache_shrink, bidi_cache_iterator_state): Fix | ||
| 135 | reallocation of the cache. (Bug#6210) | ||
| 136 | |||
| 137 | 2010-05-19 Glenn Morris <rgm@gnu.org> | ||
| 138 | |||
| 139 | * s/msdos.h (ORDINARY_LINK): Move to sed2v2.inp. | ||
| 140 | |||
| 141 | * Makefile.in (LD, YMF_PASS_LDFLAGS): Set with configure, not cpp. | ||
| 142 | (GNULIB_VAR): Remove. | ||
| 143 | (LIBES): Use LIB_GCC instead of GNULIB_VAR. | ||
| 144 | |||
| 145 | * m/ibms390x.h (LINKER): | ||
| 146 | * m/macppc.h (LINKER) [GNU_LINUX]: | ||
| 147 | * s/aix4-2.h (ORDINARY_LINK): | ||
| 148 | * s/cygwin.h (LINKER): | ||
| 149 | * s/darwin.h (ORDINARY_LINK): | ||
| 150 | * s/gnu.h (ORDINARY_LINK): | ||
| 151 | * s/netbsd.h (LINKER): | ||
| 152 | * s/usg5-4.h (ORDINARY_LINK): | ||
| 153 | Move to configure. | ||
| 154 | |||
| 155 | * s/aix4-2.h (LINKER): Remove; this file sets ORDINARY_LINK. | ||
| 156 | |||
| 24 | 2010-05-18 Chong Yidong <cyd@stupidchicken.com> | 157 | 2010-05-18 Chong Yidong <cyd@stupidchicken.com> |
| 25 | 158 | ||
| 26 | * character.c (Fstring, Funibyte_string): Use SAFE_ALLOCA to | 159 | * character.c (Fstring, Funibyte_string): Use SAFE_ALLOCA to |
| @@ -120,6 +253,8 @@ | |||
| 120 | * xdisp.c (Fcurrent_bidi_paragraph_direction): New function. | 253 | * xdisp.c (Fcurrent_bidi_paragraph_direction): New function. |
| 121 | (syms_of_xdisp): Defsubr it. | 254 | (syms_of_xdisp): Defsubr it. |
| 122 | 255 | ||
| 256 | * cmds.c (Fforward_char, Fbackward_char): Doc fix. | ||
| 257 | |||
| 123 | * Makefile.in: Fix MSDOS-related comments. | 258 | * Makefile.in: Fix MSDOS-related comments. |
| 124 | 259 | ||
| 125 | 2010-05-15 Glenn Morris <rgm@gnu.org> | 260 | 2010-05-15 Glenn Morris <rgm@gnu.org> |
diff --git a/src/Makefile.in b/src/Makefile.in index 676d2a0834e..554caa44a97 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -124,6 +124,8 @@ LIBS_SYSTEM=@LIBS_SYSTEM@ | |||
| 124 | ## Where to find libgcc.a, if using gcc and necessary. | 124 | ## Where to find libgcc.a, if using gcc and necessary. |
| 125 | LIB_GCC=@LIB_GCC@ | 125 | LIB_GCC=@LIB_GCC@ |
| 126 | 126 | ||
| 127 | LD=@LINKER@ | ||
| 128 | |||
| 127 | ## May use $CRT_DIR. | 129 | ## May use $CRT_DIR. |
| 128 | LIB_STANDARD=@LIB_STANDARD@ | 130 | LIB_STANDARD=@LIB_STANDARD@ |
| 129 | 131 | ||
| @@ -171,13 +173,20 @@ LIBXTR6=@LIBXTR6@ | |||
| 171 | ## Only used if HAVE_X_WINDOWS. | 173 | ## Only used if HAVE_X_WINDOWS. |
| 172 | LIBXT_OTHER=@LIBXT_OTHER@ | 174 | LIBXT_OTHER=@LIBXT_OTHER@ |
| 173 | 175 | ||
| 174 | ## Only used if HAVE_X11 && !USE_GTK. | 176 | ## If !HAVE_X11 || USE_GTK, empty. |
| 175 | ## really-lwlib if USE_X_TOOLKIT, else really-oldxmenu. | 177 | ## Else if USE_X_TOOLKIT really-lwlib, else really-oldxmenu. |
| 176 | OLDXMENU_TARGET=@OLDXMENU_TARGET@ | 178 | OLDXMENU_TARGET=@OLDXMENU_TARGET@ |
| 177 | 179 | ||
| 178 | ## If !HAVE_X11 || USE_GTK, empty. | 180 | ## If !HAVE_X11 || USE_GTK, empty. |
| 179 | ## Else if USE_X_TOOLKIT, ${lwlibdir}liblw.a. | 181 | ## Else if USE_X_TOOLKIT, ${lwlibdir}liblw.a. |
| 180 | ## Else ${oldXMenudir}libXMenu11.a. | 182 | ## Else ${oldXMenudir}libXMenu11.a. |
| 183 | ## (Actually, rather than being empty, it is set to "nothing". | ||
| 184 | ## It is never actually used for anything in this case. | ||
| 185 | ## This is done because there is a rule with target $(OLDXMENU) below, | ||
| 186 | ## and I think it might be a syntax error with some makes to have | ||
| 187 | ## an empty target, even if the associated rule is never run. | ||
| 188 | ## http://lists.gnu.org/archive/html/help-make/2010-05/msg00058.html | ||
| 189 | ## The alternative would be to put that rule in a makefile fragment.) | ||
| 181 | OLDXMENU=@OLDXMENU@ | 190 | OLDXMENU=@OLDXMENU@ |
| 182 | 191 | ||
| 183 | ## If HAVE_X11 && !USE_GTK, ${OLDXMENU} ../src/${OLDXMENU}; else empty. | 192 | ## If HAVE_X11 && !USE_GTK, ${OLDXMENU} ../src/${OLDXMENU}; else empty. |
| @@ -282,16 +291,20 @@ START_FILES = @START_FILES@ | |||
| 282 | 291 | ||
| 283 | UNEXEC_OBJ = @unexec@ | 292 | UNEXEC_OBJ = @unexec@ |
| 284 | 293 | ||
| 294 | CANNOT_DUMP=@cannot_dump@ | ||
| 295 | |||
| 296 | DEPDIR=deps | ||
| 297 | ## -MMD -MF ${DEPDIR}/$*.d if AUTO_DEPEND; else empty. | ||
| 298 | DEPFLAGS=@DEPFLAGS@ | ||
| 299 | ## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'. | ||
| 300 | MKDEPDIR=@MKDEPDIR@ | ||
| 301 | |||
| 285 | # ========================== start of cpp stuff ======================= | 302 | # ========================== start of cpp stuff ======================= |
| 286 | /* From here on, comments must be done in C syntax. */ | 303 | /* From here on, comments must be done in C syntax. */ |
| 287 | 304 | ||
| 288 | #define NOT_C_CODE | 305 | #define NOT_C_CODE |
| 289 | #include "config.h" | 306 | #include "config.h" |
| 290 | 307 | ||
| 291 | #ifdef AUTO_DEPEND | ||
| 292 | DEPFLAGS = -MMD -MF deps/$*.d | ||
| 293 | #endif | ||
| 294 | |||
| 295 | /* If NS_IMPL_GNUSTEP, some definitions and includes are expanded here. */ | 308 | /* If NS_IMPL_GNUSTEP, some definitions and includes are expanded here. */ |
| 296 | @NS_IMPL_GNUSTEP_INC@ | 309 | @NS_IMPL_GNUSTEP_INC@ |
| 297 | 310 | ||
| @@ -318,63 +331,13 @@ ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS) | |||
| 318 | 331 | ||
| 319 | .SUFFIXES: .m | 332 | .SUFFIXES: .m |
| 320 | .c.o: | 333 | .c.o: |
| 321 | #ifdef AUTO_DEPEND | 334 | @$(MKDEPDIR) |
| 322 | @-test -d deps || mkdir deps | ||
| 323 | #endif | ||
| 324 | $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< | 335 | $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< |
| 325 | .m.o: | 336 | .m.o: |
| 326 | #ifdef AUTO_DEPEND | 337 | @$(MKDEPDIR) |
| 327 | @-test -d deps || mkdir deps | ||
| 328 | #endif | ||
| 329 | $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $< | 338 | $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $< |
| 330 | 339 | ||
| 331 | 340 | ||
| 332 | /* A macro which other sections of Makefile can redefine to munge the | ||
| 333 | flags before they are passed to LD. This is helpful if you have | ||
| 334 | redefined LD to something odd, like "gcc". | ||
| 335 | (The YMF prefix is a holdover from the old name "ymakefile".) */ | ||
| 336 | #define YMF_PASS_LDFLAGS(flags) flags | ||
| 337 | |||
| 338 | |||
| 339 | #ifdef ORDINARY_LINK | ||
| 340 | LD = $(CC) | ||
| 341 | |||
| 342 | #else /* not ORDINARY_LINK */ | ||
| 343 | GNULIB_VAR = $(LIB_GCC) | ||
| 344 | |||
| 345 | /* Fix linking if compiled with GCC. */ | ||
| 346 | #if defined (__GNUC__) && ! defined (LINKER) | ||
| 347 | /* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure | ||
| 348 | places that are difficult to figure out at make time. Fortunately, | ||
| 349 | these same versions allow you to pass arbitrary flags on to the | ||
| 350 | linker, so there is no reason not to use it as a linker. | ||
| 351 | |||
| 352 | Well, it is not quite perfect. The "-nostdlib" keeps GCC from | ||
| 353 | searching for libraries in its internal directories, so we have to | ||
| 354 | ask GCC explicitly where to find libgcc.a. */ | ||
| 355 | #define LINKER $(CC) -nostdlib | ||
| 356 | /* GCC passes any argument prefixed with -Xlinker directly to the linker. | ||
| 357 | See prefix-args.c for an explanation of why we do not do this with the | ||
| 358 | shell''s ``for'' construct. Note that sane people do not have '.' in | ||
| 359 | their paths, so we must use ./prefix-args. */ | ||
| 360 | #undef YMF_PASS_LDFLAGS | ||
| 361 | #define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags` | ||
| 362 | #endif /* defined (__GNUC__) && ! defined (LINKER) */ | ||
| 363 | |||
| 364 | #ifdef LINKER | ||
| 365 | LD=LINKER | ||
| 366 | #else /* not LINKER */ | ||
| 367 | LD=ld | ||
| 368 | #endif /* not LINKER */ | ||
| 369 | |||
| 370 | #endif /* not ORDINARY_LINK */ | ||
| 371 | |||
| 372 | |||
| 373 | #ifdef NS_IMPL_GNUSTEP | ||
| 374 | LD=$(CC) -rdynamic | ||
| 375 | #endif | ||
| 376 | |||
| 377 | |||
| 378 | /* lastfile must follow all files whose initialized data areas should | 341 | /* lastfile must follow all files whose initialized data areas should |
| 379 | be dumped as pure by dump-emacs. */ | 342 | be dumped as pure by dump-emacs. */ |
| 380 | obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ | 343 | obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ |
| @@ -634,29 +597,29 @@ SOME_MACHINE_LISP = ../lisp/mouse.elc \ | |||
| 634 | /* Construct full set of libraries to be linked. | 597 | /* Construct full set of libraries to be linked. |
| 635 | Note that SunOS needs -lm to come before -lc; otherwise, you get | 598 | Note that SunOS needs -lm to come before -lc; otherwise, you get |
| 636 | duplicated symbols. If the standard libraries were compiled | 599 | duplicated symbols. If the standard libraries were compiled |
| 637 | with GCC, we might need gnulib again after them. */ | 600 | with GCC, we might need LIB_GCC again after them. */ |
| 638 | 601 | ||
| 639 | LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \ | 602 | LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \ |
| 640 | $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \ | 603 | $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \ |
| 641 | $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \ | 604 | $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \ |
| 642 | $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ | 605 | $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ |
| 643 | $(GNULIB_VAR) $(LIB_MATH) $(LIB_STANDARD) $(GNULIB_VAR) | 606 | $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC) |
| 644 | 607 | ||
| 645 | all: emacs${EXEEXT} $(OTHER_FILES) | 608 | all: emacs${EXEEXT} $(OTHER_FILES) |
| 646 | 609 | ||
| 647 | /* Does anyone ever pay attention to the load-path-shadows output here? */ | 610 | /* Does anyone ever pay attention to the load-path-shadows output here? */ |
| 611 | /* The dumped Emacs is as functional and more efficient than | ||
| 612 | bootstrap-emacs, so we replace the latter with the former. */ | ||
| 648 | emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} | 613 | emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} |
| 649 | #ifdef CANNOT_DUMP | 614 | if test "${CANNOT_DUMP}" = "yes"; then \ |
| 650 | rm -f emacs${EXEEXT} | 615 | ln -f temacs${EXEEXT} emacs${EXEEXT}; \ |
| 651 | ln temacs${EXEEXT} emacs${EXEEXT} | 616 | EMACSLOADPATH=${lispsource} ./emacs -q -batch \ |
| 652 | -EMACSLOADPATH=${lispsource} ./emacs -q -batch -f list-load-path-shadows | 617 | -f list-load-path-shadows || true; \ |
| 653 | #else | 618 | else \ |
| 654 | LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump | 619 | LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \ |
| 655 | @: This new Emacs is as functional and more efficient then | 620 | ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \ |
| 656 | @: bootstrap-emacs, so let us replace it. | 621 | ./emacs -q -batch -f list-load-path-shadows || true; \ |
| 657 | -ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT} | 622 | fi |
| 658 | -./emacs -q -batch -f list-load-path-shadows | ||
| 659 | #endif /* ! defined (CANNOT_DUMP) */ | ||
| 660 | 623 | ||
| 661 | /* We run make-docfile twice because the command line may get too long | 624 | /* We run make-docfile twice because the command line may get too long |
| 662 | on some systems. */ | 625 | on some systems. */ |
| @@ -682,6 +645,8 @@ ${libsrc}make-docfile${EXEEXT}: | |||
| 682 | buildobj.h: Makefile | 645 | buildobj.h: Makefile |
| 683 | echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h | 646 | echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h |
| 684 | 647 | ||
| 648 | #define YMF_PASS_LDFLAGS(flags) @YMF_PASS_LDFLAGS@ | ||
| 649 | |||
| 685 | temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT} | 650 | temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT} |
| 686 | $(LD) YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \ | 651 | $(LD) YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \ |
| 687 | ${NS_IMPL_GNUSTEP_TEMACS_LDFLAGS} ) \ | 652 | ${NS_IMPL_GNUSTEP_TEMACS_LDFLAGS} ) \ |
| @@ -692,8 +657,9 @@ prefix-args${EXEEXT}: prefix-args.o $(config_h) | |||
| 692 | $(CC) $(LDFLAGS) prefix-args.o -o prefix-args | 657 | $(CC) $(LDFLAGS) prefix-args.o -o prefix-args |
| 693 | 658 | ||
| 694 | 659 | ||
| 695 | /* Only (possibly) used if HAVE_X11 && !USE_GTK, but no harm in always | 660 | /* The following oldxmenu-related rules are only (possibly) used if |
| 696 | defining. */ | 661 | HAVE_X11 && !USE_GTK, but there is no harm in always defining them |
| 662 | (provided we take a little care that OLDXMENU is never empty). */ | ||
| 697 | really-lwlib: | 663 | really-lwlib: |
| 698 | cd ${lwlibdir}; ${MAKE} ${MFLAGS} \ | 664 | cd ${lwlibdir}; ${MAKE} ${MFLAGS} \ |
| 699 | CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' | 665 | CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' |
| @@ -711,13 +677,10 @@ really-oldXMenu: | |||
| 711 | stamp-oldxmenu: ${OLDXMENU_DEPS} | 677 | stamp-oldxmenu: ${OLDXMENU_DEPS} |
| 712 | touch stamp-oldxmenu | 678 | touch stamp-oldxmenu |
| 713 | 679 | ||
| 714 | /* HAVE_X11 implies HAVE_X_WINDOWS and HAVE_MENUS. */ | ||
| 715 | #if defined (HAVE_X11) && ! defined (USE_GTK) | ||
| 716 | /* Supply an ordering for parallel make. */ | 680 | /* Supply an ordering for parallel make. */ |
| 717 | ../src/$(OLDXMENU): ${OLDXMENU} | 681 | ../src/$(OLDXMENU): ${OLDXMENU} |
| 718 | 682 | ||
| 719 | $(OLDXMENU): $(OLDXMENU_TARGET) | 683 | $(OLDXMENU): $(OLDXMENU_TARGET) |
| 720 | #endif /* HAVE_X11 && !USE_GTK */ | ||
| 721 | 684 | ||
| 722 | ../config.status:: epaths.in | 685 | ../config.status:: epaths.in |
| 723 | @echo "The file epaths.h needs to be set up from epaths.in." | 686 | @echo "The file epaths.h needs to be set up from epaths.in." |
| @@ -730,278 +693,14 @@ $(OLDXMENU): $(OLDXMENU_TARGET) | |||
| 730 | exit 1 | 693 | exit 1 |
| 731 | 694 | ||
| 732 | ecrt0.o: ecrt0.c $(config_h) | 695 | ecrt0.o: ecrt0.c $(config_h) |
| 733 | #ifdef AUTO_DEPEND | 696 | @$(MKDEPDIR) |
| 734 | @-test -d deps || mkdir deps | ||
| 735 | #endif | ||
| 736 | $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c | 697 | $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c |
| 737 | doc.o: buildobj.h | 698 | doc.o: buildobj.h |
| 738 | 699 | ||
| 739 | #ifndef AUTO_DEPEND | 700 | |
| 740 | 701 | /* If HAVE_NS, some ns-specific rules (for OTHER_FILES) are inserted here. */ | |
| 741 | /* FIXME some of these dependencies are platform-specific. | 702 | @ns_frag@ |
| 742 | Eg callproc.c only depends on w32.h for WINDOWSNT builds. | 703 | |
| 743 | One way to fix this would be to replace w32.h (etc) by $(W32_H), | ||
| 744 | a variable set by configure. Does not seem worth the trouble. | ||
| 745 | Since the w32 build does not even use this file, you might ask | ||
| 746 | why these dependencies are here at all... | ||
| 747 | |||
| 748 | nsgui.h: In fact, every .o file depends directly or indirectly on | ||
| 749 | dispextern.h and hence nsgui.h under NS. But the ones that actually | ||
| 750 | use stuff there are more limited. */ | ||
| 751 | atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \ | ||
| 752 | $(config_h) | ||
| 753 | bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h) | ||
| 754 | buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \ | ||
| 755 | $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \ | ||
| 756 | indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h) | ||
| 757 | callint.o: callint.c window.h commands.h buffer.h keymap.h \ | ||
| 758 | keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h) | ||
| 759 | callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \ | ||
| 760 | process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \ | ||
| 761 | composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \ | ||
| 762 | buffer.h | ||
| 763 | casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \ | ||
| 764 | composite.h keymap.h lisp.h $(config_h) | ||
| 765 | casetab.o: casetab.c buffer.h character.h lisp.h $(config_h) | ||
| 766 | category.o: category.c category.h buffer.h charset.h keymap.h \ | ||
| 767 | character.h lisp.h $(config_h) | ||
| 768 | ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h) | ||
| 769 | character.o: character.c character.h buffer.h charset.h composite.h disptab.h \ | ||
| 770 | lisp.h $(config_h) | ||
| 771 | charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \ | ||
| 772 | disptab.h lisp.h $(config_h) | ||
| 773 | chartab.o: charset.h character.h ccl.h lisp.h $(config_h) | ||
| 774 | coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \ | ||
| 775 | window.h dispextern.h frame.h termhooks.h lisp.h $(config_h) | ||
| 776 | cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h) | ||
| 777 | cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \ | ||
| 778 | msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \ | ||
| 779 | composite.h | ||
| 780 | pre-crt0.o: pre-crt0.c | ||
| 781 | dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h) | ||
| 782 | dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \ | ||
| 783 | coding.h regex.h systime.h blockinput.h atimer.h composite.h | ||
| 784 | dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \ | ||
| 785 | window.h buffer.h termchar.h termopts.h termhooks.h cm.h \ | ||
| 786 | disptab.h indent.h $(INTERVALS_H) nsgui.h \ | ||
| 787 | xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \ | ||
| 788 | syssignal.h lisp.h $(config_h) | ||
| 789 | doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \ | ||
| 790 | character.h systime.h coding.h composite.h | ||
| 791 | doprnt.o: doprnt.c character.h lisp.h $(config_h) | ||
| 792 | dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \ | ||
| 793 | msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \ | ||
| 794 | lisp.h $(config_h) | ||
| 795 | editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \ | ||
| 796 | coding.h frame.h blockinput.h atimer.h lisp.h $(config_h) | ||
| 797 | emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \ | ||
| 798 | termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \ | ||
| 799 | window.h dispextern.h keyboard.h keymap.h frame.h coding.h | ||
| 800 | fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \ | ||
| 801 | coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h | ||
| 802 | filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \ | ||
| 803 | lisp.h $(config_h) | ||
| 804 | filemode.o: filemode.c $(config_h) | ||
| 805 | frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \ | ||
| 806 | blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \ | ||
| 807 | msdos.h dosfns.h dispextern.h w32term.h nsgui.h termchar.h coding.h \ | ||
| 808 | composite.h lisp.h $(config_h) termhooks.h ccl.h | ||
| 809 | fringe.o: fringe.c dispextern.h nsgui.h frame.h window.h buffer.h termhooks.h \ | ||
| 810 | blockinput.h atimer.h systime.h lisp.h $(config_h) | ||
| 811 | font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \ | ||
| 812 | font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h nsgui.h | ||
| 813 | ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \ | ||
| 814 | lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \ | ||
| 815 | ccl.h ftfont.h | ||
| 816 | fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \ | ||
| 817 | charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \ | ||
| 818 | blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) nsgui.h \ | ||
| 819 | window.h xterm.h | ||
| 820 | getloadavg.o: getloadavg.c $(config_h) | ||
| 821 | gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \ | ||
| 822 | blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \ | ||
| 823 | charset.h coding.h syssignal.h dispextern.h composite.h | ||
| 824 | image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \ | ||
| 825 | systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \ | ||
| 826 | nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h | ||
| 827 | indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \ | ||
| 828 | termopts.h disptab.h region-cache.h character.h category.h \ | ||
| 829 | keyboard.h systime.h coding.h $(INTERVALS_H) | ||
| 830 | insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \ | ||
| 831 | dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h) | ||
| 832 | keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \ | ||
| 833 | commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \ | ||
| 834 | systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \ | ||
| 835 | xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h nsgui.h coding.h \ | ||
| 836 | lisp.h $(config_h) | ||
| 837 | keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \ | ||
| 838 | atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \ | ||
| 839 | coding.h frame.h lisp.h $(config_h) | ||
| 840 | lastfile.o: lastfile.c $(config_h) | ||
| 841 | macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \ | ||
| 842 | dispextern.h lisp.h $(config_h) systime.h coding.h composite.h | ||
| 843 | gmalloc.o: gmalloc.c $(config_h) | ||
| 844 | ralloc.o: ralloc.c lisp.h $(config_h) | ||
| 845 | vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h) | ||
| 846 | marker.o: marker.c buffer.h character.h lisp.h $(config_h) | ||
| 847 | md5.o: md5.c md5.h $(config_h) | ||
| 848 | minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \ | ||
| 849 | buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \ | ||
| 850 | termhooks.h lisp.h $(config_h) coding.h | ||
| 851 | mktime.o: mktime.c $(config_h) | ||
| 852 | msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \ | ||
| 853 | termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \ | ||
| 854 | keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h) | ||
| 855 | nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \ | ||
| 856 | dispextern.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \ | ||
| 857 | atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h) | ||
| 858 | nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h) | ||
| 859 | nsimage.o: nsimage.m nsterm.h lisp.h $(config_h) | ||
| 860 | nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \ | ||
| 861 | nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \ | ||
| 862 | nsterm.h lisp.h $(config_h) | ||
| 863 | nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \ | ||
| 864 | nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \ | ||
| 865 | termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \ | ||
| 866 | $(INTERVALS_H) process.h coding.h lisp.h $(config_h) | ||
| 867 | nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h) | ||
| 868 | process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \ | ||
| 869 | commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \ | ||
| 870 | blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \ | ||
| 871 | keyboard.h lisp.h $(config_h) character.h xgselect.h sysselect.h | ||
| 872 | regex.o: regex.c syntax.h buffer.h lisp.h $(config_h) regex.h category.h character.h | ||
| 873 | region-cache.o: region-cache.c buffer.h region-cache.h lisp.h $(config_h) | ||
| 874 | scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \ | ||
| 875 | termhooks.h lisp.h $(config_h) systime.h coding.h composite.h window.h | ||
| 876 | search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \ | ||
| 877 | blockinput.h atimer.h systime.h category.h character.h charset.h \ | ||
| 878 | $(INTERVALS_H) \ | ||
| 879 | lisp.h $(config_h) | ||
| 880 | sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h | ||
| 881 | strftime.o: strftime.c $(config_h) | ||
| 882 | syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \ | ||
| 883 | keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h) | ||
| 884 | sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \ | ||
| 885 | process.h dispextern.h termhooks.h termchar.h termopts.h coding.h \ | ||
| 886 | frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h lisp.h $(config_h) \ | ||
| 887 | composite.h | ||
| 888 | term.o: term.c termchar.h termhooks.h termopts.h lisp.h $(config_h) cm.h frame.h \ | ||
| 889 | disptab.h keyboard.h character.h charset.h coding.h ccl.h xterm.h \ | ||
| 890 | msdos.h window.h keymap.h blockinput.h atimer.h systime.h systty.h \ | ||
| 891 | syssignal.h $(INTERVALS_H) buffer.h | ||
| 892 | termcap.o: termcap.c lisp.h $(config_h) | ||
| 893 | terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \ | ||
| 894 | keyboard.h lisp.h $(config_h) dispextern.h composite.h systime.h | ||
| 895 | terminfo.o: terminfo.c lisp.h $(config_h) | ||
| 896 | tparam.o: tparam.c lisp.h $(config_h) | ||
| 897 | undo.o: undo.c buffer.h commands.h window.h dispextern.h lisp.h $(config_h) | ||
| 898 | unexaix.o: unexaix.c lisp.h $(config_h) | ||
| 899 | unexalpha.o: unexalpha.c $(config_h) | ||
| 900 | unexcw.o: unexcw.c lisp.h $(config_h) | ||
| 901 | unexec.o: unexec.c lisp.h $(config_h) | ||
| 902 | unexelf.o: unexelf.c $(config_h) | ||
| 903 | unexhp9k800.o: unexhp9k800.c $(config_h) | ||
| 904 | unexmacosx.o: unexmacosx.c $(config_h) | ||
| 905 | unexsol.o: unexsol.c lisp.h $(config_h) | ||
| 906 | unexw32.o: unexw32.c $(config_h) | ||
| 907 | w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \ | ||
| 908 | msdos.h buffer.h charset.h coding.h composite.h lisp.h $(config_h) | ||
| 909 | widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \ | ||
| 910 | $(srcdir)/../lwlib/lwlib.h lisp.h $(config_h) | ||
| 911 | window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ | ||
| 912 | disptab.h keyboard.h msdos.h coding.h termhooks.h \ | ||
| 913 | keymap.h blockinput.h atimer.h systime.h $(INTERVALS_H) \ | ||
| 914 | xterm.h w32term.h nsterm.h nsgui.h lisp.h $(config_h) | ||
| 915 | xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \ | ||
| 916 | coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \ | ||
| 917 | charset.h lisp.h $(config_h) keyboard.h $(INTERVALS_H) region-cache.h \ | ||
| 918 | xterm.h w32term.h nsterm.h nsgui.h msdos.h composite.h fontset.h ccl.h \ | ||
| 919 | blockinput.h atimer.h systime.h keymap.h font.h | ||
| 920 | xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \ | ||
| 921 | window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \ | ||
| 922 | systime.h keyboard.h fontset.h w32term.h nsterm.h coding.h ccl.h \ | ||
| 923 | $(INTERVALS_H) nsgui.h termchar.h termhooks.h font.h lisp.h $(config_h) | ||
| 924 | xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \ | ||
| 925 | $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \ | ||
| 926 | character.h charset.h coding.h gtkutil.h lisp.h $(config_h) termhooks.h \ | ||
| 927 | fontset.h termchar.h font.h xsettings.h $(INTERVALS_H) ccl.h | ||
| 928 | xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ | ||
| 929 | font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h | ||
| 930 | xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ | ||
| 931 | font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h ftfont.h | ||
| 932 | ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ | ||
| 933 | font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h | ||
| 934 | menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \ | ||
| 935 | dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \ | ||
| 936 | lisp.h $(config_h) systime.h coding.h composite.h window.h atimer.h nsgui.h | ||
| 937 | xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \ | ||
| 938 | charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \ | ||
| 939 | systime.h gtkutil.h msdos.h coding.h menu.h lisp.h $(config_h) composite.h \ | ||
| 940 | keymap.h sysselect.h | ||
| 941 | xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \ | ||
| 942 | dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \ | ||
| 943 | keyboard.h emacs-icon.h character.h charset.h ccl.h fontset.h composite.h \ | ||
| 944 | coding.h process.h gtkutil.h font.h fontset.h lisp.h $(config_h) \ | ||
| 945 | xsettings.h intervals.h keymap.h xgselect.h sysselect.h | ||
| 946 | xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \ | ||
| 947 | buffer.h atimer.h systime.h termhooks.h lisp.h $(config_h) keyboard.h \ | ||
| 948 | coding.h composite.h | ||
| 949 | xgselect.o: xgselect.h systime.h sysselect.h lisp.h $(config_h) | ||
| 950 | xrdb.o: xrdb.c lisp.h $(config_h) epaths.h | ||
| 951 | xsmfns.o: xsmfns.c lisp.h $(config_h) systime.h sysselect.h termhooks.h xterm.h \ | ||
| 952 | lisp.h termopts.h frame.h dispextern.h | ||
| 953 | xsettings.o: xterm.h xsettings.h lisp.h frame.h termhooks.h $(config_h) \ | ||
| 954 | dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h atimer.h \ | ||
| 955 | termopts.h | ||
| 956 | |||
| 957 | /* The files of Lisp proper. */ | ||
| 958 | alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h \ | ||
| 959 | keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \ | ||
| 960 | $(INTERVALS_H) termhooks.h | ||
| 961 | bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \ | ||
| 962 | frame.h xterm.h lisp.h $(config_h) | ||
| 963 | data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \ | ||
| 964 | termhooks.h systime.h coding.h composite.h dispextern.h font.h ccl.h \ | ||
| 965 | lisp.h $(config_h) | ||
| 966 | eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \ | ||
| 967 | dispextern.h lisp.h $(config_h) coding.h composite.h xterm.h | ||
| 968 | floatfns.o: floatfns.c syssignal.h lisp.h $(config_h) | ||
| 969 | fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h keyboard.h \ | ||
| 970 | keymap.h window.h dispextern.h $(INTERVALS_H) coding.h md5.h \ | ||
| 971 | blockinput.h atimer.h systime.h xterm.h | ||
| 972 | print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \ | ||
| 973 | lisp.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \ | ||
| 974 | blockinput.h atimer.h systime.h font.h charset.h coding.h ccl.h | ||
| 975 | lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \ | ||
| 976 | charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \ | ||
| 977 | systime.h frame.h blockinput.h atimer.h | ||
| 978 | |||
| 979 | /* Text properties support. */ | ||
| 980 | composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \ | ||
| 981 | frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h) | ||
| 982 | intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \ | ||
| 983 | keymap.h lisp.h $(config_h) systime.h coding.h | ||
| 984 | textprop.o: textprop.c buffer.h window.h $(INTERVALS_H) \ | ||
| 985 | lisp.h $(config_h) | ||
| 986 | |||
| 987 | #endif /* ! AUTO_DEPEND */ | ||
| 988 | |||
| 989 | /* System-specific programs to be made. | ||
| 990 | OTHER_FILES select which of these should be compiled. */ | ||
| 991 | |||
| 992 | #ifdef HAVE_NS | ||
| 993 | ${ns_appdir}: ${ns_appsrc} | ||
| 994 | rm -fr ${ns_appdir} | ||
| 995 | mkdir -p ${ns_appdir} | ||
| 996 | ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; umask 022; tar xf - ) | ||
| 997 | #endif /* HAVE_NS */ | ||
| 998 | |||
| 999 | /* These are only used if HAVE_NS, but no harm in always defining them. */ | ||
| 1000 | ${ns_appbindir}Emacs: emacs${EXEEXT} | ||
| 1001 | mkdir -p ${ns_appbindir} | ||
| 1002 | cp -f emacs${EXEEXT} ${ns_appbindir}Emacs | ||
| 1003 | |||
| 1004 | ns-app: ${ns_appdir} ${ns_appbindir}Emacs | ||
| 1005 | 704 | ||
| 1006 | mostlyclean: | 705 | mostlyclean: |
| 1007 | rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a | 706 | rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a |
| @@ -1010,7 +709,7 @@ mostlyclean: | |||
| 1010 | rm -f buildobj.h | 709 | rm -f buildobj.h |
| 1011 | clean: mostlyclean | 710 | clean: mostlyclean |
| 1012 | rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT} | 711 | rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT} |
| 1013 | -rm -rf deps | 712 | -rm -rf ${DEPDIR} |
| 1014 | test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir} | 713 | test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir} |
| 1015 | 714 | ||
| 1016 | /* bootstrap-clean is used to clean up just before a bootstrap. | 715 | /* bootstrap-clean is used to clean up just before a bootstrap. |
| @@ -1102,16 +801,14 @@ ${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS) | |||
| 1102 | 801 | ||
| 1103 | bootstrap-emacs${EXEEXT}: temacs${EXEEXT} | 802 | bootstrap-emacs${EXEEXT}: temacs${EXEEXT} |
| 1104 | cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs | 803 | cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs |
| 1105 | #ifdef CANNOT_DUMP | 804 | if test "${CANNOT_DUMP}" = "yes"; then \ |
| 1106 | ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT} | 805 | ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}; \ |
| 1107 | #else | 806 | else \ |
| 1108 | $(RUN_TEMACS) --batch --load loadup bootstrap | 807 | $(RUN_TEMACS) --batch --load loadup bootstrap || exit 1; \ |
| 1109 | mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT} | 808 | mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \ |
| 1110 | #endif /* ! defined (CANNOT_DUMP) */ | 809 | fi |
| 1111 | @: Compile some files earlier to speed up further compilation. | 810 | @: Compile some files earlier to speed up further compilation. |
| 1112 | cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe} | 811 | cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe} |
| 1113 | 812 | ||
| 1114 | #ifdef AUTO_DEPEND | 813 | /* Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk. */ |
| 1115 | ALLOBJS=$(START_FILES) ${obj} ${otherobj} prefix-args.o | 814 | @deps_frag@ |
| 1116 | -include $(ALLOBJS:%.o=deps/%.d) | ||
| 1117 | #endif | ||
diff --git a/src/autodeps.mk b/src/autodeps.mk new file mode 100644 index 00000000000..a5d2a04dcf4 --- /dev/null +++ b/src/autodeps.mk | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | /* autodeps.mk --- src/Makefile fragment for GNU Emacs | ||
| 2 | |||
| 3 | This is inserted in src/Makefile if AUTO_DEPEND=yes. */ | ||
| 4 | |||
| 5 | ALLOBJS=$(START_FILES) ${obj} ${otherobj} prefix-args.o | ||
| 6 | -include $(ALLOBJS:%.o=${DEPDIR}/%.d) | ||
diff --git a/src/bidi.c b/src/bidi.c index dbc95608fea..bdeccfee97c 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -543,6 +543,7 @@ bidi_copy_it (struct bidi_it *to, struct bidi_it *from) | |||
| 543 | #define BIDI_CACHE_CHUNK 200 | 543 | #define BIDI_CACHE_CHUNK 200 |
| 544 | static struct bidi_it *bidi_cache; | 544 | static struct bidi_it *bidi_cache; |
| 545 | static size_t bidi_cache_size = 0; | 545 | static size_t bidi_cache_size = 0; |
| 546 | static size_t elsz = sizeof (struct bidi_it); | ||
| 546 | static int bidi_cache_idx; /* next unused cache slot */ | 547 | static int bidi_cache_idx; /* next unused cache slot */ |
| 547 | static int bidi_cache_last_idx; /* slot of last cache hit */ | 548 | static int bidi_cache_last_idx; /* slot of last cache hit */ |
| 548 | 549 | ||
| @@ -558,8 +559,9 @@ bidi_cache_shrink (void) | |||
| 558 | { | 559 | { |
| 559 | if (bidi_cache_size > BIDI_CACHE_CHUNK) | 560 | if (bidi_cache_size > BIDI_CACHE_CHUNK) |
| 560 | { | 561 | { |
| 561 | bidi_cache_size = BIDI_CACHE_CHUNK * sizeof (struct bidi_it); | 562 | bidi_cache_size = BIDI_CACHE_CHUNK; |
| 562 | bidi_cache = (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size); | 563 | bidi_cache = |
| 564 | (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size * elsz); | ||
| 563 | } | 565 | } |
| 564 | bidi_cache_reset (); | 566 | bidi_cache_reset (); |
| 565 | } | 567 | } |
| @@ -688,9 +690,9 @@ bidi_cache_iterator_state (struct bidi_it *bidi_it, int resolved) | |||
| 688 | /* Enlarge the cache as needed. */ | 690 | /* Enlarge the cache as needed. */ |
| 689 | if (idx >= bidi_cache_size) | 691 | if (idx >= bidi_cache_size) |
| 690 | { | 692 | { |
| 691 | bidi_cache_size += BIDI_CACHE_CHUNK * sizeof (struct bidi_it); | 693 | bidi_cache_size += BIDI_CACHE_CHUNK; |
| 692 | bidi_cache = | 694 | bidi_cache = |
| 693 | (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size); | 695 | (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size * elsz); |
| 694 | } | 696 | } |
| 695 | /* Character positions should correspond to cache positions 1:1. | 697 | /* Character positions should correspond to cache positions 1:1. |
| 696 | If we are outside the range of cached positions, the cache is | 698 | If we are outside the range of cached positions, the cache is |
| @@ -705,7 +707,6 @@ bidi_cache_iterator_state (struct bidi_it *bidi_it, int resolved) | |||
| 705 | bidi_copy_it (&bidi_cache[idx], bidi_it); | 707 | bidi_copy_it (&bidi_cache[idx], bidi_it); |
| 706 | if (!resolved) | 708 | if (!resolved) |
| 707 | bidi_cache[idx].resolved_level = -1; | 709 | bidi_cache[idx].resolved_level = -1; |
| 708 | bidi_cache[idx].new_paragraph = 0; | ||
| 709 | } | 710 | } |
| 710 | else | 711 | else |
| 711 | { | 712 | { |
diff --git a/src/config.in b/src/config.in index 99a95d7f15d..e7122bf665b 100644 --- a/src/config.in +++ b/src/config.in | |||
| @@ -27,9 +27,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 27 | #define EMACS_CONFIG_H | 27 | #define EMACS_CONFIG_H |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | /* Generate dependencies with gcc. */ | ||
| 31 | #undef AUTO_DEPEND | ||
| 32 | |||
| 33 | /* Define to 1 if the mktime function is broken. */ | 30 | /* Define to 1 if the mktime function is broken. */ |
| 34 | #undef BROKEN_MKTIME | 31 | #undef BROKEN_MKTIME |
| 35 | 32 | ||
| @@ -841,6 +838,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 841 | /* Define to 1 if you are using NS windowing under GNUstep. */ | 838 | /* Define to 1 if you are using NS windowing under GNUstep. */ |
| 842 | #undef NS_IMPL_GNUSTEP | 839 | #undef NS_IMPL_GNUSTEP |
| 843 | 840 | ||
| 841 | /* Define if the C compiler is the linker. */ | ||
| 842 | #undef ORDINARY_LINK | ||
| 843 | |||
| 844 | /* Define to the address where bug reports for this package should be sent. */ | 844 | /* Define to the address where bug reports for this package should be sent. */ |
| 845 | #undef PACKAGE_BUGREPORT | 845 | #undef PACKAGE_BUGREPORT |
| 846 | 846 | ||
diff --git a/src/deps.mk b/src/deps.mk new file mode 100644 index 00000000000..08a435da6a9 --- /dev/null +++ b/src/deps.mk | |||
| @@ -0,0 +1,279 @@ | |||
| 1 | /* deps.mk --- src/Makefile fragment for GNU Emacs | ||
| 2 | |||
| 3 | Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002, | ||
| 4 | 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 | ||
| 5 | Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | it under the terms of the GNU General Public License as published by | ||
| 11 | the Free Software Foundation, either version 3 of the License, or | ||
| 12 | (at your option) any later version. | ||
| 13 | |||
| 14 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | GNU General Public License for more details. | ||
| 18 | |||
| 19 | You should have received a copy of the GNU General Public License | ||
| 20 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | Commentary: | ||
| 23 | |||
| 24 | This file is inserted in src/Makefile if AUTO_DEPEND=no. | ||
| 25 | It defines static dependencies between the various source files. | ||
| 26 | |||
| 27 | FIXME some of these dependencies are platform-specific. | ||
| 28 | Eg callproc.c only depends on w32.h for WINDOWSNT builds. | ||
| 29 | One way to fix this would be to replace w32.h (etc) by $(W32_H), | ||
| 30 | a variable set by configure. Does not seem worth the trouble. | ||
| 31 | Since the w32 build does not even use this file, you might ask | ||
| 32 | why these dependencies are here at all... | ||
| 33 | |||
| 34 | nsgui.h: In fact, every .o file depends directly or indirectly on | ||
| 35 | dispextern.h and hence nsgui.h under NS. But the ones that actually | ||
| 36 | use stuff there are more limited. | ||
| 37 | |||
| 38 | Code: */ | ||
| 39 | |||
| 40 | atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \ | ||
| 41 | $(config_h) | ||
| 42 | bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h) | ||
| 43 | buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \ | ||
| 44 | $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \ | ||
| 45 | indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h) | ||
| 46 | callint.o: callint.c window.h commands.h buffer.h keymap.h \ | ||
| 47 | keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h) | ||
| 48 | callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \ | ||
| 49 | process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \ | ||
| 50 | composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \ | ||
| 51 | buffer.h | ||
| 52 | casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \ | ||
| 53 | composite.h keymap.h lisp.h $(config_h) | ||
| 54 | casetab.o: casetab.c buffer.h character.h lisp.h $(config_h) | ||
| 55 | category.o: category.c category.h buffer.h charset.h keymap.h \ | ||
| 56 | character.h lisp.h $(config_h) | ||
| 57 | ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h) | ||
| 58 | character.o: character.c character.h buffer.h charset.h composite.h disptab.h \ | ||
| 59 | lisp.h $(config_h) | ||
| 60 | charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \ | ||
| 61 | disptab.h lisp.h $(config_h) | ||
| 62 | chartab.o: charset.h character.h ccl.h lisp.h $(config_h) | ||
| 63 | coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \ | ||
| 64 | window.h dispextern.h frame.h termhooks.h lisp.h $(config_h) | ||
| 65 | cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h) | ||
| 66 | cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h \ | ||
| 67 | $(config_h) msdos.h dispextern.h keyboard.h keymap.h systime.h \ | ||
| 68 | coding.h frame.h composite.h | ||
| 69 | pre-crt0.o: pre-crt0.c | ||
| 70 | dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h) | ||
| 71 | dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \ | ||
| 72 | coding.h regex.h systime.h blockinput.h atimer.h composite.h | ||
| 73 | dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \ | ||
| 74 | window.h buffer.h termchar.h termopts.h termhooks.h cm.h \ | ||
| 75 | disptab.h indent.h $(INTERVALS_H) nsgui.h \ | ||
| 76 | xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \ | ||
| 77 | syssignal.h lisp.h $(config_h) | ||
| 78 | doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \ | ||
| 79 | character.h systime.h coding.h composite.h | ||
| 80 | doprnt.o: doprnt.c character.h lisp.h $(config_h) | ||
| 81 | dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \ | ||
| 82 | msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \ | ||
| 83 | lisp.h $(config_h) | ||
| 84 | editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \ | ||
| 85 | coding.h frame.h blockinput.h atimer.h lisp.h $(config_h) | ||
| 86 | emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \ | ||
| 87 | termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \ | ||
| 88 | window.h dispextern.h keyboard.h keymap.h frame.h coding.h | ||
| 89 | fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \ | ||
| 90 | coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h | ||
| 91 | filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \ | ||
| 92 | lisp.h $(config_h) | ||
| 93 | filemode.o: filemode.c $(config_h) | ||
| 94 | frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \ | ||
| 95 | blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \ | ||
| 96 | msdos.h dosfns.h dispextern.h w32term.h nsgui.h termchar.h coding.h \ | ||
| 97 | composite.h lisp.h $(config_h) termhooks.h ccl.h | ||
| 98 | fringe.o: fringe.c dispextern.h nsgui.h frame.h window.h buffer.h termhooks.h \ | ||
| 99 | blockinput.h atimer.h systime.h lisp.h $(config_h) | ||
| 100 | font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \ | ||
| 101 | font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h nsgui.h | ||
| 102 | ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \ | ||
| 103 | lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \ | ||
| 104 | ccl.h ftfont.h | ||
| 105 | fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \ | ||
| 106 | charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \ | ||
| 107 | blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) nsgui.h \ | ||
| 108 | window.h xterm.h | ||
| 109 | getloadavg.o: getloadavg.c $(config_h) | ||
| 110 | gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \ | ||
| 111 | blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \ | ||
| 112 | charset.h coding.h syssignal.h dispextern.h composite.h | ||
| 113 | image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \ | ||
| 114 | systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \ | ||
| 115 | nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h | ||
| 116 | indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) \ | ||
| 117 | termchar.h termopts.h disptab.h region-cache.h character.h category.h \ | ||
| 118 | keyboard.h systime.h coding.h $(INTERVALS_H) | ||
| 119 | insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \ | ||
| 120 | dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h) | ||
| 121 | keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \ | ||
| 122 | commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \ | ||
| 123 | systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \ | ||
| 124 | xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h nsgui.h coding.h \ | ||
| 125 | lisp.h $(config_h) | ||
| 126 | keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \ | ||
| 127 | atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) \ | ||
| 128 | keymap.h window.h coding.h frame.h lisp.h $(config_h) | ||
| 129 | lastfile.o: lastfile.c $(config_h) | ||
| 130 | macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \ | ||
| 131 | dispextern.h lisp.h $(config_h) systime.h coding.h composite.h | ||
| 132 | gmalloc.o: gmalloc.c $(config_h) | ||
| 133 | ralloc.o: ralloc.c lisp.h $(config_h) | ||
| 134 | vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h) | ||
| 135 | marker.o: marker.c buffer.h character.h lisp.h $(config_h) | ||
| 136 | md5.o: md5.c md5.h $(config_h) | ||
| 137 | minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \ | ||
| 138 | buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \ | ||
| 139 | termhooks.h lisp.h $(config_h) coding.h | ||
| 140 | mktime.o: mktime.c $(config_h) | ||
| 141 | msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \ | ||
| 142 | termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \ | ||
| 143 | keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h \ | ||
| 144 | lisp.h $(config_h) | ||
| 145 | nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \ | ||
| 146 | dispextern.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \ | ||
| 147 | atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h) | ||
| 148 | nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h) | ||
| 149 | nsimage.o: nsimage.m nsterm.h lisp.h $(config_h) | ||
| 150 | nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \ | ||
| 151 | nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \ | ||
| 152 | nsterm.h lisp.h $(config_h) | ||
| 153 | nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \ | ||
| 154 | nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \ | ||
| 155 | termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \ | ||
| 156 | $(INTERVALS_H) process.h coding.h lisp.h $(config_h) | ||
| 157 | nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h) | ||
| 158 | process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \ | ||
| 159 | commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \ | ||
| 160 | blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \ | ||
| 161 | keyboard.h lisp.h $(config_h) character.h xgselect.h sysselect.h | ||
| 162 | regex.o: regex.c syntax.h buffer.h lisp.h $(config_h) regex.h \ | ||
| 163 | category.h character.h | ||
| 164 | region-cache.o: region-cache.c buffer.h region-cache.h lisp.h $(config_h) | ||
| 165 | scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \ | ||
| 166 | termhooks.h lisp.h $(config_h) systime.h coding.h composite.h window.h | ||
| 167 | search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \ | ||
| 168 | blockinput.h atimer.h systime.h category.h character.h charset.h \ | ||
| 169 | $(INTERVALS_H) \ | ||
| 170 | lisp.h $(config_h) | ||
| 171 | sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h | ||
| 172 | strftime.o: strftime.c $(config_h) | ||
| 173 | syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \ | ||
| 174 | keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h) | ||
| 175 | sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \ | ||
| 176 | process.h dispextern.h termhooks.h termchar.h termopts.h coding.h \ | ||
| 177 | frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h lisp.h \ | ||
| 178 | $(config_h) composite.h | ||
| 179 | term.o: term.c termchar.h termhooks.h termopts.h lisp.h $(config_h) \ | ||
| 180 | cm.h frame.h disptab.h keyboard.h character.h charset.h coding.h ccl.h \ | ||
| 181 | xterm.h msdos.h window.h keymap.h blockinput.h atimer.h systime.h \ | ||
| 182 | systty.h syssignal.h $(INTERVALS_H) buffer.h | ||
| 183 | termcap.o: termcap.c lisp.h $(config_h) | ||
| 184 | terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \ | ||
| 185 | keyboard.h lisp.h $(config_h) dispextern.h composite.h systime.h | ||
| 186 | terminfo.o: terminfo.c lisp.h $(config_h) | ||
| 187 | tparam.o: tparam.c lisp.h $(config_h) | ||
| 188 | undo.o: undo.c buffer.h commands.h window.h dispextern.h lisp.h $(config_h) | ||
| 189 | unexaix.o: unexaix.c lisp.h $(config_h) | ||
| 190 | unexalpha.o: unexalpha.c $(config_h) | ||
| 191 | unexcw.o: unexcw.c lisp.h $(config_h) | ||
| 192 | unexec.o: unexec.c lisp.h $(config_h) | ||
| 193 | unexelf.o: unexelf.c $(config_h) | ||
| 194 | unexhp9k800.o: unexhp9k800.c $(config_h) | ||
| 195 | unexmacosx.o: unexmacosx.c $(config_h) | ||
| 196 | unexsol.o: unexsol.c lisp.h $(config_h) | ||
| 197 | unexw32.o: unexw32.c $(config_h) | ||
| 198 | w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \ | ||
| 199 | msdos.h buffer.h charset.h coding.h composite.h lisp.h $(config_h) | ||
| 200 | widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \ | ||
| 201 | $(srcdir)/../lwlib/lwlib.h lisp.h $(config_h) | ||
| 202 | window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ | ||
| 203 | disptab.h keyboard.h msdos.h coding.h termhooks.h \ | ||
| 204 | keymap.h blockinput.h atimer.h systime.h $(INTERVALS_H) \ | ||
| 205 | xterm.h w32term.h nsterm.h nsgui.h lisp.h $(config_h) | ||
| 206 | xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \ | ||
| 207 | coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \ | ||
| 208 | charset.h lisp.h $(config_h) keyboard.h $(INTERVALS_H) region-cache.h \ | ||
| 209 | xterm.h w32term.h nsterm.h nsgui.h msdos.h composite.h fontset.h ccl.h \ | ||
| 210 | blockinput.h atimer.h systime.h keymap.h font.h | ||
| 211 | xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \ | ||
| 212 | window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \ | ||
| 213 | systime.h keyboard.h fontset.h w32term.h nsterm.h coding.h ccl.h \ | ||
| 214 | $(INTERVALS_H) nsgui.h termchar.h termhooks.h font.h lisp.h $(config_h) | ||
| 215 | xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \ | ||
| 216 | $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \ | ||
| 217 | character.h charset.h coding.h gtkutil.h lisp.h $(config_h) termhooks.h \ | ||
| 218 | fontset.h termchar.h font.h xsettings.h $(INTERVALS_H) ccl.h | ||
| 219 | xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ | ||
| 220 | font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h | ||
| 221 | xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ | ||
| 222 | font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h ftfont.h | ||
| 223 | ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ | ||
| 224 | font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h | ||
| 225 | menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \ | ||
| 226 | dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \ | ||
| 227 | lisp.h $(config_h) systime.h coding.h composite.h window.h atimer.h nsgui.h | ||
| 228 | xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \ | ||
| 229 | charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \ | ||
| 230 | systime.h gtkutil.h msdos.h coding.h menu.h lisp.h $(config_h) composite.h \ | ||
| 231 | keymap.h sysselect.h | ||
| 232 | xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \ | ||
| 233 | dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \ | ||
| 234 | keyboard.h emacs-icon.h character.h charset.h ccl.h fontset.h composite.h \ | ||
| 235 | coding.h process.h gtkutil.h font.h fontset.h lisp.h $(config_h) \ | ||
| 236 | xsettings.h intervals.h keymap.h xgselect.h sysselect.h | ||
| 237 | xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \ | ||
| 238 | buffer.h atimer.h systime.h termhooks.h lisp.h $(config_h) keyboard.h \ | ||
| 239 | coding.h composite.h | ||
| 240 | xgselect.o: xgselect.h systime.h sysselect.h lisp.h $(config_h) | ||
| 241 | xrdb.o: xrdb.c lisp.h $(config_h) epaths.h | ||
| 242 | xsmfns.o: xsmfns.c lisp.h $(config_h) systime.h sysselect.h termhooks.h \ | ||
| 243 | xterm.h lisp.h termopts.h frame.h dispextern.h | ||
| 244 | xsettings.o: xterm.h xsettings.h lisp.h frame.h termhooks.h $(config_h) \ | ||
| 245 | dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h \ | ||
| 246 | atimer.h termopts.h | ||
| 247 | |||
| 248 | /* The files of Lisp proper. */ | ||
| 249 | alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h \ | ||
| 250 | keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \ | ||
| 251 | $(INTERVALS_H) termhooks.h | ||
| 252 | bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \ | ||
| 253 | frame.h xterm.h lisp.h $(config_h) | ||
| 254 | data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \ | ||
| 255 | termhooks.h systime.h coding.h composite.h dispextern.h font.h ccl.h \ | ||
| 256 | lisp.h $(config_h) | ||
| 257 | eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \ | ||
| 258 | dispextern.h lisp.h $(config_h) coding.h composite.h xterm.h | ||
| 259 | floatfns.o: floatfns.c syssignal.h lisp.h $(config_h) | ||
| 260 | fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h \ | ||
| 261 | keyboard.h keymap.h window.h dispextern.h $(INTERVALS_H) coding.h md5.h \ | ||
| 262 | blockinput.h atimer.h systime.h xterm.h | ||
| 263 | print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \ | ||
| 264 | lisp.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \ | ||
| 265 | blockinput.h atimer.h systime.h font.h charset.h coding.h ccl.h | ||
| 266 | lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \ | ||
| 267 | charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \ | ||
| 268 | systime.h frame.h blockinput.h atimer.h | ||
| 269 | |||
| 270 | /* Text properties support. */ | ||
| 271 | composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \ | ||
| 272 | frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h) | ||
| 273 | intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \ | ||
| 274 | keymap.h lisp.h $(config_h) systime.h coding.h | ||
| 275 | textprop.o: textprop.c buffer.h window.h $(INTERVALS_H) \ | ||
| 276 | lisp.h $(config_h) | ||
| 277 | |||
| 278 | |||
| 279 | /* deps.mk ends here */ | ||
diff --git a/src/dispextern.h b/src/dispextern.h index a68bc3e9899..f0d14c0e487 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -748,21 +748,29 @@ struct glyph_row | |||
| 748 | 748 | ||
| 749 | /* First position in this row. This is the text position, including | 749 | /* First position in this row. This is the text position, including |
| 750 | overlay position information etc, where the display of this row | 750 | overlay position information etc, where the display of this row |
| 751 | started, and can thus be less the position of the first glyph | 751 | started, and can thus be less than the position of the first |
| 752 | (e.g. due to invisible text or horizontal scrolling). BIDI Note: | 752 | glyph (e.g. due to invisible text or horizontal scrolling). |
| 753 | This is the smallest character position in the row, but not | 753 | BIDI Note: In R2L rows, that have its reversed_p flag set, this |
| 754 | necessarily the character that is the leftmost on the display. */ | 754 | position is at or beyond the right edge of the row. */ |
| 755 | struct display_pos start; | 755 | struct display_pos start; |
| 756 | 756 | ||
| 757 | /* Text position at the end of this row. This is the position after | 757 | /* Text position at the end of this row. This is the position after |
| 758 | the last glyph on this row. It can be greater than the last | 758 | the last glyph on this row. It can be greater than the last |
| 759 | glyph position + 1, due to truncation, invisible text etc. In an | 759 | glyph position + 1, due to a newline that ends the line, |
| 760 | up-to-date display, this should always be equal to the start | 760 | truncation, invisible text etc. In an up-to-date display, this |
| 761 | position of the next row. BIDI Note: this is the character whose | 761 | should always be equal to the start position of the next row. |
| 762 | buffer position is the largest, but not necessarily the rightmost | 762 | BIDI Note: In R2L rows, this position is at or beyond the left |
| 763 | one on the display. */ | 763 | edge of the row. */ |
| 764 | struct display_pos end; | 764 | struct display_pos end; |
| 765 | 765 | ||
| 766 | /* The smallest and the largest buffer positions that contributed to | ||
| 767 | glyphs in this row. Note that due to bidi reordering, these are | ||
| 768 | in general different from the text positions stored in `start' | ||
| 769 | and `end' members above, and also different from the buffer | ||
| 770 | positions recorded in the glyphs displayed the leftmost and | ||
| 771 | rightmost on the screen. */ | ||
| 772 | struct text_pos minpos, maxpos; | ||
| 773 | |||
| 766 | /* Non-zero means the overlay arrow bitmap is on this line. | 774 | /* Non-zero means the overlay arrow bitmap is on this line. |
| 767 | -1 means use default overlay arrow bitmap, else | 775 | -1 means use default overlay arrow bitmap, else |
| 768 | it specifies actual fringe bitmap number. */ | 776 | it specifies actual fringe bitmap number. */ |
| @@ -947,16 +955,16 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int)); | |||
| 947 | displayed by ROW, which is not necessarily the smallest horizontal | 955 | displayed by ROW, which is not necessarily the smallest horizontal |
| 948 | position. */ | 956 | position. */ |
| 949 | 957 | ||
| 950 | #define MATRIX_ROW_START_CHARPOS(ROW) ((ROW)->start.pos.charpos) | 958 | #define MATRIX_ROW_START_CHARPOS(ROW) ((ROW)->minpos.charpos) |
| 951 | #define MATRIX_ROW_START_BYTEPOS(ROW) ((ROW)->start.pos.bytepos) | 959 | #define MATRIX_ROW_START_BYTEPOS(ROW) ((ROW)->minpos.bytepos) |
| 952 | 960 | ||
| 953 | /* Return the character/ byte position at which ROW ends. BIDI Note: | 961 | /* Return the character/ byte position at which ROW ends. BIDI Note: |
| 954 | this is the largest character/byte position among characters in | 962 | this is the largest character/byte position among characters in |
| 955 | ROW, i.e. the last logical-order character displayed by ROW, which | 963 | ROW, i.e. the last logical-order character displayed by ROW, which |
| 956 | is not necessarily the largest horizontal position. */ | 964 | is not necessarily the largest horizontal position. */ |
| 957 | 965 | ||
| 958 | #define MATRIX_ROW_END_CHARPOS(ROW) ((ROW)->end.pos.charpos) | 966 | #define MATRIX_ROW_END_CHARPOS(ROW) ((ROW)->maxpos.charpos) |
| 959 | #define MATRIX_ROW_END_BYTEPOS(ROW) ((ROW)->end.pos.bytepos) | 967 | #define MATRIX_ROW_END_BYTEPOS(ROW) ((ROW)->maxpos.bytepos) |
| 960 | 968 | ||
| 961 | /* Return the vertical position of ROW in MATRIX. */ | 969 | /* Return the vertical position of ROW in MATRIX. */ |
| 962 | 970 | ||
| @@ -1789,7 +1797,7 @@ struct bidi_it { | |||
| 1789 | EMACS_INT next_en_pos; /* position of next EN char for ET */ | 1797 | EMACS_INT next_en_pos; /* position of next EN char for ET */ |
| 1790 | EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */ | 1798 | EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */ |
| 1791 | bidi_dir_t sor; /* direction of start-of-run in effect */ | 1799 | bidi_dir_t sor; /* direction of start-of-run in effect */ |
| 1792 | int scan_dir; /* direction of text scan */ | 1800 | int scan_dir; /* direction of text scan, 1: forw, -1: back */ |
| 1793 | int stack_idx; /* index of current data on the stack */ | 1801 | int stack_idx; /* index of current data on the stack */ |
| 1794 | /* Note: Everything from here on is not copied/saved when the bidi | 1802 | /* Note: Everything from here on is not copied/saved when the bidi |
| 1795 | iterator state is saved, pushed, or popped. So only put here | 1803 | iterator state is saved, pushed, or popped. So only put here |
| @@ -2913,8 +2921,8 @@ void mark_window_display_accurate P_ ((Lisp_Object, int)); | |||
| 2913 | void redisplay_preserve_echo_area P_ ((int)); | 2921 | void redisplay_preserve_echo_area P_ ((int)); |
| 2914 | int set_cursor_from_row P_ ((struct window *, struct glyph_row *, | 2922 | int set_cursor_from_row P_ ((struct window *, struct glyph_row *, |
| 2915 | struct glyph_matrix *, int, int, int, int)); | 2923 | struct glyph_matrix *, int, int, int, int)); |
| 2916 | void init_iterator P_ ((struct it *, struct window *, int, | 2924 | void init_iterator P_ ((struct it *, struct window *, EMACS_INT, |
| 2917 | int, struct glyph_row *, enum face_id)); | 2925 | EMACS_INT, struct glyph_row *, enum face_id)); |
| 2918 | void init_iterator_to_row_start P_ ((struct it *, struct window *, | 2926 | void init_iterator_to_row_start P_ ((struct it *, struct window *, |
| 2919 | struct glyph_row *)); | 2927 | struct glyph_row *)); |
| 2920 | int get_next_display_element P_ ((struct it *)); | 2928 | int get_next_display_element P_ ((struct it *)); |
diff --git a/src/dispnew.c b/src/dispnew.c index 7ab2bf35811..476b58ae7e3 100644 --- a/src/dispnew.c +++ b/src/dispnew.c | |||
| @@ -1188,6 +1188,10 @@ increment_row_positions (row, delta, delta_bytes) | |||
| 1188 | MATRIX_ROW_START_BYTEPOS (row) += delta_bytes; | 1188 | MATRIX_ROW_START_BYTEPOS (row) += delta_bytes; |
| 1189 | MATRIX_ROW_END_CHARPOS (row) += delta; | 1189 | MATRIX_ROW_END_CHARPOS (row) += delta; |
| 1190 | MATRIX_ROW_END_BYTEPOS (row) += delta_bytes; | 1190 | MATRIX_ROW_END_BYTEPOS (row) += delta_bytes; |
| 1191 | CHARPOS (row->start.pos) += delta; | ||
| 1192 | BYTEPOS (row->start.pos) += delta_bytes; | ||
| 1193 | CHARPOS (row->end.pos) += delta; | ||
| 1194 | BYTEPOS (row->end.pos) += delta_bytes; | ||
| 1191 | 1195 | ||
| 1192 | if (!row->enabled_p) | 1196 | if (!row->enabled_p) |
| 1193 | return; | 1197 | return; |
| @@ -1748,13 +1752,19 @@ check_matrix_invariants (w) | |||
| 1748 | /* Check that character and byte positions are in sync. */ | 1752 | /* Check that character and byte positions are in sync. */ |
| 1749 | xassert (MATRIX_ROW_START_BYTEPOS (row) | 1753 | xassert (MATRIX_ROW_START_BYTEPOS (row) |
| 1750 | == CHAR_TO_BYTE (MATRIX_ROW_START_CHARPOS (row))); | 1754 | == CHAR_TO_BYTE (MATRIX_ROW_START_CHARPOS (row))); |
| 1755 | xassert (BYTEPOS (row->start.pos) | ||
| 1756 | == CHAR_TO_BYTE (CHARPOS (row->start.pos))); | ||
| 1751 | 1757 | ||
| 1752 | /* CHAR_TO_BYTE aborts when invoked for a position > Z. We can | 1758 | /* CHAR_TO_BYTE aborts when invoked for a position > Z. We can |
| 1753 | have such a position temporarily in case of a minibuffer | 1759 | have such a position temporarily in case of a minibuffer |
| 1754 | displaying something like `[Sole completion]' at its end. */ | 1760 | displaying something like `[Sole completion]' at its end. */ |
| 1755 | if (MATRIX_ROW_END_CHARPOS (row) < BUF_ZV (current_buffer)) | 1761 | if (MATRIX_ROW_END_CHARPOS (row) < BUF_ZV (current_buffer)) |
| 1756 | xassert (MATRIX_ROW_END_BYTEPOS (row) | 1762 | { |
| 1757 | == CHAR_TO_BYTE (MATRIX_ROW_END_CHARPOS (row))); | 1763 | xassert (MATRIX_ROW_END_BYTEPOS (row) |
| 1764 | == CHAR_TO_BYTE (MATRIX_ROW_END_CHARPOS (row))); | ||
| 1765 | xassert (BYTEPOS (row->end.pos) | ||
| 1766 | == CHAR_TO_BYTE (CHARPOS (row->end.pos))); | ||
| 1767 | } | ||
| 1758 | 1768 | ||
| 1759 | /* Check that end position of `row' is equal to start position | 1769 | /* Check that end position of `row' is equal to start position |
| 1760 | of next row. */ | 1770 | of next row. */ |
| @@ -1764,6 +1774,8 @@ check_matrix_invariants (w) | |||
| 1764 | == MATRIX_ROW_START_CHARPOS (next)); | 1774 | == MATRIX_ROW_START_CHARPOS (next)); |
| 1765 | xassert (MATRIX_ROW_END_BYTEPOS (row) | 1775 | xassert (MATRIX_ROW_END_BYTEPOS (row) |
| 1766 | == MATRIX_ROW_START_BYTEPOS (next)); | 1776 | == MATRIX_ROW_START_BYTEPOS (next)); |
| 1777 | xassert (CHARPOS (row->end.pos) == CHARPOS (next->start.pos)); | ||
| 1778 | xassert (BYTEPOS (row->end.pos) == BYTEPOS (next->start.pos)); | ||
| 1767 | } | 1779 | } |
| 1768 | row = next; | 1780 | row = next; |
| 1769 | } | 1781 | } |
diff --git a/src/fileio.c b/src/fileio.c index 85685ebc9c4..de32bfecd34 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -2194,7 +2194,10 @@ DEFUN ("delete-directory-internal", Fdelete_directory_internal, | |||
| 2194 | return Qnil; | 2194 | return Qnil; |
| 2195 | } | 2195 | } |
| 2196 | 2196 | ||
| 2197 | DEFUN ("delete-file", Fdelete_file, Sdelete_file, 1, 2, "fDelete file: \nP", | 2197 | DEFUN ("delete-file", Fdelete_file, Sdelete_file, 1, 2, |
| 2198 | "(list (read-file-name \"Delete file: \" nil default-directory \ | ||
| 2199 | (confirm-nonexistent-file-or-buffer)) \ | ||
| 2200 | current-prefix-arg)", | ||
| 2198 | doc: /* Delete file named FILENAME. If it is a symlink, remove the symlink. | 2201 | doc: /* Delete file named FILENAME. If it is a symlink, remove the symlink. |
| 2199 | If file has multiple names, it continues to exist with the other names. | 2202 | If file has multiple names, it continues to exist with the other names. |
| 2200 | 2203 | ||
diff --git a/src/image.c b/src/image.c index 030e06ad77a..b9620e10948 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -1582,29 +1582,56 @@ clear_image_cache (struct frame *f, Lisp_Object filter) | |||
| 1582 | { | 1582 | { |
| 1583 | struct image_cache *c = FRAME_IMAGE_CACHE (f); | 1583 | struct image_cache *c = FRAME_IMAGE_CACHE (f); |
| 1584 | 1584 | ||
| 1585 | if (c && (!NILP (filter) || INTEGERP (Vimage_cache_eviction_delay))) | 1585 | if (c) |
| 1586 | { | 1586 | { |
| 1587 | EMACS_TIME t; | 1587 | int i, nfreed = 0; |
| 1588 | unsigned long old; | ||
| 1589 | int i, nfreed; | ||
| 1590 | |||
| 1591 | EMACS_GET_TIME (t); | ||
| 1592 | old = EMACS_SECS (t) - XFASTINT (Vimage_cache_eviction_delay); | ||
| 1593 | 1588 | ||
| 1594 | /* Block input so that we won't be interrupted by a SIGIO | 1589 | /* Block input so that we won't be interrupted by a SIGIO |
| 1595 | while being in an inconsistent state. */ | 1590 | while being in an inconsistent state. */ |
| 1596 | BLOCK_INPUT; | 1591 | BLOCK_INPUT; |
| 1597 | 1592 | ||
| 1598 | for (i = nfreed = 0; i < c->used; ++i) | 1593 | if (!NILP (filter)) |
| 1599 | { | 1594 | { |
| 1600 | struct image *img = c->images[i]; | 1595 | /* Filter image cache. */ |
| 1601 | if (img != NULL | 1596 | for (i = 0; i < c->used; ++i) |
| 1602 | && (NILP (filter) ? img->timestamp < old | ||
| 1603 | : (EQ (Qt, filter) | ||
| 1604 | || !NILP (Fmember (filter, img->dependencies))))) | ||
| 1605 | { | 1597 | { |
| 1606 | free_image (f, img); | 1598 | struct image *img = c->images[i]; |
| 1607 | ++nfreed; | 1599 | if (img && (EQ (Qt, filter) |
| 1600 | || !NILP (Fmember (filter, img->dependencies)))) | ||
| 1601 | { | ||
| 1602 | free_image (f, img); | ||
| 1603 | ++nfreed; | ||
| 1604 | } | ||
| 1605 | } | ||
| 1606 | } | ||
| 1607 | else if (INTEGERP (Vimage_cache_eviction_delay)) | ||
| 1608 | { | ||
| 1609 | /* Free cache based on timestamp. */ | ||
| 1610 | EMACS_TIME t; | ||
| 1611 | unsigned long old; | ||
| 1612 | int delay, nimages = 0; | ||
| 1613 | |||
| 1614 | for (i = 0; i < c->used; ++i) | ||
| 1615 | if (c->images[i]) | ||
| 1616 | nimages++; | ||
| 1617 | |||
| 1618 | /* If the number of cached images has grown unusually large, | ||
| 1619 | decrease the cache eviction delay (Bug#6230). */ | ||
| 1620 | delay = XFASTINT (Vimage_cache_eviction_delay); | ||
| 1621 | if (nimages > 40) | ||
| 1622 | delay = max (1, 1600 * delay / (nimages*nimages)); | ||
| 1623 | |||
| 1624 | EMACS_GET_TIME (t); | ||
| 1625 | old = EMACS_SECS (t) - delay; | ||
| 1626 | |||
| 1627 | for (i = 0; i < c->used; ++i) | ||
| 1628 | { | ||
| 1629 | struct image *img = c->images[i]; | ||
| 1630 | if (img && img->timestamp < old) | ||
| 1631 | { | ||
| 1632 | free_image (f, img); | ||
| 1633 | ++nfreed; | ||
| 1634 | } | ||
| 1608 | } | 1635 | } |
| 1609 | } | 1636 | } |
| 1610 | 1637 | ||
| @@ -1662,11 +1689,13 @@ which is then usually a filename. */) | |||
| 1662 | } | 1689 | } |
| 1663 | 1690 | ||
| 1664 | 1691 | ||
| 1665 | DEFUN ("image-refresh", Fimage_refresh, Simage_refresh, | 1692 | DEFUN ("image-flush", Fimage_flush, Simage_flush, |
| 1666 | 1, 2, 0, | 1693 | 1, 2, 0, |
| 1667 | doc: /* Refresh the image with specification SPEC on frame FRAME. | 1694 | doc: /* Fush the image with specification SPEC on frame FRAME. |
| 1668 | If SPEC specifies an image file, the displayed image is updated with | 1695 | This removes the image from the Emacs image cache. If SPEC specifies |
| 1669 | the current contents of that file. | 1696 | an image file, the next redisplay of this image will read from the |
| 1697 | current contents of that file. | ||
| 1698 | |||
| 1670 | FRAME nil or omitted means use the selected frame. | 1699 | FRAME nil or omitted means use the selected frame. |
| 1671 | FRAME t means refresh the image on all frames. */) | 1700 | FRAME t means refresh the image on all frames. */) |
| 1672 | (spec, frame) | 1701 | (spec, frame) |
| @@ -8499,7 +8528,7 @@ non-numeric, there is no explicit limit on the size of images. */); | |||
| 8499 | 8528 | ||
| 8500 | defsubr (&Sinit_image_library); | 8529 | defsubr (&Sinit_image_library); |
| 8501 | defsubr (&Sclear_image_cache); | 8530 | defsubr (&Sclear_image_cache); |
| 8502 | defsubr (&Simage_refresh); | 8531 | defsubr (&Simage_flush); |
| 8503 | defsubr (&Simage_size); | 8532 | defsubr (&Simage_size); |
| 8504 | defsubr (&Simage_mask_p); | 8533 | defsubr (&Simage_mask_p); |
| 8505 | defsubr (&Simage_metadata); | 8534 | defsubr (&Simage_metadata); |
| @@ -8520,11 +8549,14 @@ A cross is always drawn on black & white displays. */); | |||
| 8520 | Vx_bitmap_file_path = decode_env_path ((char *) 0, PATH_BITMAPS); | 8549 | Vx_bitmap_file_path = decode_env_path ((char *) 0, PATH_BITMAPS); |
| 8521 | 8550 | ||
| 8522 | DEFVAR_LISP ("image-cache-eviction-delay", &Vimage_cache_eviction_delay, | 8551 | DEFVAR_LISP ("image-cache-eviction-delay", &Vimage_cache_eviction_delay, |
| 8523 | doc: /* Time after which cached images are removed from the cache. | 8552 | doc: /* Maximum time after which images are removed from the cache. |
| 8524 | When an image has not been displayed this many seconds, remove it | 8553 | When an image has not been displayed this many seconds, Emacs |
| 8525 | from the image cache. Value must be an integer or nil with nil | 8554 | automatically removes it from the image cache. If the cache contains |
| 8526 | meaning don't clear the cache. */); | 8555 | a large number of images, the actual eviction time may be shorter. |
| 8527 | Vimage_cache_eviction_delay = make_number (30 * 60); | 8556 | The value can also be nil, meaning the cache is never cleared. |
| 8557 | |||
| 8558 | The function `clear-image-cache' disregards this variable. */); | ||
| 8559 | Vimage_cache_eviction_delay = make_number (300); | ||
| 8528 | } | 8560 | } |
| 8529 | 8561 | ||
| 8530 | void | 8562 | void |
diff --git a/src/keyboard.c b/src/keyboard.c index 74efb856852..63372d600e3 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -11985,7 +11985,7 @@ The value `kill-region' is special; it means that the previous command | |||
| 11985 | was a kill command. | 11985 | was a kill command. |
| 11986 | 11986 | ||
| 11987 | `last-command' has a separate binding for each terminal device. | 11987 | `last-command' has a separate binding for each terminal device. |
| 11988 | See Info node `(elisp)Multiple displays'. */); | 11988 | See Info node `(elisp)Multiple Terminals'. */); |
| 11989 | 11989 | ||
| 11990 | DEFVAR_KBOARD ("real-last-command", Vreal_last_command, | 11990 | DEFVAR_KBOARD ("real-last-command", Vreal_last_command, |
| 11991 | doc: /* Same as `last-command', but never altered by Lisp code. */); | 11991 | doc: /* Same as `last-command', but never altered by Lisp code. */); |
| @@ -12123,8 +12123,8 @@ untranslated. In a vector, an element which is nil means "no translation". | |||
| 12123 | This is applied to the characters supplied to input methods, not their | 12123 | This is applied to the characters supplied to input methods, not their |
| 12124 | output. See also `translation-table-for-input'. | 12124 | output. See also `translation-table-for-input'. |
| 12125 | 12125 | ||
| 12126 | This variable has a separate binding for each terminal. See Info node | 12126 | This variable has a separate binding for each terminal. |
| 12127 | `(elisp)Multiple displays'. */); | 12127 | See Info node `(elisp)Multiple Terminals'. */); |
| 12128 | 12128 | ||
| 12129 | DEFVAR_BOOL ("cannot-suspend", &cannot_suspend, | 12129 | DEFVAR_BOOL ("cannot-suspend", &cannot_suspend, |
| 12130 | doc: /* Non-nil means to always spawn a subshell instead of suspending. | 12130 | doc: /* Non-nil means to always spawn a subshell instead of suspending. |
| @@ -12215,7 +12215,7 @@ set up a different keymap for reading the next command. | |||
| 12215 | 12215 | ||
| 12216 | `overriding-terminal-local-map' has a separate binding for each | 12216 | `overriding-terminal-local-map' has a separate binding for each |
| 12217 | terminal device. | 12217 | terminal device. |
| 12218 | See Info node `(elisp)Multiple displays'. */); | 12218 | See Info node `(elisp)Multiple Terminals'. */); |
| 12219 | 12219 | ||
| 12220 | DEFVAR_LISP ("overriding-local-map", &Voverriding_local_map, | 12220 | DEFVAR_LISP ("overriding-local-map", &Voverriding_local_map, |
| 12221 | doc: /* Keymap that overrides all other local keymaps. | 12221 | doc: /* Keymap that overrides all other local keymaps. |
| @@ -12243,7 +12243,7 @@ numeric keysym code (sans the \"system-specific\" bit 1<<28) | |||
| 12243 | and SYMBOL is its name. | 12243 | and SYMBOL is its name. |
| 12244 | 12244 | ||
| 12245 | `system-key-alist' has a separate binding for each terminal device. | 12245 | `system-key-alist' has a separate binding for each terminal device. |
| 12246 | See Info node `(elisp)Multiple displays'. */); | 12246 | See Info node `(elisp)Multiple Terminals'. */); |
| 12247 | 12247 | ||
| 12248 | DEFVAR_KBOARD ("local-function-key-map", Vlocal_function_key_map, | 12248 | DEFVAR_KBOARD ("local-function-key-map", Vlocal_function_key_map, |
| 12249 | doc: /* Keymap that translates key sequences to key sequences during input. | 12249 | doc: /* Keymap that translates key sequences to key sequences during input. |
| @@ -12269,7 +12269,7 @@ Typing `ESC O P' to `read-key-sequence' would return [f1]. Typing | |||
| 12269 | typing `ESC O P x' would return [f1 x]. | 12269 | typing `ESC O P x' would return [f1 x]. |
| 12270 | 12270 | ||
| 12271 | `local-function-key-map' has a separate binding for each terminal | 12271 | `local-function-key-map' has a separate binding for each terminal |
| 12272 | device. See Info node `(elisp)Multiple displays'. If you need to | 12272 | device. See Info node `(elisp)Multiple Terminals'. If you need to |
| 12273 | define a binding on all terminals, change `function-key-map' | 12273 | define a binding on all terminals, change `function-key-map' |
| 12274 | instead. Initially, `local-function-key-map' is an empty keymap that | 12274 | instead. Initially, `local-function-key-map' is an empty keymap that |
| 12275 | has `function-key-map' as its parent on all terminal devices. */); | 12275 | has `function-key-map' as its parent on all terminal devices. */); |
diff --git a/src/m/ibms390x.h b/src/m/ibms390x.h index fda3007cb74..d6aa0c713c6 100644 --- a/src/m/ibms390x.h +++ b/src/m/ibms390x.h | |||
| @@ -62,8 +62,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 62 | /* On the 64 bit architecture, we can use 60 bits for addresses */ | 62 | /* On the 64 bit architecture, we can use 60 bits for addresses */ |
| 63 | #define VALBITS 60 | 63 | #define VALBITS 60 |
| 64 | 64 | ||
| 65 | #define LINKER $(CC) -nostdlib | ||
| 66 | |||
| 67 | /* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ | 65 | /* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ |
| 68 | #define XPNTR(a) XUINT (a) | 66 | #define XPNTR(a) XUINT (a) |
| 69 | 67 | ||
diff --git a/src/m/macppc.h b/src/m/macppc.h index b9dcf3bdc92..f348286030c 100644 --- a/src/m/macppc.h +++ b/src/m/macppc.h | |||
| @@ -32,12 +32,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 32 | #define HAVE_TEXT_START | 32 | #define HAVE_TEXT_START |
| 33 | #endif | 33 | #endif |
| 34 | 34 | ||
| 35 | /* NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says this is needed | ||
| 36 | For MkLinux/LinuxPPC. */ | ||
| 37 | #ifdef GNU_LINUX | ||
| 38 | #define LINKER $(CC) -nostdlib | ||
| 39 | #endif | ||
| 40 | |||
| 41 | #ifdef _ARCH_PPC64 | 35 | #ifdef _ARCH_PPC64 |
| 42 | #ifndef _LP64 | 36 | #ifndef _LP64 |
| 43 | #define _LP64 | 37 | #define _LP64 |
diff --git a/src/ns.mk b/src/ns.mk new file mode 100644 index 00000000000..255ffa7046b --- /dev/null +++ b/src/ns.mk | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | /* autodeps.mk --- src/Makefile fragment for GNU Emacs | ||
| 2 | |||
| 3 | Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 3 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | |||
| 20 | Commentary: | ||
| 21 | |||
| 22 | This is inserted in src/Makefile if HAVE_NS. | ||
| 23 | |||
| 24 | The only reason this is in a separate file is because $ns_appdir, | ||
| 25 | which appears as a target, is empty on non-NS builds. Some makes | ||
| 26 | do not like empty targets, even if they are never used. */ | ||
| 27 | |||
| 28 | ${ns_appdir}: ${ns_appsrc} | ||
| 29 | rm -fr ${ns_appdir} | ||
| 30 | mkdir -p ${ns_appdir} | ||
| 31 | ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; umask 022; tar xf - ) | ||
| 32 | |||
| 33 | ${ns_appbindir}Emacs: emacs${EXEEXT} | ||
| 34 | mkdir -p ${ns_appbindir} | ||
| 35 | cp -f emacs${EXEEXT} ${ns_appbindir}Emacs | ||
| 36 | |||
| 37 | ns-app: ${ns_appdir} ${ns_appbindir}Emacs | ||
| 38 | |||
| 39 | /* ns.mk ends here */ | ||
diff --git a/src/process.c b/src/process.c index a09ac297a2d..acc13ea199b 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -3347,11 +3347,25 @@ usage: (make-network-process &rest ARGS) */) | |||
| 3347 | /* :service SERVICE -- string, integer (port number), or t (random port). */ | 3347 | /* :service SERVICE -- string, integer (port number), or t (random port). */ |
| 3348 | service = Fplist_get (contact, QCservice); | 3348 | service = Fplist_get (contact, QCservice); |
| 3349 | 3349 | ||
| 3350 | /* :host HOST -- hostname, ip address, or 'local for localhost. */ | ||
| 3351 | host = Fplist_get (contact, QChost); | ||
| 3352 | if (!NILP (host)) | ||
| 3353 | { | ||
| 3354 | if (EQ (host, Qlocal)) | ||
| 3355 | host = build_string ("localhost"); | ||
| 3356 | CHECK_STRING (host); | ||
| 3357 | } | ||
| 3358 | |||
| 3350 | #ifdef HAVE_LOCAL_SOCKETS | 3359 | #ifdef HAVE_LOCAL_SOCKETS |
| 3351 | if (family == AF_LOCAL) | 3360 | if (family == AF_LOCAL) |
| 3352 | { | 3361 | { |
| 3353 | /* Host is not used. */ | 3362 | if (!NILP (host)) |
| 3354 | host = Qnil; | 3363 | { |
| 3364 | message (":family local ignores the :host \"%s\" property", | ||
| 3365 | SDATA (host)); | ||
| 3366 | contact = Fplist_put (contact, QChost, Qnil); | ||
| 3367 | host = Qnil; | ||
| 3368 | } | ||
| 3355 | CHECK_STRING (service); | 3369 | CHECK_STRING (service); |
| 3356 | bzero (&address_un, sizeof address_un); | 3370 | bzero (&address_un, sizeof address_un); |
| 3357 | address_un.sun_family = AF_LOCAL; | 3371 | address_un.sun_family = AF_LOCAL; |
| @@ -3362,15 +3376,6 @@ usage: (make-network-process &rest ARGS) */) | |||
| 3362 | } | 3376 | } |
| 3363 | #endif | 3377 | #endif |
| 3364 | 3378 | ||
| 3365 | /* :host HOST -- hostname, ip address, or 'local for localhost. */ | ||
| 3366 | host = Fplist_get (contact, QChost); | ||
| 3367 | if (!NILP (host)) | ||
| 3368 | { | ||
| 3369 | if (EQ (host, Qlocal)) | ||
| 3370 | host = build_string ("localhost"); | ||
| 3371 | CHECK_STRING (host); | ||
| 3372 | } | ||
| 3373 | |||
| 3374 | /* Slow down polling to every ten seconds. | 3379 | /* Slow down polling to every ten seconds. |
| 3375 | Some kernels have a bug which causes retrying connect to fail | 3380 | Some kernels have a bug which causes retrying connect to fail |
| 3376 | after a connect. Polling can interfere with gethostbyname too. */ | 3381 | after a connect. Polling can interfere with gethostbyname too. */ |
diff --git a/src/s/aix4-2.h b/src/s/aix4-2.h index cdb97b7f9fa..5212c432843 100644 --- a/src/s/aix4-2.h +++ b/src/s/aix4-2.h | |||
| @@ -61,11 +61,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 61 | /* The kernel symbol where the load average is found is named avenrun. */ | 61 | /* The kernel symbol where the load average is found is named avenrun. */ |
| 62 | #define LDAV_SYMBOL "avenrun" | 62 | #define LDAV_SYMBOL "avenrun" |
| 63 | 63 | ||
| 64 | /* Special itemss needed to make Emacs run on this system. */ | 64 | /* Special items needed to make Emacs run on this system. */ |
| 65 | |||
| 66 | #ifndef __GNUC__ | ||
| 67 | #define LINKER cc | ||
| 68 | #endif | ||
| 69 | 65 | ||
| 70 | /* The following definition seems to be needed in AIX version 3.1.6.8. | 66 | /* The following definition seems to be needed in AIX version 3.1.6.8. |
| 71 | It may not have been needed in certain earlier versions. */ | 67 | It may not have been needed in certain earlier versions. */ |
| @@ -110,7 +106,5 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 110 | 106 | ||
| 111 | #define UNEXEC unexaix.o | 107 | #define UNEXEC unexaix.o |
| 112 | 108 | ||
| 113 | #define ORDINARY_LINK | ||
| 114 | |||
| 115 | /* arch-tag: 38fe75ea-6aef-42bd-8449-bc34d921a562 | 109 | /* arch-tag: 38fe75ea-6aef-42bd-8449-bc34d921a562 |
| 116 | (do not change this comment) */ | 110 | (do not change this comment) */ |
diff --git a/src/s/cygwin.h b/src/s/cygwin.h index e2afb7ddc44..b6d0c7c88ff 100644 --- a/src/s/cygwin.h +++ b/src/s/cygwin.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* System description header file for Cygwin. | 1 | /* System description header file for Cygwin. |
| 2 | 2 | ||
| 3 | Copyright (C) 1985, 1986, 1992, 1999, 2002, 2003, 2004, 2005, 2006, | 3 | Copyright (C) 1985, 1986, 1992, 1999, 2002, 2003, 2004, 2005, 2006, |
| 4 | 2007, 2008, 2009, 2010 Free Software Foundation, Inc. | 4 | 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | This file is part of GNU Emacs. | 6 | This file is part of GNU Emacs. |
| 7 | 7 | ||
| @@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License | |||
| 19 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | 19 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
| 20 | 20 | ||
| 21 | /* SYSTEM_TYPE should indicate the kind of system you are using. | 21 | /* SYSTEM_TYPE should indicate the kind of system you are using. |
| 22 | It sets the Lisp variable system-type. */ | 22 | It sets the Lisp variable system-type. */ |
| 23 | #define SYSTEM_TYPE "cygwin" | 23 | #define SYSTEM_TYPE "cygwin" |
| 24 | 24 | ||
| 25 | /* Emacs can read input using SIGIO and buffering characters itself, | 25 | /* Emacs can read input using SIGIO and buffering characters itself, |
| @@ -94,7 +94,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 94 | #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) | 94 | #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) |
| 95 | #define SYSV_SYSTEM_DIR 1 | 95 | #define SYSV_SYSTEM_DIR 1 |
| 96 | #define UNEXEC unexcw.o | 96 | #define UNEXEC unexcw.o |
| 97 | #define LINKER $(CC) | ||
| 98 | 97 | ||
| 99 | #define HAVE_SOCKETS | 98 | #define HAVE_SOCKETS |
| 100 | 99 | ||
diff --git a/src/s/darwin.h b/src/s/darwin.h index 76c0054cd3f..a30360576a8 100644 --- a/src/s/darwin.h +++ b/src/s/darwin.h | |||
| @@ -147,9 +147,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 147 | #undef HAVE_POSIX_MEMALIGN | 147 | #undef HAVE_POSIX_MEMALIGN |
| 148 | #endif | 148 | #endif |
| 149 | 149 | ||
| 150 | /* Link this program just by running cc. */ | ||
| 151 | #define ORDINARY_LINK | ||
| 152 | |||
| 153 | /* Define the following so emacs symbols will not conflict with those | 150 | /* Define the following so emacs symbols will not conflict with those |
| 154 | in the System framework. Otherwise -prebind will not work. */ | 151 | in the System framework. Otherwise -prebind will not work. */ |
| 155 | 152 | ||
diff --git a/src/s/gnu.h b/src/s/gnu.h index cb4c4a9d807..4567f4e9f4f 100644 --- a/src/s/gnu.h +++ b/src/s/gnu.h | |||
| @@ -29,8 +29,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 29 | 29 | ||
| 30 | #define SIGNALS_VIA_CHARACTERS | 30 | #define SIGNALS_VIA_CHARACTERS |
| 31 | 31 | ||
| 32 | /* GNU needs its own crt0, and libc defines data_start. */ | 32 | /* libc defines data_start. */ |
| 33 | #define ORDINARY_LINK | ||
| 34 | #define DATA_START ({ extern int data_start; (char *) &data_start; }) | 33 | #define DATA_START ({ extern int data_start; (char *) &data_start; }) |
| 35 | 34 | ||
| 36 | /* Some losing code fails to include this and then assumes | 35 | /* Some losing code fails to include this and then assumes |
diff --git a/src/s/msdos.h b/src/s/msdos.h index 90f630c8627..c78096c6b90 100644 --- a/src/s/msdos.h +++ b/src/s/msdos.h | |||
| @@ -82,8 +82,6 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ | |||
| 82 | 82 | ||
| 83 | #define _NAIVE_DOS_REGS | 83 | #define _NAIVE_DOS_REGS |
| 84 | 84 | ||
| 85 | #define ORDINARY_LINK | ||
| 86 | |||
| 87 | /* command.com does not understand `...` so we define this. */ | 85 | /* command.com does not understand `...` so we define this. */ |
| 88 | #define SEPCHAR ';' | 86 | #define SEPCHAR ';' |
| 89 | 87 | ||
diff --git a/src/s/netbsd.h b/src/s/netbsd.h index 4874ec9af56..af8fd00a6bd 100644 --- a/src/s/netbsd.h +++ b/src/s/netbsd.h | |||
| @@ -26,12 +26,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 26 | 26 | ||
| 27 | #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) | 27 | #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) |
| 28 | 28 | ||
| 29 | /* On post 1.3 releases of NetBSD, gcc -nostdlib also clears | ||
| 30 | the library search parth, i.e. it won't search /usr/lib | ||
| 31 | for libc and friends. Using -nostartfiles instead avoids | ||
| 32 | this problem, and will also work on earlier NetBSD releases. */ | ||
| 33 | #define LINKER $(CC) -nostartfiles | ||
| 34 | |||
| 35 | #define DEFAULT_SOUND_DEVICE "/dev/audio" | 29 | #define DEFAULT_SOUND_DEVICE "/dev/audio" |
| 36 | 30 | ||
| 37 | /* Greg A. Woods <woods@weird.com> says we must include signal.h | 31 | /* Greg A. Woods <woods@weird.com> says we must include signal.h |
diff --git a/src/s/usg5-4.h b/src/s/usg5-4.h index f870086368c..85499fb1124 100644 --- a/src/s/usg5-4.h +++ b/src/s/usg5-4.h | |||
| @@ -69,8 +69,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 69 | /* On USG systems signal handlers return void. */ | 69 | /* On USG systems signal handlers return void. */ |
| 70 | #define SIGTYPE void | 70 | #define SIGTYPE void |
| 71 | 71 | ||
| 72 | #define ORDINARY_LINK | ||
| 73 | |||
| 74 | /* Undump with ELF. */ | 72 | /* Undump with ELF. */ |
| 75 | #undef COFF | 73 | #undef COFF |
| 76 | 74 | ||
| @@ -5700,7 +5700,34 @@ sys_write (int fd, const void * buffer, unsigned int count) | |||
| 5700 | } | 5700 | } |
| 5701 | else | 5701 | else |
| 5702 | #endif | 5702 | #endif |
| 5703 | nchars = _write (fd, buffer, count); | 5703 | { |
| 5704 | /* Some networked filesystems don't like too large writes, so | ||
| 5705 | break them into smaller chunks. See the Comments section of | ||
| 5706 | the MSDN documentation of WriteFile for details behind the | ||
| 5707 | choice of the value of CHUNK below. See also the thread | ||
| 5708 | http://thread.gmane.org/gmane.comp.version-control.git/145294 | ||
| 5709 | in the git mailing list. */ | ||
| 5710 | const unsigned char *p = buffer; | ||
| 5711 | const unsigned chunk = 30 * 1024 * 1024; | ||
| 5712 | |||
| 5713 | nchars = 0; | ||
| 5714 | while (count > 0) | ||
| 5715 | { | ||
| 5716 | unsigned this_chunk = count < chunk ? count : chunk; | ||
| 5717 | int n = _write (fd, p, this_chunk); | ||
| 5718 | |||
| 5719 | nchars += n; | ||
| 5720 | if (n < 0) | ||
| 5721 | { | ||
| 5722 | nchars = n; | ||
| 5723 | break; | ||
| 5724 | } | ||
| 5725 | else if (n < this_chunk) | ||
| 5726 | break; | ||
| 5727 | count -= n; | ||
| 5728 | p += n; | ||
| 5729 | } | ||
| 5730 | } | ||
| 5704 | 5731 | ||
| 5705 | return nchars; | 5732 | return nchars; |
| 5706 | } | 5733 | } |
diff --git a/src/xdisp.c b/src/xdisp.c index 177a0a7e018..699f375e2f4 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -2598,7 +2598,7 @@ void | |||
| 2598 | init_iterator (it, w, charpos, bytepos, row, base_face_id) | 2598 | init_iterator (it, w, charpos, bytepos, row, base_face_id) |
| 2599 | struct it *it; | 2599 | struct it *it; |
| 2600 | struct window *w; | 2600 | struct window *w; |
| 2601 | int charpos, bytepos; | 2601 | EMACS_INT charpos, bytepos; |
| 2602 | struct glyph_row *row; | 2602 | struct glyph_row *row; |
| 2603 | enum face_id base_face_id; | 2603 | enum face_id base_face_id; |
| 2604 | { | 2604 | { |
| @@ -3012,7 +3012,7 @@ init_from_display_pos (it, w, pos) | |||
| 3012 | struct window *w; | 3012 | struct window *w; |
| 3013 | struct display_pos *pos; | 3013 | struct display_pos *pos; |
| 3014 | { | 3014 | { |
| 3015 | int charpos = CHARPOS (pos->pos), bytepos = BYTEPOS (pos->pos); | 3015 | EMACS_INT charpos = CHARPOS (pos->pos), bytepos = BYTEPOS (pos->pos); |
| 3016 | int i, overlay_strings_with_newlines = 0; | 3016 | int i, overlay_strings_with_newlines = 0; |
| 3017 | 3017 | ||
| 3018 | /* If POS specifies a position in a display vector, this might | 3018 | /* If POS specifies a position in a display vector, this might |
| @@ -12486,22 +12486,25 @@ redisplay_internal (preserve_echo_area) | |||
| 12486 | if (windows_or_buffers_changed && !pause) | 12486 | if (windows_or_buffers_changed && !pause) |
| 12487 | goto retry; | 12487 | goto retry; |
| 12488 | 12488 | ||
| 12489 | /* Clear the face cache eventually. */ | 12489 | /* Clear the face and image caches. |
| 12490 | if (consider_all_windows_p) | 12490 | |
| 12491 | We used to do this only if consider_all_windows_p. But the cache | ||
| 12492 | needs to be cleared if a timer creates images in the current | ||
| 12493 | buffer (e.g. the test case in Bug#6230). */ | ||
| 12494 | |||
| 12495 | if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT) | ||
| 12491 | { | 12496 | { |
| 12492 | if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT) | 12497 | clear_face_cache (0); |
| 12493 | { | 12498 | clear_face_cache_count = 0; |
| 12494 | clear_face_cache (0); | 12499 | } |
| 12495 | clear_face_cache_count = 0; | 12500 | |
| 12496 | } | ||
| 12497 | #ifdef HAVE_WINDOW_SYSTEM | 12501 | #ifdef HAVE_WINDOW_SYSTEM |
| 12498 | if (clear_image_cache_count > CLEAR_IMAGE_CACHE_COUNT) | 12502 | if (clear_image_cache_count > CLEAR_IMAGE_CACHE_COUNT) |
| 12499 | { | 12503 | { |
| 12500 | clear_image_caches (Qnil); | 12504 | clear_image_caches (Qnil); |
| 12501 | clear_image_cache_count = 0; | 12505 | clear_image_cache_count = 0; |
| 12502 | } | ||
| 12503 | #endif /* HAVE_WINDOW_SYSTEM */ | ||
| 12504 | } | 12506 | } |
| 12507 | #endif /* HAVE_WINDOW_SYSTEM */ | ||
| 12505 | 12508 | ||
| 12506 | end_of_redisplay: | 12509 | end_of_redisplay: |
| 12507 | unbind_to (count, Qnil); | 12510 | unbind_to (count, Qnil); |
| @@ -14959,7 +14962,7 @@ try_window_reusing_current_matrix (w) | |||
| 14959 | /* The variable new_start now holds the new window start. The old | 14962 | /* The variable new_start now holds the new window start. The old |
| 14960 | start `start' can be determined from the current matrix. */ | 14963 | start `start' can be determined from the current matrix. */ |
| 14961 | SET_TEXT_POS_FROM_MARKER (new_start, w->start); | 14964 | SET_TEXT_POS_FROM_MARKER (new_start, w->start); |
| 14962 | start = start_row->start.pos; | 14965 | start = start_row->minpos; |
| 14963 | start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix); | 14966 | start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix); |
| 14964 | 14967 | ||
| 14965 | /* Clear the desired matrix for the display below. */ | 14968 | /* Clear the desired matrix for the display below. */ |
| @@ -14998,7 +15001,7 @@ try_window_reusing_current_matrix (w) | |||
| 14998 | { | 15001 | { |
| 14999 | /* Advance to the next row as the "start". */ | 15002 | /* Advance to the next row as the "start". */ |
| 15000 | start_row++; | 15003 | start_row++; |
| 15001 | start = start_row->start.pos; | 15004 | start = start_row->minpos; |
| 15002 | /* If there are no more rows to try, or just one, give up. */ | 15005 | /* If there are no more rows to try, or just one, give up. */ |
| 15003 | if (start_row == MATRIX_MODE_LINE_ROW (w->current_matrix) - 1 | 15006 | if (start_row == MATRIX_MODE_LINE_ROW (w->current_matrix) - 1 |
| 15004 | || w->vscroll || MATRIX_ROW_PARTIALLY_VISIBLE_P (w, start_row) | 15007 | || w->vscroll || MATRIX_ROW_PARTIALLY_VISIBLE_P (w, start_row) |
| @@ -15280,39 +15283,26 @@ try_window_reusing_current_matrix (w) | |||
| 15280 | { | 15283 | { |
| 15281 | struct glyph *glyph = row->glyphs[TEXT_AREA] + w->cursor.hpos; | 15284 | struct glyph *glyph = row->glyphs[TEXT_AREA] + w->cursor.hpos; |
| 15282 | struct glyph *end = glyph + row->used[TEXT_AREA]; | 15285 | struct glyph *end = glyph + row->used[TEXT_AREA]; |
| 15283 | struct glyph *orig_glyph = glyph; | ||
| 15284 | struct cursor_pos orig_cursor = w->cursor; | ||
| 15285 | 15286 | ||
| 15286 | for (; glyph < end | 15287 | /* Can't use this optimization with bidi-reordered glyph |
| 15287 | && (!BUFFERP (glyph->object) | 15288 | rows, unless cursor is already at point. */ |
| 15288 | || glyph->charpos != PT); | 15289 | if (!NILP (XBUFFER (w->buffer)->bidi_display_reordering)) |
| 15289 | glyph++) | ||
| 15290 | { | ||
| 15291 | w->cursor.hpos++; | ||
| 15292 | w->cursor.x += glyph->pixel_width; | ||
| 15293 | } | ||
| 15294 | /* With bidi reordering, charpos changes non-linearly | ||
| 15295 | with hpos, so the right glyph could be to the | ||
| 15296 | left. */ | ||
| 15297 | if (!NILP (XBUFFER (w->buffer)->bidi_display_reordering) | ||
| 15298 | && (!BUFFERP (glyph->object) || glyph->charpos != PT)) | ||
| 15299 | { | 15290 | { |
| 15300 | struct glyph *start_glyph = row->glyphs[TEXT_AREA]; | 15291 | if (!(w->cursor.hpos >= 0 |
| 15301 | 15292 | && w->cursor.hpos < row->used[TEXT_AREA] | |
| 15302 | glyph = orig_glyph - 1; | 15293 | && BUFFERP (glyph->object) |
| 15303 | orig_cursor.hpos--; | 15294 | && glyph->charpos == PT)) |
| 15304 | orig_cursor.x -= glyph->pixel_width; | 15295 | return 0; |
| 15305 | for (; glyph >= start_glyph | ||
| 15306 | && (!BUFFERP (glyph->object) | ||
| 15307 | || glyph->charpos != PT); | ||
| 15308 | glyph--) | ||
| 15309 | { | ||
| 15310 | w->cursor.hpos--; | ||
| 15311 | w->cursor.x -= glyph->pixel_width; | ||
| 15312 | } | ||
| 15313 | if (BUFFERP (glyph->object) && glyph->charpos == PT) | ||
| 15314 | w->cursor = orig_cursor; | ||
| 15315 | } | 15296 | } |
| 15297 | else | ||
| 15298 | for (; glyph < end | ||
| 15299 | && (!BUFFERP (glyph->object) | ||
| 15300 | || glyph->charpos < PT); | ||
| 15301 | glyph++) | ||
| 15302 | { | ||
| 15303 | w->cursor.hpos++; | ||
| 15304 | w->cursor.x += glyph->pixel_width; | ||
| 15305 | } | ||
| 15316 | } | 15306 | } |
| 15317 | } | 15307 | } |
| 15318 | 15308 | ||
| @@ -15892,13 +15882,13 @@ try_window_id (w) | |||
| 15892 | as is, without changing glyph positions since no text has | 15882 | as is, without changing glyph positions since no text has |
| 15893 | been added/removed in front of the window end. */ | 15883 | been added/removed in front of the window end. */ |
| 15894 | r0 = MATRIX_FIRST_TEXT_ROW (current_matrix); | 15884 | r0 = MATRIX_FIRST_TEXT_ROW (current_matrix); |
| 15895 | if (TEXT_POS_EQUAL_P (start, r0->start.pos) | 15885 | if (TEXT_POS_EQUAL_P (start, r0->minpos) |
| 15896 | /* PT must not be in a partially visible line. */ | 15886 | /* PT must not be in a partially visible line. */ |
| 15897 | && !(PT >= MATRIX_ROW_START_CHARPOS (row) | 15887 | && !(PT >= MATRIX_ROW_START_CHARPOS (row) |
| 15898 | && MATRIX_ROW_BOTTOM_Y (row) > window_text_bottom_y (w))) | 15888 | && MATRIX_ROW_BOTTOM_Y (row) > window_text_bottom_y (w))) |
| 15899 | { | 15889 | { |
| 15900 | /* We have to compute the window end anew since text | 15890 | /* We have to compute the window end anew since text |
| 15901 | can have been added/removed after it. */ | 15891 | could have been added/removed after it. */ |
| 15902 | w->window_end_pos | 15892 | w->window_end_pos |
| 15903 | = make_number (Z - MATRIX_ROW_END_CHARPOS (row)); | 15893 | = make_number (Z - MATRIX_ROW_END_CHARPOS (row)); |
| 15904 | w->window_end_bytepos | 15894 | w->window_end_bytepos |
| @@ -15930,7 +15920,7 @@ try_window_id (w) | |||
| 15930 | start is not in changed text, otherwise positions would not be | 15920 | start is not in changed text, otherwise positions would not be |
| 15931 | comparable. */ | 15921 | comparable. */ |
| 15932 | row = MATRIX_FIRST_TEXT_ROW (current_matrix); | 15922 | row = MATRIX_FIRST_TEXT_ROW (current_matrix); |
| 15933 | if (!TEXT_POS_EQUAL_P (start, row->start.pos)) | 15923 | if (!TEXT_POS_EQUAL_P (start, row->minpos)) |
| 15934 | GIVE_UP (16); | 15924 | GIVE_UP (16); |
| 15935 | 15925 | ||
| 15936 | /* Give up if the window ends in strings. Overlay strings | 15926 | /* Give up if the window ends in strings. Overlay strings |
| @@ -17322,7 +17312,7 @@ cursor_row_p (w, row) | |||
| 17322 | { | 17312 | { |
| 17323 | int cursor_row_p = 1; | 17313 | int cursor_row_p = 1; |
| 17324 | 17314 | ||
| 17325 | if (PT == MATRIX_ROW_END_CHARPOS (row)) | 17315 | if (PT == CHARPOS (row->end.pos)) |
| 17326 | { | 17316 | { |
| 17327 | /* Suppose the row ends on a string. | 17317 | /* Suppose the row ends on a string. |
| 17328 | Unless the row is continued, that means it ends on a newline | 17318 | Unless the row is continued, that means it ends on a newline |
| @@ -17359,14 +17349,15 @@ cursor_row_p (w, row) | |||
| 17359 | { | 17349 | { |
| 17360 | /* If the row ends in middle of a real character, | 17350 | /* If the row ends in middle of a real character, |
| 17361 | and the line is continued, we want the cursor here. | 17351 | and the line is continued, we want the cursor here. |
| 17362 | That's because MATRIX_ROW_END_CHARPOS would equal | 17352 | That's because CHARPOS (ROW->end.pos) would equal |
| 17363 | PT if PT is before the character. */ | 17353 | PT if PT is before the character. */ |
| 17364 | if (!row->ends_in_ellipsis_p) | 17354 | if (!row->ends_in_ellipsis_p) |
| 17365 | cursor_row_p = row->continued_p; | 17355 | cursor_row_p = row->continued_p; |
| 17366 | else | 17356 | else |
| 17367 | /* If the row ends in an ellipsis, then | 17357 | /* If the row ends in an ellipsis, then |
| 17368 | MATRIX_ROW_END_CHARPOS will equal point after the invisible text. | 17358 | CHARPOS (ROW->end.pos) will equal point after the |
| 17369 | We want that position to be displayed after the ellipsis. */ | 17359 | invisible text. We want that position to be displayed |
| 17360 | after the ellipsis. */ | ||
| 17370 | cursor_row_p = 0; | 17361 | cursor_row_p = 0; |
| 17371 | } | 17362 | } |
| 17372 | /* If the row ends at ZV, display the cursor at the end of that | 17363 | /* If the row ends at ZV, display the cursor at the end of that |
| @@ -17502,122 +17493,87 @@ unproduce_glyphs (it, n) | |||
| 17502 | glyph[-n] = *glyph; | 17493 | glyph[-n] = *glyph; |
| 17503 | } | 17494 | } |
| 17504 | 17495 | ||
| 17505 | /* Find the positions in a bidi-reordered ROW to serve as ROW->start | 17496 | /* Find the positions in a bidi-reordered ROW to serve as ROW->minpos |
| 17506 | and ROW->end. */ | 17497 | and ROW->maxpos. */ |
| 17507 | static struct display_pos | 17498 | static void |
| 17508 | find_row_end (it, row) | 17499 | find_row_edges (it, row, min_pos, min_bpos, max_pos, max_bpos) |
| 17509 | struct it *it; | 17500 | struct it *it; |
| 17510 | struct glyph_row *row; | 17501 | struct glyph_row *row; |
| 17502 | EMACS_INT min_pos, min_bpos, max_pos, max_bpos; | ||
| 17511 | { | 17503 | { |
| 17512 | /* FIXME: Revisit this when glyph ``spilling'' in continuation | 17504 | /* FIXME: Revisit this when glyph ``spilling'' in continuation |
| 17513 | lines' rows is implemented for bidi-reordered rows. */ | 17505 | lines' rows is implemented for bidi-reordered rows. */ |
| 17514 | EMACS_INT min_pos = ZV + 1, max_pos = 0; | ||
| 17515 | struct glyph *g; | ||
| 17516 | struct it save_it; | ||
| 17517 | struct text_pos tpos; | ||
| 17518 | struct display_pos row_end = it->current; | ||
| 17519 | |||
| 17520 | for (g = row->glyphs[TEXT_AREA]; | ||
| 17521 | g < row->glyphs[TEXT_AREA] + row->used[TEXT_AREA]; | ||
| 17522 | g++) | ||
| 17523 | { | ||
| 17524 | if (BUFFERP (g->object)) | ||
| 17525 | { | ||
| 17526 | if (g->charpos > 0 && g->charpos < min_pos) | ||
| 17527 | min_pos = g->charpos; | ||
| 17528 | if (g->charpos > max_pos) | ||
| 17529 | max_pos = g->charpos; | ||
| 17530 | } | ||
| 17531 | } | ||
| 17532 | /* Empty lines have a valid buffer position at their first | ||
| 17533 | glyph, but that glyph's OBJECT is zero, as if it didn't come | ||
| 17534 | from a buffer. If we didn't find any valid buffer positions | ||
| 17535 | in this row, maybe we have such an empty line. */ | ||
| 17536 | if (max_pos == 0 && row->used[TEXT_AREA]) | ||
| 17537 | { | ||
| 17538 | for (g = row->glyphs[TEXT_AREA]; | ||
| 17539 | g < row->glyphs[TEXT_AREA] + row->used[TEXT_AREA]; | ||
| 17540 | g++) | ||
| 17541 | { | ||
| 17542 | if (INTEGERP (g->object)) | ||
| 17543 | { | ||
| 17544 | if (g->charpos > 0 && g->charpos < min_pos) | ||
| 17545 | min_pos = g->charpos; | ||
| 17546 | if (g->charpos > max_pos) | ||
| 17547 | max_pos = g->charpos; | ||
| 17548 | } | ||
| 17549 | } | ||
| 17550 | } | ||
| 17551 | 17506 | ||
| 17552 | /* ROW->start is the value of min_pos, the minimal buffer position | 17507 | /* ROW->minpos is the value of min_pos, the minimal buffer position |
| 17553 | we have in ROW. */ | 17508 | we have in ROW. */ |
| 17554 | if (min_pos <= ZV) | 17509 | if (min_pos <= ZV) |
| 17510 | SET_TEXT_POS (row->minpos, min_pos, min_bpos); | ||
| 17511 | else | ||
| 17555 | { | 17512 | { |
| 17556 | /* Avoid calling the costly CHAR_TO_BYTE if possible. */ | 17513 | /* We didn't find _any_ valid buffer positions in any of the |
| 17557 | if (min_pos != row->start.pos.charpos) | 17514 | glyphs, so we must trust the iterator's computed |
| 17558 | SET_TEXT_POS (row->start.pos, min_pos, CHAR_TO_BYTE (min_pos)); | 17515 | positions. */ |
| 17559 | if (max_pos == 0) | 17516 | row->minpos = row->start.pos; |
| 17560 | max_pos = min_pos; | 17517 | max_pos = CHARPOS (it->current.pos); |
| 17518 | max_bpos = BYTEPOS (it->current.pos); | ||
| 17561 | } | 17519 | } |
| 17562 | 17520 | ||
| 17563 | /* For ROW->end, we need the position that is _after_ max_pos, in | 17521 | if (!max_pos) |
| 17564 | the logical order, unless we are at ZV. */ | 17522 | abort (); |
| 17565 | if (row->ends_at_zv_p) | ||
| 17566 | { | ||
| 17567 | if (!row->used[TEXT_AREA]) | ||
| 17568 | row->start.pos = row_end.pos; | ||
| 17569 | } | ||
| 17570 | else if (row->used[TEXT_AREA] && max_pos) | ||
| 17571 | { | ||
| 17572 | int at_eol_p; | ||
| 17573 | 17523 | ||
| 17574 | SET_TEXT_POS (tpos, max_pos, CHAR_TO_BYTE (max_pos)); | 17524 | /* Here are the various use-cases for ending the row, and the |
| 17575 | save_it = *it; | 17525 | corresponding values for ROW->maxpos: |
| 17576 | it->bidi_p = 0; | 17526 | |
| 17577 | reseat (it, tpos, 0); | 17527 | Line ends in a newline from buffer eol_pos + 1 |
| 17578 | if (!get_next_display_element (it)) | 17528 | Line is continued from buffer max_pos + 1 |
| 17579 | abort (); /* this row cannot be at ZV, see above */ | 17529 | Line is truncated on right it->current.pos |
| 17580 | at_eol_p = ITERATOR_AT_END_OF_LINE_P (it); | 17530 | Line ends in a newline from string max_pos |
| 17581 | set_iterator_to_next (it, 1); | 17531 | Line is continued from string max_pos |
| 17582 | row_end = it->current; | 17532 | Line is continued from display vector max_pos |
| 17583 | /* If the character at max_pos is not a newline and the | 17533 | Line is entirely from a string min_pos == max_pos |
| 17584 | characters at max_pos+1 is a newline, skip that newline as | 17534 | Line is entirely from a display vector min_pos == max_pos |
| 17585 | well. Note that this may skip some invisible text. */ | 17535 | Line that ends at ZV ZV |
| 17586 | if (!at_eol_p | 17536 | |
| 17587 | && get_next_display_element (it) | 17537 | If you discover other use-cases, please add them here as |
| 17588 | && ITERATOR_AT_END_OF_LINE_P (it)) | 17538 | appropriate. */ |
| 17589 | { | 17539 | if (row->ends_at_zv_p) |
| 17590 | set_iterator_to_next (it, 1); | 17540 | row->maxpos = it->current.pos; |
| 17591 | /* Record the position after the newline of a continued row. | 17541 | else if (row->used[TEXT_AREA]) |
| 17592 | We will need that to set ROW->end of the last row | 17542 | { |
| 17593 | produced for a continued line. */ | 17543 | if (row->ends_in_newline_from_string_p) |
| 17594 | if (row->continued_p) | 17544 | SET_TEXT_POS (row->maxpos, max_pos, max_bpos); |
| 17595 | save_it.eol_pos = it->current.pos; | 17545 | else if (CHARPOS (it->eol_pos) > 0) |
| 17546 | SET_TEXT_POS (row->maxpos, | ||
| 17547 | CHARPOS (it->eol_pos) + 1, BYTEPOS (it->eol_pos) + 1); | ||
| 17548 | else if (row->continued_p) | ||
| 17549 | { | ||
| 17550 | /* If max_pos is different from IT's current position, it | ||
| 17551 | means IT->method does not belong to the display element | ||
| 17552 | at max_pos. However, it also means that the display | ||
| 17553 | element at max_pos was displayed in its entirety on this | ||
| 17554 | line, which is equivalent to saying that the next line | ||
| 17555 | starts at the next buffer position. */ | ||
| 17556 | if (IT_CHARPOS (*it) == max_pos && it->method != GET_FROM_BUFFER) | ||
| 17557 | SET_TEXT_POS (row->maxpos, max_pos, max_bpos); | ||
| 17596 | else | 17558 | else |
| 17597 | { | 17559 | { |
| 17598 | row_end = it->current; | 17560 | INC_BOTH (max_pos, max_bpos); |
| 17599 | save_it.eol_pos.charpos = save_it.eol_pos.bytepos = 0; | 17561 | SET_TEXT_POS (row->maxpos, max_pos, max_bpos); |
| 17600 | } | 17562 | } |
| 17601 | } | 17563 | } |
| 17602 | else if (!row->continued_p | 17564 | else if (row->truncated_on_right_p) |
| 17603 | && MATRIX_ROW_CONTINUATION_LINE_P (row) | 17565 | /* display_line already called reseat_at_next_visible_line_start, |
| 17604 | && it->eol_pos.charpos > 0) | 17566 | which puts the iterator at the beginning of the next line, in |
| 17605 | { | 17567 | the logical order. */ |
| 17606 | /* Last row of a continued line. Use the position recorded | 17568 | row->maxpos = it->current.pos; |
| 17607 | in IT->eol_pos, to the effect that the newline belongs to | 17569 | else if (max_pos == min_pos && it->method != GET_FROM_BUFFER) |
| 17608 | this row, not to the row which displays the character | 17570 | /* A line that is entirely from a string/image/stretch... */ |
| 17609 | with the largest buffer position before the newline. */ | 17571 | row->maxpos = row->minpos; |
| 17610 | row_end.pos = it->eol_pos; | 17572 | else |
| 17611 | it->eol_pos.charpos = it->eol_pos.bytepos = 0; | 17573 | abort (); |
| 17612 | } | ||
| 17613 | *it = save_it; | ||
| 17614 | /* The members of ROW->end that are not taken from buffer | ||
| 17615 | positions are copied from IT->current. */ | ||
| 17616 | row_end.string_pos = it->current.string_pos; | ||
| 17617 | row_end.overlay_string_index = it->current.overlay_string_index; | ||
| 17618 | row_end.dpvec_index = it->current.dpvec_index; | ||
| 17619 | } | 17574 | } |
| 17620 | return row_end; | 17575 | else |
| 17576 | row->maxpos = it->current.pos; | ||
| 17621 | } | 17577 | } |
| 17622 | 17578 | ||
| 17623 | /* Construct the glyph row IT->glyph_row in the desired matrix of | 17579 | /* Construct the glyph row IT->glyph_row in the desired matrix of |
| @@ -17637,7 +17593,10 @@ display_line (it) | |||
| 17637 | int wrap_row_used = -1, wrap_row_ascent, wrap_row_height; | 17593 | int wrap_row_used = -1, wrap_row_ascent, wrap_row_height; |
| 17638 | int wrap_row_phys_ascent, wrap_row_phys_height; | 17594 | int wrap_row_phys_ascent, wrap_row_phys_height; |
| 17639 | int wrap_row_extra_line_spacing; | 17595 | int wrap_row_extra_line_spacing; |
| 17596 | EMACS_INT wrap_row_min_pos, wrap_row_min_bpos; | ||
| 17597 | EMACS_INT wrap_row_max_pos, wrap_row_max_bpos; | ||
| 17640 | int cvpos; | 17598 | int cvpos; |
| 17599 | EMACS_INT min_pos = ZV + 1, min_bpos, max_pos = 0, max_bpos; | ||
| 17641 | 17600 | ||
| 17642 | /* We always start displaying at hpos zero even if hscrolled. */ | 17601 | /* We always start displaying at hpos zero even if hscrolled. */ |
| 17643 | xassert (it->hpos == 0 && it->current_x == 0); | 17602 | xassert (it->hpos == 0 && it->current_x == 0); |
| @@ -17694,6 +17653,23 @@ display_line (it) | |||
| 17694 | row->phys_height = it->max_phys_ascent + it->max_phys_descent; | 17653 | row->phys_height = it->max_phys_ascent + it->max_phys_descent; |
| 17695 | row->extra_line_spacing = it->max_extra_line_spacing; | 17654 | row->extra_line_spacing = it->max_extra_line_spacing; |
| 17696 | 17655 | ||
| 17656 | /* Utility macro to record max and min buffer positions seen until now. */ | ||
| 17657 | #define RECORD_MAX_MIN_POS(IT) \ | ||
| 17658 | do \ | ||
| 17659 | { \ | ||
| 17660 | if (IT_CHARPOS (*(IT)) < min_pos) \ | ||
| 17661 | { \ | ||
| 17662 | min_pos = IT_CHARPOS (*(IT)); \ | ||
| 17663 | min_bpos = IT_BYTEPOS (*(IT)); \ | ||
| 17664 | } \ | ||
| 17665 | if (IT_CHARPOS (*(IT)) > max_pos) \ | ||
| 17666 | { \ | ||
| 17667 | max_pos = IT_CHARPOS (*(IT)); \ | ||
| 17668 | max_bpos = IT_BYTEPOS (*(IT)); \ | ||
| 17669 | } \ | ||
| 17670 | } \ | ||
| 17671 | while (0) | ||
| 17672 | |||
| 17697 | /* Loop generating characters. The loop is left with IT on the next | 17673 | /* Loop generating characters. The loop is left with IT on the next |
| 17698 | character to display. */ | 17674 | character to display. */ |
| 17699 | while (1) | 17675 | while (1) |
| @@ -17728,7 +17704,8 @@ display_line (it) | |||
| 17728 | row->ends_at_zv_p = 1; | 17704 | row->ends_at_zv_p = 1; |
| 17729 | /* A row that displays right-to-left text must always have | 17705 | /* A row that displays right-to-left text must always have |
| 17730 | its last face extended all the way to the end of line, | 17706 | its last face extended all the way to the end of line, |
| 17731 | even if this row ends in ZV. */ | 17707 | even if this row ends in ZV, because we still write to th |
| 17708 | screen left to right. */ | ||
| 17732 | if (row->reversed_p) | 17709 | if (row->reversed_p) |
| 17733 | extend_face_to_end_of_line (it); | 17710 | extend_face_to_end_of_line (it); |
| 17734 | break; | 17711 | break; |
| @@ -17762,6 +17739,10 @@ display_line (it) | |||
| 17762 | wrap_row_phys_ascent = row->phys_ascent; | 17739 | wrap_row_phys_ascent = row->phys_ascent; |
| 17763 | wrap_row_phys_height = row->phys_height; | 17740 | wrap_row_phys_height = row->phys_height; |
| 17764 | wrap_row_extra_line_spacing = row->extra_line_spacing; | 17741 | wrap_row_extra_line_spacing = row->extra_line_spacing; |
| 17742 | wrap_row_min_pos = min_pos; | ||
| 17743 | wrap_row_min_bpos = min_bpos; | ||
| 17744 | wrap_row_max_pos = max_pos; | ||
| 17745 | wrap_row_max_bpos = max_bpos; | ||
| 17765 | may_wrap = 0; | 17746 | may_wrap = 0; |
| 17766 | } | 17747 | } |
| 17767 | } | 17748 | } |
| @@ -17812,6 +17793,10 @@ display_line (it) | |||
| 17812 | it->max_extra_line_spacing); | 17793 | it->max_extra_line_spacing); |
| 17813 | if (it->current_x - it->pixel_width < it->first_visible_x) | 17794 | if (it->current_x - it->pixel_width < it->first_visible_x) |
| 17814 | row->x = x - it->first_visible_x; | 17795 | row->x = x - it->first_visible_x; |
| 17796 | /* Record the maximum and minimum buffer positions seen so | ||
| 17797 | far in glyphs that will be displayed by this row. */ | ||
| 17798 | if (it->bidi_p) | ||
| 17799 | RECORD_MAX_MIN_POS (it); | ||
| 17815 | } | 17800 | } |
| 17816 | else | 17801 | else |
| 17817 | { | 17802 | { |
| @@ -17845,6 +17830,11 @@ display_line (it) | |||
| 17845 | it->current_x = new_x; | 17830 | it->current_x = new_x; |
| 17846 | it->continuation_lines_width += new_x; | 17831 | it->continuation_lines_width += new_x; |
| 17847 | ++it->hpos; | 17832 | ++it->hpos; |
| 17833 | /* Record the maximum and minimum buffer | ||
| 17834 | positions seen so far in glyphs that will be | ||
| 17835 | displayed by this row. */ | ||
| 17836 | if (it->bidi_p) | ||
| 17837 | RECORD_MAX_MIN_POS (it); | ||
| 17848 | if (i == nglyphs - 1) | 17838 | if (i == nglyphs - 1) |
| 17849 | { | 17839 | { |
| 17850 | /* If line-wrap is on, check if a previous | 17840 | /* If line-wrap is on, check if a previous |
| @@ -17919,6 +17909,10 @@ display_line (it) | |||
| 17919 | row->phys_ascent = wrap_row_phys_ascent; | 17909 | row->phys_ascent = wrap_row_phys_ascent; |
| 17920 | row->phys_height = wrap_row_phys_height; | 17910 | row->phys_height = wrap_row_phys_height; |
| 17921 | row->extra_line_spacing = wrap_row_extra_line_spacing; | 17911 | row->extra_line_spacing = wrap_row_extra_line_spacing; |
| 17912 | min_pos = wrap_row_min_pos; | ||
| 17913 | min_bpos = wrap_row_min_bpos; | ||
| 17914 | max_pos = wrap_row_max_pos; | ||
| 17915 | max_bpos = wrap_row_max_bpos; | ||
| 17922 | row->continued_p = 1; | 17916 | row->continued_p = 1; |
| 17923 | row->ends_at_zv_p = 0; | 17917 | row->ends_at_zv_p = 0; |
| 17924 | row->exact_window_width_line_p = 0; | 17918 | row->exact_window_width_line_p = 0; |
| @@ -17981,6 +17975,12 @@ display_line (it) | |||
| 17981 | /* Increment number of glyphs actually displayed. */ | 17975 | /* Increment number of glyphs actually displayed. */ |
| 17982 | ++it->hpos; | 17976 | ++it->hpos; |
| 17983 | 17977 | ||
| 17978 | /* Record the maximum and minimum buffer positions | ||
| 17979 | seen so far in glyphs that will be displayed by | ||
| 17980 | this row. */ | ||
| 17981 | if (it->bidi_p) | ||
| 17982 | RECORD_MAX_MIN_POS (it); | ||
| 17983 | |||
| 17984 | if (x < it->first_visible_x) | 17984 | if (x < it->first_visible_x) |
| 17985 | /* Glyph is partially visible, i.e. row starts at | 17985 | /* Glyph is partially visible, i.e. row starts at |
| 17986 | negative X position. */ | 17986 | negative X position. */ |
| @@ -18032,6 +18032,10 @@ display_line (it) | |||
| 18032 | if (used_before == 0) | 18032 | if (used_before == 0) |
| 18033 | row->glyphs[TEXT_AREA]->charpos = CHARPOS (it->position); | 18033 | row->glyphs[TEXT_AREA]->charpos = CHARPOS (it->position); |
| 18034 | 18034 | ||
| 18035 | /* Record the position of the newline, for use in | ||
| 18036 | find_row_edges. */ | ||
| 18037 | it->eol_pos = it->current.pos; | ||
| 18038 | |||
| 18035 | /* Consume the line end. This skips over invisible lines. */ | 18039 | /* Consume the line end. This skips over invisible lines. */ |
| 18036 | set_iterator_to_next (it, 1); | 18040 | set_iterator_to_next (it, 1); |
| 18037 | it->continuation_lines_width = 0; | 18041 | it->continuation_lines_width = 0; |
| @@ -18111,7 +18115,7 @@ display_line (it) | |||
| 18111 | /* If line is not empty and hscrolled, maybe insert truncation glyphs | 18115 | /* If line is not empty and hscrolled, maybe insert truncation glyphs |
| 18112 | at the left window margin. */ | 18116 | at the left window margin. */ |
| 18113 | if (it->first_visible_x | 18117 | if (it->first_visible_x |
| 18114 | && IT_CHARPOS (*it) != MATRIX_ROW_START_CHARPOS (row)) | 18118 | && IT_CHARPOS (*it) != CHARPOS (row->start.pos)) |
| 18115 | { | 18119 | { |
| 18116 | if (!FRAME_WINDOW_P (it->f)) | 18120 | if (!FRAME_WINDOW_P (it->f)) |
| 18117 | insert_left_trunc_glyphs (it); | 18121 | insert_left_trunc_glyphs (it); |
| @@ -18165,12 +18169,19 @@ display_line (it) | |||
| 18165 | 18169 | ||
| 18166 | /* Remember the position at which this line ends. */ | 18170 | /* Remember the position at which this line ends. */ |
| 18167 | row->end = it->current; | 18171 | row->end = it->current; |
| 18168 | /* ROW->start and ROW->end must be the smallest and the largest | 18172 | if (!it->bidi_p) |
| 18169 | buffer positions in ROW. But if ROW was bidi-reordered, these | 18173 | { |
| 18170 | two positions can be anywhere in the row, so we must rescan all | 18174 | row->minpos = row->start.pos; |
| 18171 | of the ROW's glyphs to find them. */ | 18175 | row->maxpos = row->end.pos; |
| 18172 | if (it->bidi_p) | 18176 | } |
| 18173 | row->end = find_row_end (it, row); | 18177 | else |
| 18178 | { | ||
| 18179 | /* ROW->minpos and ROW->maxpos must be the smallest and | ||
| 18180 | `1 + the largest' buffer positions in ROW. But if ROW was | ||
| 18181 | bidi-reordered, these two positions can be anywhere in the | ||
| 18182 | row, so we must determine them now. */ | ||
| 18183 | find_row_edges (it, row, min_pos, min_bpos, max_pos, max_bpos); | ||
| 18184 | } | ||
| 18174 | 18185 | ||
| 18175 | /* Record whether this row ends inside an ellipsis. */ | 18186 | /* Record whether this row ends inside an ellipsis. */ |
| 18176 | row->ends_in_ellipsis_p | 18187 | row->ends_in_ellipsis_p |
| @@ -18216,6 +18227,7 @@ display_line (it) | |||
| 18216 | row to be used. */ | 18227 | row to be used. */ |
| 18217 | it->current_x = it->hpos = 0; | 18228 | it->current_x = it->hpos = 0; |
| 18218 | it->current_y += row->height; | 18229 | it->current_y += row->height; |
| 18230 | SET_TEXT_POS (it->eol_pos, 0, 0); | ||
| 18219 | ++it->vpos; | 18231 | ++it->vpos; |
| 18220 | ++it->glyph_row; | 18232 | ++it->glyph_row; |
| 18221 | /* The next row should by default use the same value of the | 18233 | /* The next row should by default use the same value of the |
| @@ -18226,6 +18238,8 @@ display_line (it) | |||
| 18226 | it->glyph_row->reversed_p = row->reversed_p; | 18238 | it->glyph_row->reversed_p = row->reversed_p; |
| 18227 | it->start = row->end; | 18239 | it->start = row->end; |
| 18228 | return row->displays_text_p; | 18240 | return row->displays_text_p; |
| 18241 | |||
| 18242 | #undef RECORD_MAX_MIN_POS | ||
| 18229 | } | 18243 | } |
| 18230 | 18244 | ||
| 18231 | DEFUN ("current-bidi-paragraph-direction", Fcurrent_bidi_paragraph_direction, | 18245 | DEFUN ("current-bidi-paragraph-direction", Fcurrent_bidi_paragraph_direction, |