# HG changeset patch # User Karoly Lorentey # Date 1141513633 0 # Node ID a380ca43a1908a5a156f6c78ff6413e8f2b1ce07 # Parent 8976b9f5eda14c3fb40fda4b1888ae5d24c76fa1# Parent b52e0cc8af61a2c64ffadbb6150601bfa46216ed Merged from emacs@sv.gnu.org Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-128 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-129 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-130 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-131 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-132 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-133 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-134 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-135 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-43 Munge arch explicit ids in etc/images to match Emacs * emacs@sv.gnu.org/gnus--rel--5.10--patch-44 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-45 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-46 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-47 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-48 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-524 diff -r 8976b9f5eda1 -r a380ca43a190 ChangeLog --- a/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,12 @@ +2006-03-03 Claudio Fontana + + * Makefile.in (install, uninstall): Add DESTDIR variable to + support staged installations. + +2006-02-14 Eli Zaretskii + + * configure: Regenerated. + 2006-02-14 Richard M. Stallman * configure.in (s390x-*-linux-gnu*): New configuration. diff -r 8976b9f5eda1 -r a380ca43a190 Makefile.in --- a/Makefile.in Tue Feb 28 17:35:08 2006 +0000 +++ b/Makefile.in Sat Mar 04 23:07:13 2006 +0000 @@ -250,7 +250,7 @@ # avoid nuking an existing dir file, so we don't do that here; # instead, we have written out explicit code in the `install' targets. COPYDIR = ${srcdir}/etc ${srcdir}/lisp -COPYDESTS = ${etcdir} ${lispdir} +COPYDESTS = $(DESTDIR)${etcdir} $(DESTDIR)${lispdir} all: ${SUBDIR} leim @@ -375,20 +375,20 @@ exec_prefix=${exec_prefix} bindir=${bindir} \ libexecdir=${libexecdir} archlibdir=${archlibdir} \ INSTALL_STRIP=${INSTALL_STRIP}) - ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} ${bindir}/$(EMACSFULL) - -chmod 1755 ${bindir}/$(EMACSFULL) - rm -f ${bindir}/$(EMACS) - -ln ${bindir}/$(EMACSFULL) ${bindir}/$(EMACS) + ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} $(DESTDIR)${bindir}/$(EMACSFULL) + -chmod 1755 $(DESTDIR)${bindir}/$(EMACSFULL) + rm -f $(DESTDIR)${bindir}/$(EMACS) + -ln $(DESTDIR)${bindir}/$(EMACSFULL) $(DESTDIR)${bindir}/$(EMACS) -unset CDPATH; \ for f in `cd lib-src && echo fns-*.el`; do \ if test -r lib-src/$$f ; then \ - ${INSTALL_DATA} lib-src/$$f ${archlibdir}/$$f; \ + ${INSTALL_DATA} lib-src/$$f $(DESTDIR)${archlibdir}/$$f; \ else true; fi ; \ done if test "${carbon_appdir}" != ""; then \ - umask 022; mkdir -p ${carbon_appdir}/Emacs.app; \ + umask 022; mkdir -p $(DESTDIR)${carbon_appdir}/Emacs.app; \ (cd mac/Emacs.app; (tar -chf - . | \ - (cd ${carbon_appdir}/Emacs.app; umask 022; tar -xvf - \ + (cd $(DESTDIR)${carbon_appdir}/Emacs.app; umask 022; tar -xvf - \ && cat > /dev/null))) || exit 1; \ fi @@ -439,86 +439,86 @@ rm -f $${subdir}/dired.todo ; \ done) ; \ done - -rm -f ${lispdir}/subdirs.el - $(srcdir)/update-subdirs ${lispdir} - if [ -f ${datadir}/emacs/${version}/site-lisp/subdirs.el ]; \ + -rm -f $(DESTDIR)${lispdir}/subdirs.el + $(srcdir)/update-subdirs $(DESTDIR)${lispdir} + if [ -f $(DESTDIR)${datadir}/emacs/${version}/site-lisp/subdirs.el ]; \ then true; \ else \ (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \ echo " (normal-top-level-add-subdirs-to-load-path))") \ - > ${datadir}/emacs/${version}/site-lisp/subdirs.el; \ + > $(DESTDIR)${datadir}/emacs/${version}/site-lisp/subdirs.el; \ fi - chmod a+r ${datadir}/emacs/${version}/site-lisp/subdirs.el - -if [ -f ${datadir}/emacs/site-lisp/subdirs.el ]; \ + chmod a+r $(DESTDIR)${datadir}/emacs/${version}/site-lisp/subdirs.el + -if [ -f $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el ]; \ then true; \ else \ (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \ echo " (normal-top-level-add-subdirs-to-load-path))") \ - > ${datadir}/emacs/site-lisp/subdirs.el; \ + > $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el; \ fi - -chmod a+r ${datadir}/emacs/site-lisp/subdirs.el + -chmod a+r $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el -unset CDPATH; \ - if [ `(cd ./etc; /bin/pwd)` != `(cd ${docdir}; /bin/pwd)` ]; \ + if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \ then \ - echo "Copying etc/DOC-* to ${docdir} ..." ; \ + echo "Copying etc/DOC-* to $(DESTDIR)${docdir} ..." ; \ (cd ./etc; tar -chf - DOC*) \ - |(cd ${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \ - (cd $(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \ + |(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \ + (cd $(DESTDIR)$(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \ if test "`echo DOC-*`" != "DOC-*"; then rm DOC; fi); \ else true; fi -unset CDPATH; \ if [ -r ./lisp ] \ && [ -r ./lisp/simple.el ] \ - && [ x`(cd ./lisp; /bin/pwd)` != x`(cd ${lispdir}; /bin/pwd)` ] \ + && [ x`(cd ./lisp; /bin/pwd)` != x`(cd $(DESTDIR)${lispdir}; /bin/pwd)` ] \ && [ x`(cd ${srcdir}/lisp; /bin/pwd)` != x`(cd ./lisp; /bin/pwd)` ]; \ then \ - echo "Copying lisp/*.el and lisp/*.elc to ${lispdir} ..." ; \ + echo "Copying lisp/*.el and lisp/*.elc to $(DESTDIR)${lispdir} ..." ; \ (cd lisp; tar -chf - *.el *.elc) \ - |(cd ${lispdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \ - (cd ${lispdir}; find . -exec chown $${LOGNAME:-$$USERNAME} {} ';') ; \ + |(cd $(DESTDIR)${lispdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \ + (cd $(DESTDIR)${lispdir}; find . -exec chown $${LOGNAME:-$$USERNAME} {} ';') ; \ else true; fi -unset CDPATH; \ if [ -n "${GZIP_PROG}" ]; \ then \ echo "Compressing *.el ..." ; \ - (cd ${lispdir}; for f in `find . -name "*.elc" -print`; do \ + (cd $(DESTDIR)${lispdir}; for f in `find . -name "*.elc" -print`; do \ ${GZIP_PROG} -9n `echo $$f|sed 's/.elc$$/.el/'` ; \ done) \ else true; fi -unset CDPATH; \ thisdir=`/bin/pwd`; \ - if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \ + if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \ then \ - (cd ${infodir}; \ + (cd $(DESTDIR)${infodir}; \ if [ -f dir ]; then true; \ else \ (cd $${thisdir}; \ - ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir; \ - chmod a+r ${infodir}/dir); \ + ${INSTALL_DATA} ${srcdir}/info/dir $(DESTDIR)${infodir}/dir; \ + chmod a+r $(DESTDIR)${infodir}/dir); \ fi; \ cd ${srcdir}/info ; \ for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* newsticker* org* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail* url* rcirc* erc*; do \ (cd $${thisdir}; \ - ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \ - chmod a+r ${infodir}/$$f); \ + ${INSTALL_DATA} ${srcdir}/info/$$f $(DESTDIR)${infodir}/$$f; \ + chmod a+r $(DESTDIR)${infodir}/$$f); \ done); \ else true; fi -unset CDPATH; \ thisdir=`/bin/pwd`; \ - if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \ + if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \ then \ for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e newsticker org pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail url rcirc erc; do \ (cd $${thisdir}; \ - ${INSTALL_INFO} --info-dir=${infodir} ${infodir}/$$f); \ + ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$f); \ done; \ else true; fi - -chmod -R a+r ${datadir}/emacs ${COPYDESTS} ${infodir} + -chmod -R a+r $(DESTDIR)${datadir}/emacs ${COPYDESTS} $(DESTDIR)${infodir} thisdir=`/bin/pwd`; \ cd ${srcdir}/etc; \ for page in emacs emacsclient etags ctags ; do \ (cd $${thisdir}; \ - ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${man1dir}/$${page}${manext}; \ - chmod a+r ${man1dir}/$${page}${manext}); \ + ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 $(DESTDIR)${man1dir}/$${page}${manext}; \ + chmod a+r $(DESTDIR)${man1dir}/$${page}${manext}); \ done ### Install LEIM files. Although they are machine-independent, we @@ -537,15 +537,15 @@ ### /usr/local/lib/emacs/19.0/mips-dec-ultrix4.2), we use mkinstalldirs ### instead of mkdir. Not all systems' mkdir programs have the `-p' flag. mkdir: FRC - if [ -d ${datadir} ]; then true; else \ - $(srcdir)/mkinstalldirs ${datadir}; \ - chmod a+r ${datadir};\ + if [ -d $(DESTDIR)${datadir} ]; then true; else \ + $(srcdir)/mkinstalldirs $(DESTDIR)${datadir}; \ + chmod a+r $(DESTDIR)${datadir};\ fi - $(srcdir)/mkinstalldirs ${COPYDESTS} ${infodir} ${man1dir} \ - ${bindir} ${docdir} ${libexecdir} \ - ${datadir}/emacs/site-lisp \ - ${datadir}/emacs/${version}/site-lisp \ - `echo ${locallisppath} | sed 's/:/ /g'` + $(srcdir)/mkinstalldirs ${COPYDESTS} $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \ + $(DESTDIR)${bindir} $(DESTDIR)${docdir} $(DESTDIR)${libexecdir} \ + $(DESTDIR)${datadir}/emacs/site-lisp \ + $(DESTDIR)${datadir}/emacs/${version}/site-lisp \ + $(DESTDIR)`echo ${locallisppath} | sed 's,:, $(DESTDIR),g'` ### Delete all the installed files that the `install' target would ### create (but not the noninstalled files such as `make all' would @@ -558,24 +558,24 @@ prefix=${prefix} exec_prefix=${exec_prefix} \ bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir}) -unset CDPATH; \ - for dir in ${lispdir} ${etcdir} ; do \ + for dir in $(DESTDIR)${lispdir} $(DESTDIR)${etcdir} ; do \ if [ -d $${dir} ]; then \ case `(cd $${dir} ; /bin/pwd)` in \ `(cd ${srcdir} ; /bin/pwd)`* ) ;; \ * ) rm -rf $${dir} ;; \ esac ; \ case $${dir} in \ - ${datadir}/emacs/${version}/* ) \ - rm -rf ${datadir}/emacs/${version} \ + $(DESTDIR)${datadir}/emacs/${version}/* ) \ + rm -rf $(DESTDIR)${datadir}/emacs/${version} \ ;; \ esac ; \ fi ; \ done - (cd ${archlibdir} && rm -f fns-*) - -rm -rf ${libexecdir}/emacs/${version} - (cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* newsticker* org* sc* ses* vip* smtpmail* url* rcirc* erc*) - (cd ${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext}) - (cd ${bindir} && rm -f $(EMACSFULL) $(EMACS)) + (cd $(DESTDIR)${archlibdir} && rm -f fns-*) + -rm -rf $(DESTDIR)${libexecdir}/emacs/${version} + (cd $(DESTDIR)${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* newsticker* org* sc* ses* vip* smtpmail* url* rcirc* erc*) + (cd $(DESTDIR)${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext}) + (cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS)) FRC: diff -r 8976b9f5eda1 -r a380ca43a190 admin/FOR-RELEASE --- a/admin/FOR-RELEASE Tue Feb 28 17:35:08 2006 +0000 +++ b/admin/FOR-RELEASE Sat Mar 04 23:07:13 2006 +0000 @@ -36,9 +36,6 @@ ** Reiner Steib's 23 Jan 2006 bug report that tool bar icons don't update. URL/MID: http://mid.gmane.org/v9acdmrcse.fsf@marauder.physik.uni-ulm.de -** Ralf Angeli's 4 Jul 2005 bug report about scroll-preserve-screen-position. -URL/MID: http://mid.gmane.org/877jg6o7k4.fsf@neutrino.iwi.uni-sb.de - ** Problems with moving point across invisible text, including Ralf Angeli's 21 Feb bug report and Martin Rudalics' 14 Feb bug report "Re: moving point and invisible text" diff -r 8976b9f5eda1 -r a380ca43a190 configure --- a/configure Tue Feb 28 17:35:08 2006 +0000 +++ b/configure Sat Mar 04 23:07:13 2006 +0000 @@ -2136,6 +2136,9 @@ s390-*-linux-gnu* ) machine=ibms390 opsys=gnu-linux ;; + s390x-*-linux-gnu* ) + machine=ibms390x opsys=gnu-linux + ;; rs6000-ibm-aix3.1* | powerpc-ibm-aix3.1* ) machine=ibmrs6000 opsys=aix3-1 ;; diff -r 8976b9f5eda1 -r a380ca43a190 etc/orgcard.tex --- a/etc/orgcard.tex Tue Feb 28 17:35:08 2006 +0000 +++ b/etc/orgcard.tex Sat Mar 04 23:07:13 2006 +0000 @@ -1,4 +1,4 @@ -% Reference Card for Org Mode 4.06 +% Reference Card for Org Mode 4.07 % %**start of header \newcount\columnsperpage @@ -58,7 +58,7 @@ % Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik % for their many good ideas. -\def\orgversionnumber{4.06} +\def\orgversionnumber{4.07} \def\year{2006} \def\shortcopyrightnotice{\vskip 1ex plus 2 fill diff -r 8976b9f5eda1 -r a380ca43a190 leim/ChangeLog --- a/leim/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/leim/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,8 @@ +2006-03-03 Claudio Fontana + + * Makefile.in (install): Add DESTDIR variable to support staged + installations. + 2005-12-17 Eli Zaretskii * makefile.w32-in ($(TIT), leim-list.el): Warn that parts of diff -r 8976b9f5eda1 -r a380ca43a190 leim/Makefile.in --- a/leim/Makefile.in Tue Feb 28 17:35:08 2006 +0000 +++ b/leim/Makefile.in Sat Mar 04 23:07:13 2006 +0000 @@ -33,7 +33,7 @@ srcdir=@srcdir@ # Where to install LEIM files. -INSTALLDIR=${datadir}/emacs/${version}/leim +INSTALLDIR=$(DESTDIR)${datadir}/emacs/${version}/leim GZIP_PROG = @GZIP_PROG@ diff -r 8976b9f5eda1 -r a380ca43a190 lib-src/ChangeLog --- a/lib-src/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/lib-src/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,8 @@ +2006-02-23 Claudio Fontana + + * Makefile.in (install, uninstall): Add DESTDIR variable to + support staged installations. + 2005-12-30 Eli Zaretskii * makefile.w32-in (MOUSE_SUPPORT): Add tooltip.elc. diff -r 8976b9f5eda1 -r a380ca43a190 lib-src/Makefile.in --- a/lib-src/Makefile.in Tue Feb 28 17:35:08 2006 +0000 +++ b/lib-src/Makefile.in Sat Mar 04 23:07:13 2006 +0000 @@ -285,11 +285,11 @@ maybe-blessmail: BLESSMAIL #ifdef MOVEMAIL_NEEDS_BLESSING /* Don\'t charge ahead and do it! Let the installer decide. - ./blessmail ${archlibdir}/movemail${EXEEXT} */ + ./blessmail $(DESTDIR)${archlibdir}/movemail${EXEEXT} */ @if [ `wc -l + + textmodes/flyspell.el (flyspell-process-localwords): Be + case-sensitive. + +2006-03-03 Martin Rudalics + + * cus-edit.el (custom-quote): Remove function, since it has been + moved to custom.el. + + * font-lock.el (lisp-font-lock-keywords-2) + * emacs-lisp/rx.el (rx-check-any, rx-check-not) + * generic-x.el (reg-generic-mode): Quote "]"s in regexps when + they have no special meaning. + + * midnight.el (clean-buffer-list): Handle case where base-buffer of + indirect buffer gets killed before indirect buffer. Use dolist. + +2006-03-03 Ken Manheimer + + * emacs-lisp/edebug.el (edebug-display): Use `edebug-sit-for-seconds' + value instead of a literal constant (1) on more pauses. + +2006-03-03 Slawomir Nowaczyk (tiny change) + + * textmodes/flyspell.el (flyspell-external-point-words): Be + case-sensitive. + +2006-03-03 Ryan Yeske + + * net/rcirc.el (rcirc-url-regexp): Match entire url when it starts + with "www". + +2006-03-03 Ken Manheimer + + allout.el: Restablished intermediate missing comment header to + preserve outline structure. + (allout-beginning-of-current-entry): Wasn't skipping invisible + text - fixed. + (allout-open-topic): Was failing when opening a topic at + end-of-buffer - fixed. + (allout-minor-mode): Moved nearer to allout-mode function. + +2006-03-02 Carsten Dominik + + * textmodes/org.el (org-paste-subtree): Removed forgotten (debug) + form. + +2006-03-02 Nick Roberts + + * dframe.el (dframe-frame-mode): Don't burp when menu-bar-lines + is nil. + + * progmodes/gud.el (gud-speedbar-menu-items): Use + buffer-local-value and add missing :visible keyword. + + * progmodes/gdb-ui.el (gdb-speedbar-refresh): Quieten + speedbar-refresh. + +2006-03-01 Carsten Dominik + + * textmodes/reftex-index.el (reftex-index-map): `follow-mouse' + must be `follow-link'. + + * textmodes/reftex-toc.el (reftex-toc-map): `follow-mouse' must be + `follow-link'. + + * textmodes/org.el (org-export-as-html): Fix bugs in HTML + formatting: No nested anchors. + (org-all-targets): Fix bug with XEmacs compatibility. + (org-read-date): Add (require 'parse-time). + (org-set-tags): Fix bug with extra inserted space. + (org-export-html-style): Define a style class for targets. + (org-agenda-keymap, org-mouse-map): Add a binding for + `follow-link'. + (org-hide-leading-stars): New option. + (org-hide): New face. + (org-set-font-lock-defaults): Allow to hide leading stars. + (org-get-legal-level, org-tr-level): New functions. + (org-odd-levels-only): New option. + (org-level-faces, org-paste-subtree, org-convert-to-odd-levels) + (org-demote, org-promote): Deal with double-star levels. + (org-convert-to-odd-levels): New command. + +2006-03-01 Nick Roberts + + * speedbar.el (speedbar-update-localized-contents): Try to + preserve window-start. + (speedbar-update-directory-contents): Try to preserve window-start + and window-point. + (speedbar-update-special-contents): Don't move back to start of + window. + + * progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from + gdb-speedbar-timer-fn. Use speedbar-refresh instead of + speedbar-timer-fn + (gdb-var-update-handler, gdb-var-update-handler-1): Use it. + (gdb-speedbar-expand-node): Use speedbar-delete-subblock + instead of gdb-speedbar-timer-fn. + +2006-02-28 Jay Belanger + + * calc/calccomp.el (math-compose-tex-matrix): Add a latex option. + (math-compose-expr): Use latex option when calling + `math-compose-tex-matrix' for latex mode. + 2006-02-28 Nick Roberts * speedbar.el: Re-instate comments about developing for speedbar @@ -21,7 +127,7 @@ 2006-02-27 Nick Roberts - * progmodes/gdb-ui.el: (gdb-source-window): New variable. + * progmodes/gdb-ui.el (gdb-source-window): New variable. Re-introduce the concept of a source window. (gdb-get-buffer-create): Rename from gdb-get-create-buffer for consistency with get-buffer-create. @@ -43,8 +149,8 @@ * textmodes/reftex-toc.el (reftex-toc-map): Add `follow-mouse' binding. - * textmodes/reftex-sel.el (reftex-select-label-map, - reftex-select-bib-map): Add `follow-mouse' binding. + * textmodes/reftex-sel.el (reftex-select-label-map) + (reftex-select-bib-map): Add `follow-mouse' binding. 2006-02-26 Luc Teirlinck @@ -103,7 +209,7 @@ 2006-02-24 Alan Mackenzie - * progmodes/cc-mode.el (c-postprocess-file-styles): bind + * progmodes/cc-mode.el (c-postprocess-file-styles): Bind inhibit-read-only to t, around the call to c-remove-any-local-eval-or-mode-variables, so that it works on a RO file. @@ -136,8 +242,8 @@ * progmodes/cc-mode.el: File Local variables: Solve the problem where both `mode' and c-file-offsets are specified: `mode' will overwrite c-f-o's settings: - (c-remove-any-local-eval-or-mode-variables): new function. - (c-postprocess-file-styles): call the above new function, within + (c-remove-any-local-eval-or-mode-variables): New function. + (c-postprocess-file-styles): Call the above new function, within c-tentative-buffer-change, to splat `mode' and `eval' before the second hack-local-variables. @@ -176,15 +282,15 @@ Sometimes, c-s-i got separated from the mode name on the mode line. - * progmodes/cc-cmds.el (c-electric-brace, c-electric-semi&comma, - c-electric-colon): Correct doc-strings: "/ln" -> "/la". + * progmodes/cc-cmds.el (c-electric-brace, c-electric-semi&comma) + (c-electric-colon): Correct doc-strings: "/ln" -> "/la". 2006-02-24 Martin Stjernholm - * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Improved the + * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Improve the error message when there's an evaluation error to show whether it's loaded from source or not. - (c-filter-ops): Made it available at runtime too to work when + (c-filter-ops): Make it available at runtime too to work when `c-make-init-lang-vars-fun' needs to evaluate from source. 2006-02-24 Juanma Barranquero @@ -269,7 +375,7 @@ fail silently when there is no valid argument at point. (reftex-view-crossref-when-idle): Call `reftex-view-crossref' with `fail-silently' argument. From a patch by David Reiter. - + * textmodes/org.el (org-mark-ring-push, org-mark-ring-goto): New commands. (org-mark-ring): New variable. diff -r 8976b9f5eda1 -r a380ca43a190 lisp/allout.el --- a/lisp/allout.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/allout.el Sat Mar 04 23:07:13 2006 +0000 @@ -1605,6 +1605,8 @@ allout-mode ) ; let* ) ; defun +;;;_ > allout-minor-mode +(defalias 'allout-minor-mode 'allout-mode) ;;;_ - Position Assessment ;;;_ > allout-hidden-p (&optional pos) @@ -1612,9 +1614,6 @@ "Non-nil if the character after point is invisible." (get-char-property (or pos (point)) 'invisible)) -;;;_ > allout-minor-mode -(defalias 'allout-minor-mode 'allout-mode) - ;;;_ > allout-overlay-insert-in-front-handler (ol after beg end ;;; &optional prelen) (defun allout-overlay-insert-in-front-handler (ol after beg end @@ -1753,6 +1752,7 @@ ;;;_ #4 Navigation +;;;_ - Position Assessment ;;;_ : Location Predicates ;;;_ > allout-on-current-heading-p () (defun allout-on-current-heading-p () @@ -2236,9 +2236,10 @@ "When not already there, position point at beginning of current topic header. If already there, move cursor to bullet for hot-spot operation. -\(See `allout-mode' doc string for details on hot-spot operation.)" +\(See `allout-mode' doc string for details of hot-spot operation.)" (interactive) (let ((start-point (point))) + (move-beginning-of-line 1) (allout-end-of-prefix) (if (and (interactive-p) (= (point) start-point)) @@ -2927,7 +2928,9 @@ ;; Going inwards - double-space if first offspring is ;; double-spaced, otherwise snug up. (allout-end-of-entry) - (line-move 1) + (if (eobp) + (newline 1) + (line-move 1)) (allout-beginning-of-current-line) (backward-char 1) (if (bolp) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/calc/calccomp.el --- a/lisp/calc/calccomp.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/calc/calccomp.el Sat Mar 04 23:07:13 2006 +0000 @@ -286,10 +286,10 @@ (> calc-language-option 1) (< calc-language-option -1))) (append '(vleft 0 "\\begin{pmatrix}") - (math-compose-tex-matrix (cdr a)) + (math-compose-tex-matrix (cdr a) t) '("\\end{pmatrix}")) (append '(horiz "\\begin{pmatrix} ") - (math-compose-tex-matrix (cdr a)) + (math-compose-tex-matrix (cdr a) t) '(" \\end{pmatrix}"))) (if (and (eq calc-language 'eqn) (math-matrixp a)) @@ -1015,10 +1015,11 @@ (math-compose-expr (car a) math-comp-vector-prec) (concat " " math-comp-right-bracket))))) -(defun math-compose-tex-matrix (a) +(defun math-compose-tex-matrix (a &optional ltx) (if (cdr a) - (cons (append (math-compose-vector (cdr (car a)) " & " 0) '(" \\\\ ")) - (math-compose-tex-matrix (cdr a))) + (cons (append (math-compose-vector (cdr (car a)) " & " 0) + (if ltx '(" \\\\ ") '(" \\cr "))) + (math-compose-tex-matrix (cdr a) ltx)) (list (math-compose-vector (cdr (car a)) " & " 0)))) (defun math-compose-eqn-matrix (a) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/cus-edit.el --- a/lisp/cus-edit.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/cus-edit.el Sat Mar 04 23:07:13 2006 +0000 @@ -468,21 +468,6 @@ ;;; Utilities. -(defun custom-quote (sexp) - "Quote SEXP iff it is not self quoting." - (if (or (memq sexp '(t nil)) - (keywordp sexp) - (and (listp sexp) - (memq (car sexp) '(lambda))) - (stringp sexp) - (numberp sexp) - (vectorp sexp) -;;; (and (fboundp 'characterp) -;;; (characterp sexp)) - ) - sexp - (list 'quote sexp))) - (defun custom-split-regexp-maybe (regexp) "If REGEXP is a string, split it to a list at `\\|'. You can get the original back with from the result with: diff -r 8976b9f5eda1 -r a380ca43a190 lisp/dframe.el --- a/lisp/dframe.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/dframe.el Sat Mar 04 23:07:13 2006 +0000 @@ -422,7 +422,7 @@ parameters (append parameters - (list (cons 'height (+ mh (frame-height))))))) + (list (cons 'height (+ (or mh 0) (frame-height))))))) (params ;; Only add a guessed width if one is not specified ;; in the input parameters. diff -r 8976b9f5eda1 -r a380ca43a190 lisp/emacs-lisp/edebug.el --- a/lisp/emacs-lisp/edebug.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/emacs-lisp/edebug.el Sat Mar 04 23:07:13 2006 +0000 @@ -2660,13 +2660,14 @@ ;; Display result of previous evaluation. (if (and edebug-break (not (eq edebug-execution-mode 'Continue-fast))) - (sit-for 1)) ; Show break message. + (edebug-sit-for edebug-sit-for-seconds)) ; Show message. (edebug-previous-result))) (cond (edebug-break (cond - ((eq edebug-execution-mode 'continue) (edebug-sit-for 1)) + ((eq edebug-execution-mode 'continue) + (edebug-sit-for edebug-sit-for-seconds)) ((eq edebug-execution-mode 'Continue-fast) (edebug-sit-for 0)) (t (setq edebug-stop t)))) ;; not edebug-break diff -r 8976b9f5eda1 -r a380ca43a190 lisp/emacs-lisp/rx.el --- a/lisp/emacs-lisp/rx.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/emacs-lisp/rx.el Sat Mar 04 23:07:13 2006 +0000 @@ -372,8 +372,8 @@ (if (eq ?^ (aref arg 0)) (setq arg (concat "\\" arg))) ;; Remove ] and set flag for adding it to start of overall result. - (when (string-match "]" arg) - (setq arg (replace-regexp-in-string "]" "" arg) + (when (string-match "\\]" arg) + (setq arg (replace-regexp-in-string "\\]" "" arg) rx-bracket "]"))) (when (symbolp arg) (let ((translation (condition-case nil @@ -405,7 +405,7 @@ (defun rx-check-not (arg) "Check arg ARG for Rx `not'." (unless (or (and (symbolp arg) - (string-match "\\`\\[\\[:[-a-z]:]]\\'" + (string-match "\\`\\[\\[:[-a-z]:\\]\\]\\'" (condition-case nil (rx-to-string arg 'no-group) (error "")))) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/font-lock.el --- a/lisp/font-lock.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/font-lock.el Sat Mar 04 23:07:13 2006 +0000 @@ -2120,7 +2120,7 @@ ;; Erroneous structures. ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face) ;; Words inside \\[] tend to be for `substitute-command-keys'. - ("\\\\\\\\\\[\\(\\sw+\\)]" 1 font-lock-constant-face prepend) + ("\\\\\\\\\\[\\(\\sw+\\)\\]" 1 font-lock-constant-face prepend) ;; Words inside `' tend to be symbol names. ("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend) ;; Constant values. diff -r 8976b9f5eda1 -r a380ca43a190 lisp/generic-x.el --- a/lisp/generic-x.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/generic-x.el Sat Mar 04 23:07:13 2006 +0000 @@ -433,7 +433,7 @@ (define-generic-mode reg-generic-mode '(?\;) '("key" "classes_root" "REGEDIT" "REGEDIT4") - '(("\\(\\[.*]\\)" 1 font-lock-constant-face) + '(("\\(\\[.*\\]\\)" 1 font-lock-constant-face) ("^\\([^\n\r]*\\)\\s-*=" 1 font-lock-variable-name-face)) '("\\.[rR][eE][gG]\\'") (list diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,56 @@ +2006-03-03 Katsumi Yamaoka + + * mm-decode.el (mm-get-part): Don't use + mm-with-unibyte-current-buffer. + + * gnus-sum.el (gnus-summary-set-display-table): Don't nix out + characters 160 through 255 in Emacs 23. + +2006-03-02 Katsumi Yamaoka + + * mml.el (mml-generate-mime-1): Encode parts other than text/* or + message/* containing non-ASCII text properly. + +2006-02-28 Katsumi Yamaoka + + * mm-util.el (mm-with-unibyte-current-buffer): Add note. + +2006-02-28 Andreas Seltenreich + + * nnweb.el (nnweb-gmane-create-mapping): Don't choke on ^M. + +2006-02-28 Reiner Steib + + * nnweb.el (nnweb-type-definition, nnweb-gmane-search): Use new + nov.php. + +2006-02-28 Andreas Seltenreich + + * nnweb.el (nnweb-type-definition, nnweb-gmane-create-mapping) + (nnweb-gmane-wash-article, nnweb-gmane-search): Fix Gmane web + groups. Kudos to Olly Betts for providing NOV + output on the server side. + (nnweb-google-create-mapping): Update regexps and add some + progress indication. + +2006-02-28 Reiner Steib + + * message.el (message-user-fqdn): Remove useless * in doc string. + + * gnus-draft.el (gnus-draft-send): Bind message-signature to avoid + unnecessary interaction when sending queued mails. Reported by + TAKAHASHI Yoshio . + +2006-02-28 Lars Magne Ingebrigtsen + + * gnus-int.el (gnus-open-server): Respect gnus-batch-mode. + Merge of 2006-02-20 change from the trunk. + +2006-02-28 Lars Magne Ingebrigtsen + + * dns.el (query-dns): Protect more against buggy tcp output. + Merge of 2006-02-20 change from the trunk. + 2006-02-27 Reiner Steib * gnus-sum.el (gnus-sequence-of-unread-articles): Return nil if diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/dns.el --- a/lisp/gnus/dns.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/dns.el Sat Mar 04 23:07:13 2006 +0000 @@ -347,7 +347,7 @@ (>= (buffer-size) 2)) (goto-char (point-min)) (delete-region (point) (+ (point) 2))) - (unless (zerop (buffer-size)) + (when (>= (buffer-size) 2) (let ((result (dns-read (buffer-string)))) (if fullp result diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/gnus-draft.el --- a/lisp/gnus/gnus-draft.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/gnus-draft.el Sat Mar 04 23:07:13 2006 +0000 @@ -146,6 +146,8 @@ message-send-hook)) (message-setup-hook (and (not is-queue) message-setup-hook)) + (message-signature (and (not is-queue) + message-signature)) (gnus-agent-queue-mail (and (not is-queue) gnus-agent-queue-mail)) (rfc2047-encode-encoded-words nil) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/gnus-int.el --- a/lisp/gnus/gnus-int.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/gnus-int.el Sat Mar 04 23:07:13 2006 +0000 @@ -250,10 +250,12 @@ ;; recurse to open the agent's backend. (setq open-offline (eq gnus-server-unopen-status 'offline)) gnus-server-unopen-status) - ((gnus-y-or-n-p - (format "Unable to open %s:%s, go offline? " - (car gnus-command-method) - (cadr gnus-command-method))) + ((and + (not gnus-batch-mode) + (gnus-y-or-n-p + (format "Unable to open %s:%s, go offline? " + (car gnus-command-method) + (cadr gnus-command-method)))) (setq open-offline t) 'offline) (t diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/gnus-sum.el Sat Mar 04 23:07:13 2006 +0000 @@ -3098,8 +3098,11 @@ (aset table ?\r nil) ;; We keep TAB as well. (aset table ?\t nil) - ;; We nix out any glyphs over 126 that are not set already. - (let ((i 256)) + ;; We nix out any glyphs 127 through 255, or 127 through 159 in + ;; Emacs 23, that are not set already. + (let ((i (if (ignore-errors (= (make-char 'latin-iso8859-1 160) 160)) + 160 + 256))) (while (>= (setq i (1- i)) 127) ;; Only modify if the entry is nil. (unless (aref table i) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/mm-decode.el --- a/lisp/gnus/mm-decode.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/mm-decode.el Sat Mar 04 23:07:13 2006 +0000 @@ -1084,14 +1084,16 @@ (defun mm-get-part (handle) "Return the contents of HANDLE as a string." - (mm-with-unibyte-buffer - (insert (with-current-buffer (mm-handle-buffer handle) - (mm-with-unibyte-current-buffer - (buffer-string)))) - (mm-decode-content-transfer-encoding - (mm-handle-encoding handle) - (mm-handle-media-type handle)) - (buffer-string))) + (let ((default-enable-multibyte-characters + (with-current-buffer (mm-handle-buffer handle) + (mm-multibyte-p)))) + (with-temp-buffer + (insert-buffer-substring (mm-handle-buffer handle)) + (mm-disable-multibyte) + (mm-decode-content-transfer-encoding + (mm-handle-encoding handle) + (mm-handle-media-type handle)) + (buffer-string)))) (defun mm-insert-part (handle) "Insert the contents of HANDLE in the current buffer." diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/mm-util.el --- a/lisp/gnus/mm-util.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/mm-util.el Sat Mar 04 23:07:13 2006 +0000 @@ -796,11 +796,17 @@ (defmacro mm-with-unibyte-current-buffer (&rest forms) "Evaluate FORMS with current buffer temporarily made unibyte. Also bind `default-enable-multibyte-characters' to nil. -Equivalent to `progn' in XEmacs" +Equivalent to `progn' in XEmacs + +NOTE: Use this macro with caution in multibyte buffers (it is not +worth using this macro in unibyte buffers of course). Use of +`(set-buffer-multibyte t)', which is run finally, is generally +harmful since it is likely to modify existing data in the buffer. +For instance, it converts \"\\300\\255\" into \"\\255\" in Emacs 23." (let ((multibyte (make-symbol "multibyte")) (buffer (make-symbol "buffer"))) `(if mm-emacs-mule - (let ((,multibyte enable-multibyte-characters) + (let ((,multibyte enable-multibyte-characters) (,buffer (current-buffer))) (unwind-protect (let (default-enable-multibyte-characters) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/mml.el --- a/lisp/gnus/mml.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/mml.el Sat Mar 04 23:07:13 2006 +0000 @@ -507,7 +507,15 @@ (let ((coding-system-for-read mm-binary-coding-system)) (mm-insert-file-contents filename nil nil nil nil t))) (t - (insert (cdr (assq 'contents cont))))) + (let ((contents (cdr (assq 'contents cont)))) + (if (if (featurep 'xemacs) + (string-match "[^\000-\377]" contents) + (mm-multibyte-string-p contents)) + (progn + (mm-enable-multibyte) + (insert contents) + (setq charset (mm-encode-body))) + (insert contents))))) (setq encoding (mm-encode-buffer type) coded (mm-string-as-multibyte (buffer-string)))) (mml-insert-mime-headers cont type charset encoding nil) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/gnus/nnweb.el --- a/lisp/gnus/nnweb.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/gnus/nnweb.el Sat Mar 04 23:07:13 2006 +0000 @@ -27,9 +27,6 @@ ;; Note: You need to have `w3' installed for some functions to work. -;; FIXME: Due to changes in the HTML output of Gmane, stuff related to Gmane -;; web groups (`gnus-group-make-web-group') doesn't work anymore. - ;;; Code: (eval-when-compile (require 'cl)) @@ -82,7 +79,7 @@ (reference . identity) (map . nnweb-gmane-create-mapping) (search . nnweb-gmane-search) - (address . "http://gmane.org/") + (address . "http://search.gmane.org/nov.php") (identifier . nnweb-gmane-identity))) "Type-definition alist.") @@ -99,7 +96,7 @@ (defvoo nnweb-articles nil) (defvoo nnweb-buffer nil) -(defvar nnweb-group-alist nil) +(defvoo nnweb-group-alist nil) (defvoo nnweb-group nil) (defvoo nnweb-hashtb nil) @@ -309,22 +306,26 @@ (defun nnweb-google-wash-article () ;; We have Google's masked e-mail addresses here. :-/ - (let ((case-fold-search t)) + (let ((case-fold-search t) + (start-re "
\n *")
+	(end-re "\n *
")) (goto-char (point-min)) (if (save-excursion (or (re-search-forward "The requested message.*could not be found." nil t) - (not (and (re-search-forward "^
" nil t)
-			(re-search-forward "^
" nil t))))) + (not (and (re-search-forward start-re nil t) + (re-search-forward end-re nil t))))) ;; FIXME: Don't know how to indicate "not found". ;; Should this function throw an error? --rsteib (progn (gnus-message 3 "Requested article not found") (erase-buffer)) (delete-region (point-min) - (1+ (re-search-forward "^
" nil t)))
+		     (re-search-forward start-re))
       (goto-char (point-min))
-      (delete-region (- (re-search-forward "^
" nil t) (length "")) + (delete-region (progn + (re-search-forward end-re) + (match-beginning 0)) (point-max)) (mm-url-decode-entities)))) @@ -403,6 +404,7 @@ (save-excursion (set-buffer nnweb-buffer) (erase-buffer) + (nnheader-message 7 "Searching google...") (when (funcall (nnweb-definition 'search) nnweb-search) (let ((more t) (i 0)) @@ -413,15 +415,18 @@ (goto-char (point-min)) (incf i 100) (if (or (not (re-search-forward - "\"]+\\)\">\"]+\\)\">= i nnweb-max-hits)) (setq more nil) ;; Yup, there are more articles (setq more (concat (nnweb-definition 'base) (match-string 1))) (when more (erase-buffer) + (nnheader-message 7 "Searching google...(%d)" i) (mm-url-insert more)))) ;; Return the articles in the right order. + (nnheader-message 7 "Searching google...done") (setq nnweb-articles (sort nnweb-articles 'car-less-than-car)))))) @@ -454,46 +459,61 @@ "Perform the search and create a number-to-url alist." (save-excursion (set-buffer nnweb-buffer) - (erase-buffer) - (when (funcall (nnweb-definition 'search) nnweb-search) - (let ((more t) - (case-fold-search t) - (active (or (cadr (assoc nnweb-group nnweb-group-alist)) - (cons 1 0))) - subject group url - map) - ;; Remove stuff from the beginning of results - (goto-char (point-min)) - (search-forward "Search Results\n")) @@ -11001,18 +11104,31 @@ ;; make targets to anchors - (while (string-match "<<]*\\)>>>?[ \t]*\n?" line) - (setq line (replace-match - (concat "@\\nbsp@") - t t line))) + (while (string-match "<<]*\\)>>>?\\((INVISIBLE)\\)?[ \t]*\n?" line) + (cond + ((match-end 2) + (setq line (replace-match + (concat "@\\nbsp@") + t t line))) + ((and org-export-with-toc (equal (string-to-char line) ?*)) + (setq line (replace-match + (concat "@" (match-string 1 line) "@ ") +; (concat "@" (match-string 1 line) "@ ") + t t line))) + (t + (setq line (replace-match + (concat "@" (match-string 1 line) "@ ") + t t line))))) ;; Replace internal links (while (string-match org-bracket-link-regexp line) (setq line (replace-match (concat "@" (match-string (if (match-end 3) 3 1) line) "@") @@ -11087,7 +11203,7 @@ (cond ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line) ;; This is a headline - (setq level (- (match-end 1) (match-beginning 1)) + (setq level (org-tr-level (- (match-end 1) (match-beginning 1))) txt (match-string 2 line)) (if (<= level umax) (setq head-count (+ head-count 1))) (when in-local-list @@ -11822,6 +11938,7 @@ (define-key org-mode-map "\C-c\C-xb" 'org-export-as-html-and-open) (define-key org-mode-map "\C-c\C-x\C-b" 'org-export-as-html-and-open) +(define-key org-mode-map "\C-c\C-x\C-k" 'org-cut-special) (define-key org-mode-map "\C-c\C-x\C-w" 'org-cut-special) (define-key org-mode-map "\C-c\C-x\M-w" 'org-copy-special) (define-key org-mode-map "\C-c\C-x\C-y" 'org-paste-special) @@ -12244,7 +12361,9 @@ ["Demote Heading" org-metaright (not (org-at-table-p))] ["Demote Subtree" org-shiftmetaright (not (org-at-table-p))] "--" - ["Archive Subtree" org-archive-subtree t]) + ["Archive Subtree" org-archive-subtree t] + "--" + ["Convert file to odd levels" org-convert-to-odd-levels t]) "--" ("TODO Lists" ["TODO/DONE/-" org-todo t] diff -r 8976b9f5eda1 -r a380ca43a190 lisp/textmodes/reftex-index.el --- a/lisp/textmodes/reftex-index.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/textmodes/reftex-index.el Sat Mar 04 23:07:13 2006 +0000 @@ -1034,7 +1034,7 @@ ;; Index map (define-key reftex-index-map (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 'reftex-index-mouse-goto-line-and-hide) -(define-key reftex-index-map [follow-mouse] 'mouse-face) +(define-key reftex-index-map [follow-link] 'mouse-face) (substitute-key-definition 'next-line 'reftex-index-next reftex-index-map global-map) diff -r 8976b9f5eda1 -r a380ca43a190 lisp/textmodes/reftex-toc.el --- a/lisp/textmodes/reftex-toc.el Tue Feb 28 17:35:08 2006 +0000 +++ b/lisp/textmodes/reftex-toc.el Sat Mar 04 23:07:13 2006 +0000 @@ -1011,7 +1011,7 @@ ;; Table of Contents map (define-key reftex-toc-map (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 'reftex-toc-mouse-goto-line-and-hide) -(define-key reftex-toc-map [follow-mouse] 'mouse-face) +(define-key reftex-toc-map [follow-link] 'mouse-face) (substitute-key-definition 'next-line 'reftex-toc-next reftex-toc-map global-map) diff -r 8976b9f5eda1 -r a380ca43a190 lispref/ChangeLog --- a/lispref/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/lispref/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,11 @@ +2006-03-02 Kim F. Storm + + * keymaps.texi (Tool Bar): Add tool-bar-border. + +2006-02-28 Luc Teirlinck + + * loading.texi (Load Suffixes): Rephrase last paragraph. Fix typos. + 2006-02-27 Luc Teirlinck * elisp.texi (Top): Include "Load Suffixes" in the detailed menu. diff -r 8976b9f5eda1 -r a380ca43a190 lispref/keymaps.texi --- a/lispref/keymaps.texi Tue Feb 28 17:35:08 2006 +0000 +++ b/lispref/keymaps.texi Sat Mar 04 23:07:13 2006 +0000 @@ -2498,6 +2498,15 @@ The value is an integer, a number of pixels. The default is 1. @end defvar +@tindex tool-bar-border +@defvar tool-bar-border +This variable specifies the height of the border drawn below the tool +bar area. An integer value specifies height as a number of pixels. +If the value is one of @code{internal-border-width} (the default) or +@code{border-width}, the tool bar border height corresponds to the +corresponding frame parameter. +@end defvar + You can define a special meaning for clicking on a tool bar item with the shift, control, meta, etc., modifiers. You do this by setting up additional items that relate to the original item through the fake diff -r 8976b9f5eda1 -r a380ca43a190 lispref/loading.texi --- a/lispref/loading.texi Tue Feb 28 17:35:08 2006 +0000 +++ b/lispref/loading.texi Sat Mar 04 23:07:13 2006 +0000 @@ -180,7 +180,7 @@ This is a list of suffixes indicating (compiled or source) Emacs Lisp files. It should not include the empty string. @code{load} uses these suffixes in order when it appends Lisp suffixes to the specified -file name. The standard value is @code{(".elc" "el")} which produces +file name. The standard value is @code{(".elc" ".el")} which produces the behavior described in the previous section. @end defvar @@ -206,17 +206,16 @@ This takes both @code{load-suffixes} and @code{load-file-rep-suffixes} into account. If @code{load-suffixes}, @code{jka-compr-load-suffixes} and @code{load-file-rep-suffixes} all have their standard values, this -function returns @code{(".elc" "elc.gz" ".el" ".el.gz")} if Auto +function returns @code{(".elc" ".elc.gz" ".el" ".el.gz")} if Auto Compression mode is enabled and @code{(".elc" ".el")} if Auto Compression mode is disabled. @end defun -To summarize, if both its @var{nosuffix} and @var{must-suffix} -arguments are @code{nil}, @code{load} first tries the suffixes in the -return value of @code{get-load-suffixes} and then those in +To summarize, @code{load} normally first tries the suffixes in the +value of @code{(get-load-suffixes)} and then those in @code{load-file-rep-suffixes}. If @var{nosuffix} is non-@code{nil}, -it only tries the latter and is @var{must-suffix} is non-@code{nil}, -only the former. +it skips the former group, and if @var{must-suffix} is non-@code{nil}, +it skips the latter group. @node Library Search @section Library Search @@ -753,7 +752,7 @@ with @code{load}. If @var{filename} is not supplied, then the name of the symbol @var{feature} is used as the base file name to load. However, in this case, @code{require} insists on finding @var{feature} -with an added @samp{el} or @samp{.elc} suffix (possibly extended with +with an added @samp{.el} or @samp{.elc} suffix (possibly extended with a compression suffix); a file whose name is just @var{feature} won't be used. (The variable @code{load-suffixes} specifies the exact required Lisp suffixes.) diff -r 8976b9f5eda1 -r a380ca43a190 man/ChangeLog --- a/man/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/man/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,13 @@ +2006-03-01 Carsten Dominik + + * org.texi: (Interaction): Added item about `org-mouse.el' by + Piotr Zielinski. + (Managing links): Documented that also mouse-1 can be used to + activate a link. + (Headlines, FAQ): Added entry about hiding leading stars. + (Miscellaneous): Resorted the sections in this chapter to a more + logical sequence. + 2006-02-28 Andre Spiegel * files.texi (Old Versions): Clarify operation of C-x v =. diff -r 8976b9f5eda1 -r a380ca43a190 man/org.texi --- a/man/org.texi Tue Feb 28 17:35:08 2006 +0000 +++ b/man/org.texi Sat Mar 04 23:07:13 2006 +0000 @@ -4,8 +4,8 @@ @setfilename ../info/org @settitle Org Mode Manual -@set VERSION 4.06 -@set DATE February 2006 +@set VERSION 4.07 +@set DATE March 2006 @dircategory Emacs @direntry @@ -188,9 +188,10 @@ * Completion:: M-TAB knows what you need * Customization:: Adapting Org-mode to your taste +* Clean view:: Getting rid of leading stars in the outline +* TTY keys:: Using Org-mode on a tty * FAQ:: Frequently asked questions * Interaction:: Other Emacs packages -* TTY keys:: Using Org-mode on a tty * Bugs:: Things which do not work perfectly * Acknowledgments:: These people provided feedback and more @@ -378,6 +379,9 @@ more text * Another top level headline @end example +@noindent Some people find the many stars too noisy and would prefer an +outline that has whitespace followed by a single star as headline +starters. @ref{Clean view} describes a setup to realize this. @node Visibility cycling, Motion, Headlines, Document Structure @section Visibility cycling @@ -512,7 +516,9 @@ @item M-S-@key{down} Move subtree down (swap with next subtree of same level) @kindex C-c C-x C-w +@kindex C-c C-x C-k @item C-c C-x C-w +@itemx C-c C-x C-k Kill subtree, i.e. remove it from buffer but save in kill ring. @kindex C-c C-x M-w @item C-c C-x M-w @@ -627,7 +633,7 @@ If you wish to implement a tag system to cross-correlate information, this can be done as well in Org-mode. Every headline can contain a list of tags, at the end of the headline. Tags are normal words -containing letters and @samp{_}, but no numbers. Tags must be +containing letters, numbers, @samp{_}, and @samp{@@}. Tags must be preceded and followed by a single colon; like @samp{:WORK:}. Several tags can be specified like @samp{:WORK:URGENT:}. @@ -709,16 +715,20 @@ editing such lists, and the HTML exporter (@pxref{Exporting}) does parse and format them. -Org-mode knows ordered and unordered lists. Unordered list items -start with @samp{-}, @samp{+}, or @samp{*}@footnote{When using -@samp{*} as a bullet, lines must be indented or they will be seen as -top-level headlines.} as bullets. Ordered list items start with -@samp{1.} or @samp{1)}. Items belonging to the same list must have -the same indentation on the first line. In particular, if an ordered -list reaches number @samp{10.}, also the 2--digit numbers must be -written left-aligned with the other numbers in the list. Indentation -also determines the end of a list item. It ends before the next line -that is indented like the bullet/number, or less. For example: +Org-mode knows ordered and unordered lists. Unordered list items start +with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a +bullet, lines must be indented or they will be seen as top-level +headlines. Also, when you are hiding leading stars to get a clean +outline view, plain list items starting with a star are visually +indistinguishable from true headlines. In short: Even though @samp{*} +is supported, it may be better to not use it for plain list items} as +bullets. Ordered list items start with @samp{1.} or @samp{1)}. Items +belonging to the same list must have the same indentation on the first +line. In particular, if an ordered list reaches number @samp{10.}, also +the 2--digit numbers must be written left-aligned with the other numbers +in the list. Indentation also determines the end of a list item. It +ends before the next line that is indented like the bullet/number, or +less. For example: @example ** Lord of the Rings @@ -1050,10 +1060,12 @@ @cindex syntax, of formulas A formula can be any algebraic expression understood by the Emacs -@file{calc} package. Before evaluation by @code{calc-eval} -(@pxref{Calling Calc from Your Lisp Programs,calc-eval,Calling calc -from Your Lisp Programs,calc,GNU Emacs Calc Manual}), variable -substitution takes place: +@file{calc} package. Note that @file{calc} has the slightly +non-standard conversion that @samp{/} has lower precedence than +@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. Before +evaluation by @code{calc-eval} (@pxref{Calling Calc from Your Lisp +Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU Emacs +Calc Manual}), variable substitution takes place: @example $ @r{refers to the current field} @@ -1521,9 +1533,7 @@ @cindex following links @kindex C-c C-o -@kindex mouse-2 @item C-c C-o -@itemx mouse-2 Open link at point. This will launch a web browser for URLs (using @command{browse-url-at-point}), run vm/gnus/bbdb for the corresponding links, and execute the command in a shell link. When the cursor is on @@ -1542,8 +1552,11 @@ shell link. @kindex mouse-2 +@kindex mouse-1 @item mouse-2 -On links, @kbd{mouse-2} will open the link just like @kbd{C-c C-o} would. +@itemx mouse-1 +On links, @kbd{mouse-2} will open the link just like @kbd{C-c C-o} +would. Under Emacs 22, also @kbd{mouse-1} will follow a link. @kindex mouse-3 @item mouse-3 @@ -2487,10 +2500,13 @@ Display original location and recenter that window. @kindex mouse-2 +@kindex mouse-1 @kindex @key{TAB} @item mouse-2 +@itemx mouse-1 @itemx @key{TAB} -Go to the original location of the item in another window. +Go to the original location of the item in another window. Under Emacs +22, also @kbd{mouse-1} will works for this. @kindex @key{RET} @itemx @key{RET} @@ -2952,9 +2968,10 @@ @menu * Completion:: M-TAB knows what you need * Customization:: Adapting Org-mode to your taste +* Clean view:: Getting rid of leading stars in the outline +* TTY keys:: Using Org-mode on a tty * FAQ:: Frequently asked questions * Interaction:: Other Emacs packages -* TTY keys:: Using Org-mode on a tty * Bugs:: Things which do not work perfectly * Acknowledgments:: These people provided feedback and more @end menu @@ -3002,7 +3019,8 @@ @end itemize @end table -@node Customization, FAQ, Completion, Miscellaneous + +@node Customization, Clean view, Completion, Miscellaneous @section Customization @cindex customization @cindex options, for customization @@ -3014,7 +3032,126 @@ variables is available with @kbd{M-x org-customize}. Or select @code{Browse Org Group} from the @code{Org->Customization} menu. -@node FAQ, Interaction, Customization, Miscellaneous +@node Clean view, TTY keys, Customization, Miscellaneous +@section A cleaner outline view +@cindex hiding leading stars +@cindex clean outline view + +Some people find it noisy and distracting that the Org-mode headlines +are starting with a potentially large number of stars. For example in +the example tree from @ref{Headlines}: + +@example +* Top level headline +** Second level +*** 3rd level + some text +*** 3rd level + more text +* Another top level headline +@end example + +@noindent +Unfortunately this is deeply ingrained into the code of Org-mode and +cannot be easily changed. You can, however, modify the display in such +a way that all leading stars become invisible and the outline more easy +to read. To do this, customize the variable +@code{org-hide-leading-stars} like this: + +@lisp +(setq org-hide-leading-stars t) +@end lisp + +@noindent +and restart emacs (this is necessary to make this change effective). +The tree then becomes + +@example +* Top level headline + * Second level + * 3rd level + some text + * 3rd level + more text +* Another top level headline +@end example + +@noindent +Note that the leading stars are not truly replaced by whitespace, they +are only fontified with the face @code{org-hide} that uses the +background color as font color. If are are not using either white or +black background, you may have to customize this face to get the wanted +effect. Another possibility is to set this font such that the extra +stars are @i{almost} invisible, for example using the color +@code{grey90} on a white background. + +Things become cleaner still if you skip all the even levels and use only +odd levels 1, 3, 5..., effectively adding two stars to go from one +outline level to the next: + +@example +* Top level headline + * Second level + * 3rd level + some text + * 3rd level + more text +* Another top level headline +@end example + +@noindent +In order to make the structure editing and export commands handle this +convention correctly, use (again a restart of emacs will be needed) + +@lisp +(setq org-odd-levels-only t) +@end lisp + +@noindent +You can convert an Org-mode file from single-star-per-level to +double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels +RET} in that file. It is not possible to use this setting on a +file-local basis, so you need to decide which format to use. + +@node TTY keys, FAQ, Clean view, Miscellaneous +@section Using org-mode on a tty +@cindex tty keybindings + +Org-mode uses a number of keys that are not accessible on a tty. This +applies to most special keys like cursor keys, @key{TAB} and +@key{RET}, when these are combined with modifier keys like @key{Meta} +and/or @key{Shift}. Org-mode uses these bindings because it needs to +provide keys for a large number of commands, and because these keys +appeared particularly easy to remember. In order to still be able to +access the core functionality of Org-mode on a tty, alternative +bindings are provided. Here is a complete list of these bindings, +which are obviously more cumbersome to use. Note that sometimes a +work-around can be better. For example changing a time stamp is +really only fun with @kbd{S-@key{cursor}} keys. On a tty you would +rather use @kbd{C-c .} to re-insert the timestamp. + +@page +@multitable @columnfractions 0.15 0.2 0.2 +@item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2} +@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab +@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{@key{Esc} @key{left}} +@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab +@item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{@key{Esc} @key{right}} +@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab +@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{@key{Esc} @key{up}} +@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab +@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{@key{Esc} @key{down}} +@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab +@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab +@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}} +@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab +@item @kbd{S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab +@item @kbd{S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab +@item @kbd{S-@key{up}} @tab @kbd{C-c C-x @key{up}} @tab +@item @kbd{S-@key{down}} @tab @kbd{C-c C-x @key{down}} @tab +@end multitable + +@node FAQ, Interaction, TTY keys, Miscellaneous @section Frequently asked questions @cindex FAQ @@ -3026,6 +3163,11 @@ (add-to-list 'auto-mode-alist '("README$" . org-mode)) @end example +@item @b{All these stars are driving me mad, I just find the Emacs +outlines unreadable. Can't you just put white space and a single star as a +starter for headlines?}@* +See @ref{Clean view}. + @item @b{I would like to have two windows on the same Org-mode file, but with different outline visibility. Is that possible?}@* @cindex @code{make-indirect-buffer} @@ -3138,15 +3280,23 @@ @end enumerate -@node Interaction, TTY keys, FAQ, Miscellaneous +@node Interaction, Bugs, FAQ, Miscellaneous @section Interaction with other packages @cindex packages, interaction with other Org-mode can cooperate with the following packages: @table @asis +@cindex @file{org-mouse.el} +@item @file{org-mouse.el} by Piotr Zielinski +This package implements extended mouse functionality for Org-mode. It +allows to cycle visibility and to edit the document structure with the +mouse. It also provides a context-sensitive menu that changes depending +on the context of a mouse-click. Use a search engine to find this +package on the web. @cindex @file{table.el} @item @file{table.el} by Takaaki Ota -Org mode cooperates with table.el, see @ref{table.el}. +Org mode cooperates with table.el, see @ref{table.el}. @file{table.el} +is part of Emacs 22. @cindex @file{calc.el} @item @file{calc.el} by Dave Gillespie Org-mode uses the calc package for implementing spreadsheet @@ -3189,6 +3339,7 @@ @code{org-disputed-keys}. @item @file{remember.el} by John Wiegley Org mode cooperates with remember, see @ref{Remember}. +@file{remember.el} is not part of Emacs, find it on the web. @cindex @file{planner.el} @item @file{planner.el} by John Wiegley Planner is another tool to plan work and keep track of tasks. Planner @@ -3197,48 +3348,11 @@ display the agenda entries resulting from org files in day-pages of the planner. This can be done through the diary of the calendar: Integrate org files into the diary as described above, and then turn -on the diary support of planner. +on the diary support of planner. Planner is not part of Emacs, find it +on the web. @end table -@node TTY keys, Bugs, Interaction, Miscellaneous -@section Using org-mode on a tty -@cindex tty keybindings - -Org-mode uses a number of keys that are not accessible on a tty. This -applies to most special keys like cursor keys, @key{TAB} and -@key{RET}, when these are combined with modifier keys like @key{Meta} -and/or @key{Shift}. Org-mode uses these bindings because it needs to -provide keys for a large number of commands, and because these keys -appeared particularly easy to remember. In order to still be able to -access the core functionality of Org-mode on a tty, alternative -bindings are provided. Here is a complete list of these bindings, -which are obviously more cumbersome to use. Note that sometimes a -work-around can be better. For example changing a time stamp is -really only fun with @kbd{S-@key{cursor}} keys. On a tty you would -rather use @kbd{C-c .} to re-insert the timestamp. - -@page -@multitable @columnfractions 0.15 0.2 0.2 -@item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2} -@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab -@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{@key{Esc} @key{left}} -@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab -@item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{@key{Esc} @key{right}} -@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab -@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{@key{Esc} @key{up}} -@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab -@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{@key{Esc} @key{down}} -@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab -@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab -@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}} -@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab -@item @kbd{S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab -@item @kbd{S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab -@item @kbd{S-@key{up}} @tab @kbd{C-c C-x @key{up}} @tab -@item @kbd{S-@key{down}} @tab @kbd{C-c C-x @key{down}} @tab -@end multitable - -@node Bugs, Acknowledgments, TTY keys, Miscellaneous +@node Bugs, Acknowledgments, Interaction, Miscellaneous @section Bugs @cindex bugs @@ -3246,13 +3360,6 @@ have found too hard to fix. @itemize @bullet -@c @item -@c If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the -@c filling is correctly disabled. However, if some text directly -@c (without an empty line in between) precedes or follows a table, calling -@c @code{fill-paragraph} in that text will also fill the table like -@c normal text. Also, @code{fill-region} does bypass the -@c @code{fill-paragraph} code and will fill tables like normal text. @item Text in an entry protected with the @samp{QUOTE} keyword should not autowrap. @@ -3261,6 +3368,10 @@ (for example because the application does not exits or refuses to open the file), it does so silently. No error message is displayed. @item +Plain list items should be able to hold a TODO item. Unfortunately this +has so many technical problems that I will only consider this change for +the next major release (5.0). +@item The remote-editing commands in the agenda buffer cannot be undone with @code{undo} called from within the agenda buffer. But you can go to the corresponding buffer (using @key{TAB} or @key{RET} and execute @@ -3276,11 +3387,9 @@ However, from Org-mode's timeline and agenda buffers (created with @kbd{C-c C-r} and @kbd{C-c a}), things do work correctly. @item -Linux should also have a default viewer application, using mailcap. -Maybe we can use GNUS or VM mime code? Or dired's guessing commands? -Any hints (or even patches) are appreciated. -@item -When you write @samp{x = a /b/ c}, b will be exported in italics. +You can only make a single word boldface or italic. To emphasize +several words in a row, each much have the emphasize markers, like in +@samp{*three* *bold* *words*}. @item The exporters work well, but could be made more efficient. @end itemize @@ -3353,6 +3462,9 @@ @item Roland Winkler pointed out that additional keybindings are needed to use Org-mode on a tty. +@item +Piotr Zielinski wrote @file{org-mouse.el} and pointed out to me that +Emacs 22 can be made to follow links using mouse-1 clicks. @c @item @c Nic Ferrier and Christian Egli implemented XML export. @end itemize diff -r 8976b9f5eda1 -r a380ca43a190 src/ChangeLog --- a/src/ChangeLog Tue Feb 28 17:35:08 2006 +0000 +++ b/src/ChangeLog Sat Mar 04 23:07:13 2006 +0000 @@ -1,3 +1,39 @@ +2006-03-02 Kim F. Storm + + * frame.h (struct frame): New member n_tool_bar_rows. + + * xdisp.c: Minimize the unpleasent visual impact of the requirement + that non-toolkit tool-bars must occupy an integral number of screen + lines, by distributing the rows evenly over the tool-bar screen area. + (Vtool_bar_border): New variable. + (syms_of_xdisp): DEFVAR_LISP it. + (display_tool_bar_line): Add HEIGHT arg for desired row height. Make + tool-bar row the desired height. Use default face for border below + tool-bar. + (tool_bar_lines_needed): Add N_ROWS arg. Use it to return number of + actual tool-bar rows. + (redisplay_tool_bar): Calculate f->n_tool_bar_rows initially. + Adjust the height of the tool-bar rows to fill tool-bar screen area. + (redisplay_tool_bar): Calculate f->n_tool_bar_rows when tool-bar area + is resized. + +2006-03-01 Luc Teirlinck + + * search.c (Fregexp_quote): Do not precede a literal `]' with two + backslashes to try to make clear that it has a literal meaning; it + does not do that. (It could close a character alternative + containing a backslash.) + +2006-02-28 Chong Yidong + + * xselect.c (x_catch_errors_unwind): New function. + (x_reply_selection_request): Put x_uncatch_errors in an unwind. + (Fx_get_atom_name): Call x_uncatch_errors earlier. + + * window.c (Qscroll_up, Qscroll_down): New syms. + (window_scroll_pixel_based): Make preserve_y static to avoid + getting point stuck when scrolling 1 line. + 2006-02-26 Chong Yidong * xterm.h, xterm.c (x_uncatch_errors): Delete unneccessary diff -r 8976b9f5eda1 -r a380ca43a190 src/frame.h --- a/src/frame.h Tue Feb 28 17:35:08 2006 +0000 +++ b/src/frame.h Sat Mar 04 23:07:13 2006 +0000 @@ -205,6 +205,7 @@ /* Margin at the top of the frame. Used to display the tool-bar. */ int tool_bar_lines; + int n_tool_bar_rows; int n_tool_bar_items; /* A buffer for decode_mode_line. */ diff -r 8976b9f5eda1 -r a380ca43a190 src/search.c --- a/src/search.c Tue Feb 28 17:35:08 2006 +0000 +++ b/src/search.c Sat Mar 04 23:07:13 2006 +0000 @@ -3066,7 +3066,7 @@ for (; in != end; in++) { - if (*in == '[' || *in == ']' + if (*in == '[' || *in == '*' || *in == '.' || *in == '\\' || *in == '?' || *in == '+' || *in == '^' || *in == '$') diff -r 8976b9f5eda1 -r a380ca43a190 src/window.c --- a/src/window.c Tue Feb 28 17:35:08 2006 +0000 +++ b/src/window.c Sat Mar 04 23:07:13 2006 +0000 @@ -52,6 +52,7 @@ Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configuration_p; +Lisp_Object Qscroll_up, Qscroll_down; Lisp_Object Qwindow_size_fixed; extern Lisp_Object Qleft_margin, Qright_margin; @@ -4723,9 +4724,9 @@ struct text_pos start; Lisp_Object tem; int this_scroll_margin; - int preserve_y; /* True if we fiddled the window vscroll field without really scrolling. */ int vscrolled = 0; + static int preserve_y = -1; SET_TEXT_POS_FROM_MARKER (start, w->start); @@ -4789,9 +4790,18 @@ point in the same window line as it is now, so get that line. */ if (!NILP (Vscroll_preserve_screen_position)) { - start_display (&it, w, start); - move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); - preserve_y = it.current_y; + /* We preserve the goal pixel coordinate across consecutive + calls to scroll-up or scroll-down. This avoids the + possibility of point becoming "stuck" on a tall line when + scrolling by one line. */ + if (preserve_y < 0 + || (current_kboard->Vlast_command != Qscroll_up + && current_kboard->Vlast_command != Qscroll_down)) + { + start_display (&it, w, start); + move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); + preserve_y = it.current_y; + } } else preserve_y = -1; @@ -4928,10 +4938,9 @@ { /* If we have a header line, take account of it. This is necessary because we set it.current_y to 0, above. */ - if (WINDOW_WANTS_HEADER_LINE_P (w)) - preserve_y -= CURRENT_HEADER_LINE_HEIGHT (w); - - move_it_to (&it, -1, -1, preserve_y, -1, MOVE_TO_Y); + move_it_to (&it, -1, -1, + preserve_y - (WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0 ), + -1, MOVE_TO_Y); SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); } else @@ -4985,15 +4994,9 @@ { SET_TEXT_POS_FROM_MARKER (start, w->start); start_display (&it, w, start); -#if 0 /* It's wrong to subtract this here - because we called start_display again - and did not alter it.current_y this time. */ - - /* If we have a header line, take account of it. */ - if (WINDOW_WANTS_HEADER_LINE_P (w)) - preserve_y -= CURRENT_HEADER_LINE_HEIGHT (w); -#endif - + /* It would be wrong to subtract CURRENT_HEADER_LINE_HEIGHT + here because we called start_display again and did not + alter it.current_y this time. */ move_it_to (&it, -1, -1, preserve_y, -1, MOVE_TO_Y); SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); } @@ -6990,6 +6993,12 @@ void syms_of_window () { + Qscroll_up = intern ("scroll-up"); + staticpro (&Qscroll_up); + + Qscroll_down = intern ("scroll-down"); + staticpro (&Qscroll_down); + Qwindow_size_fixed = intern ("window-size-fixed"); staticpro (&Qwindow_size_fixed); Fset (Qwindow_size_fixed, Qnil); diff -r 8976b9f5eda1 -r a380ca43a190 src/xdisp.c --- a/src/xdisp.c Tue Feb 28 17:35:08 2006 +0000 +++ b/src/xdisp.c Sat Mar 04 23:07:13 2006 +0000 @@ -269,6 +269,12 @@ int make_cursor_line_fully_visible_p; +/* Margin below tool bar in pixels. 0 or nil means no margin. + If value is `internal-border-width' or `border-width', + the corresponding frame parameter is used. */ + +Lisp_Object Vtool_bar_border; + /* Margin around tool bar buttons in pixels. */ Lisp_Object Vtool_bar_button_margin; @@ -839,7 +845,7 @@ static int store_mode_line_noprop P_ ((const unsigned char *, int, int)); static void x_consider_frame_title P_ ((Lisp_Object)); static void handle_stop P_ ((struct it *)); -static int tool_bar_lines_needed P_ ((struct frame *)); +static int tool_bar_lines_needed P_ ((struct frame *, int *)); static int single_display_spec_intangible_p P_ ((Lisp_Object)); static void ensure_echo_area_buffers P_ ((void)); static Lisp_Object unwind_with_echo_area_buffer P_ ((Lisp_Object)); @@ -950,7 +956,7 @@ static void update_tool_bar P_ ((struct frame *, int)); static void build_desired_tool_bar_string P_ ((struct frame *f)); static int redisplay_tool_bar P_ ((struct frame *)); -static void display_tool_bar_line P_ ((struct it *)); +static void display_tool_bar_line P_ ((struct it *, int)); static void notice_overwritten_cursor P_ ((struct window *, enum glyph_row_area, int, int, int, int)); @@ -9429,11 +9435,17 @@ } -/* Display one line of the tool-bar of frame IT->f. */ - -static void -display_tool_bar_line (it) - struct it *it; +/* Display one line of the tool-bar of frame IT->f. + + HEIGHT specifies the desired height of the tool-bar line. + If the actual height of the glyph row is less than HEIGHT, the + row's height is increased to HEIGHT, and the icons are centered + vertically in the new height. */ + +static void +display_tool_bar_line (it, height) + struct it *it; + int height; { struct glyph_row *row = it->glyph_row; int max_x = it->last_visible_x; @@ -9489,11 +9501,22 @@ out:; row->displays_text_p = row->used[TEXT_AREA] != 0; + /* Use default face for the border below the tool bar. */ + if (!row->displays_text_p) + it->face_id = DEFAULT_FACE_ID; extend_face_to_end_of_line (it); last = row->glyphs[TEXT_AREA] + row->used[TEXT_AREA] - 1; last->right_box_line_p = 1; if (last == row->glyphs[TEXT_AREA]) last->left_box_line_p = 1; + + /* Make line the desired height and center it vertically. */ + if ((height -= it->max_ascent + it->max_descent) > 0) + { + it->max_ascent += height / 2; + it->max_descent += (height + 1) / 2; + } + compute_line_metrics (it); /* If line is empty, make it occupy the rest of the tool-bar. */ @@ -9517,11 +9540,13 @@ /* Value is the number of screen lines needed to make all tool-bar - items of frame F visible. */ - -static int -tool_bar_lines_needed (f) + items of frame F visible. The number of actual rows needed is + returned in *N_ROWS if non-NULL. */ + +static int +tool_bar_lines_needed (f, n_rows) struct frame *f; + int *n_rows; { struct window *w = XWINDOW (f->tool_bar_window); struct it it; @@ -9537,8 +9562,11 @@ { it.glyph_row = w->desired_matrix->rows; clear_glyph_row (it.glyph_row); - display_tool_bar_line (&it); - } + display_tool_bar_line (&it, 0); + } + + if (n_rows) + *n_rows = it.vpos; return (it.current_y + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f); } @@ -9568,7 +9596,7 @@ if (f->n_tool_bar_items) { build_desired_tool_bar_string (f); - nlines = tool_bar_lines_needed (f); + nlines = tool_bar_lines_needed (f, NULL); } } @@ -9613,9 +9641,50 @@ build_desired_tool_bar_string (f); reseat_to_string (&it, NULL, f->desired_tool_bar_string, 0, 0, 0, -1); + if (f->n_tool_bar_rows == 0) + { + (void)tool_bar_lines_needed (f, &f->n_tool_bar_rows); + if (f->n_tool_bar_rows == 0) + f->n_tool_bar_rows = -1; + } + /* Display as many lines as needed to display all tool-bar items. */ - while (it.current_y < it.last_visible_y) - display_tool_bar_line (&it); + + if (f->n_tool_bar_rows > 0) + { + int border, rows, height, extra; + + if (INTEGERP (Vtool_bar_border)) + border = XINT (Vtool_bar_border); + else if (EQ (Vtool_bar_border, Qinternal_border_width)) + border = FRAME_INTERNAL_BORDER_WIDTH (f); + else if (EQ (Vtool_bar_border, Qborder_width)) + border = f->border_width; + else + border = 0; + if (border < 0) + border = 0; + + rows = f->n_tool_bar_rows; + height = (it.last_visible_y - border) / rows; + extra = it.last_visible_y - border - height * rows; + + while (it.current_y < it.last_visible_y) + { + int h = 0; + if (extra > 0 && rows-- > 0) + { + h = (extra + rows - 1) / rows; + extra -= h; + } + display_tool_bar_line (&it, height + h); + } + } + else + { + while (it.current_y < it.last_visible_y) + display_tool_bar_line (&it, 0); + } /* It doesn't make much sense to try scrolling in the tool-bar window, so don't do it. */ @@ -9648,7 +9717,7 @@ /* Resize windows as needed by changing the `tool-bar-lines' frame parameter. */ if (change_height_p - && (nlines = tool_bar_lines_needed (f), + && (nlines = tool_bar_lines_needed (f, &f->n_tool_bar_rows), nlines != WINDOW_TOTAL_LINES (w))) { extern Lisp_Object Qtool_bar_lines; @@ -23661,6 +23730,14 @@ doc: /* *Non-nil means to scroll (recenter) cursor line if it is not fully visible. */); make_cursor_line_fully_visible_p = 1; + DEFVAR_LISP ("tool-bar-border", &Vtool_bar_border, + doc: /* *Border below tool-bar in pixels. +If an integer, use it as the height of the border. +If it is one of `internal-border-width' or `border-width', use the +value of the corresponding frame parameter. +Otherwise, no border is added below the tool-bar. */); + Vtool_bar_border = Qinternal_border_width; + DEFVAR_LISP ("tool-bar-button-margin", &Vtool_bar_button_margin, doc: /* *Margin around tool-bar buttons in pixels. If an integer, use that for both horizontal and vertical margins. diff -r 8976b9f5eda1 -r a380ca43a190 src/xselect.c --- a/src/xselect.c Tue Feb 28 17:35:08 2006 +0000 +++ b/src/xselect.c Sat Mar 04 23:07:13 2006 +0000 @@ -55,6 +55,7 @@ static Lisp_Object x_selection_request_lisp_error P_ ((Lisp_Object)); static Lisp_Object queue_selection_requests_unwind P_ ((Lisp_Object)); static Lisp_Object some_frame_on_display P_ ((struct x_display_info *)); +static Lisp_Object x_catch_errors_unwind P_ ((Lisp_Object)); static void x_reply_selection_request P_ ((struct input_event *, int, unsigned char *, int, Atom)); static int waiting_for_other_props_on_window P_ ((Display *, Window)); @@ -618,6 +619,15 @@ x_decline_selection_request (x_selection_current_request); return Qnil; } + +static Lisp_Object +x_catch_errors_unwind (dummy) + Lisp_Object dummy; +{ + BLOCK_INPUT; + x_uncatch_errors (); + UNBLOCK_INPUT; +} /* This stuff is so that INCR selections are reentrant (that is, so we can @@ -711,8 +721,11 @@ if (reply.property == None) reply.property = reply.target; - /* #### XChangeProperty can generate BadAlloc, and we must handle it! */ BLOCK_INPUT; + /* The protected block contains wait_for_property_change, which can + run random lisp code (process handlers) or signal. Therefore, we + put the x_uncatch_errors call in an unwind. */ + record_unwind_protect (x_catch_errors_unwind, Qnil); x_catch_errors (display); #ifdef TRACE_SELECTION @@ -866,9 +879,8 @@ UNBLOCK to enter the event loop and get possible errors delivered, and then BLOCK again because x_uncatch_errors requires it. */ BLOCK_INPUT; - + /* This calls x_uncatch_errors. */ unbind_to (count, Qnil); - x_uncatch_errors (); UNBLOCK_INPUT; } @@ -1378,7 +1390,7 @@ Atom selection_atom; Atom type_atom; int secs, usecs; - int count; + int count = SPECPDL_INDEX (); Lisp_Object frame; if (! FRAME_X_P (sf)) @@ -1409,6 +1421,10 @@ BLOCK_INPUT; + /* The protected block contains wait_reading_process_output, which + can run random lisp code (process handlers) or signal. + Therefore, we put the x_uncatch_errors call in an unwind. */ + record_unwind_protect (x_catch_errors_unwind, Qnil); x_catch_errors (display); TRACE2 ("Get selection %s, type %s", @@ -1426,8 +1442,6 @@ frame = some_frame_on_display (dpyinfo); - count = SPECPDL_INDEX (); - /* If the display no longer has frames, we can't expect to get many more selection requests from it, so don't bother trying to queue them. */ @@ -1449,9 +1463,10 @@ TRACE1 (" Got event = %d", !NILP (XCAR (reading_selection_reply))); BLOCK_INPUT; + if (x_had_errors_p (display)) + error ("Cannot get selection"); + /* This calls x_uncatch_errors. */ unbind_to (count, Qnil); - x_check_errors (display, "Cannot get selection: %s"); - x_uncatch_errors (); UNBLOCK_INPUT; if (NILP (XCAR (reading_selection_reply))) @@ -2687,6 +2702,7 @@ Lisp_Object ret = Qnil; Display *dpy = FRAME_X_DISPLAY (f); Atom atom; + int had_errors; if (INTEGERP (value)) atom = (Atom) XUINT (value); @@ -2699,14 +2715,13 @@ BLOCK_INPUT; x_catch_errors (dpy); - name = atom ? XGetAtomName (dpy, atom) : ""; - - if (! x_had_errors_p (dpy)) + had_errors = x_had_errors_p (dpy); + x_uncatch_errors (); + + if (!had_errors) ret = make_string (name, strlen (name)); - x_uncatch_errors (); - if (atom && name) XFree (name); if (NILP (ret)) ret = make_string ("", 0);