# HG changeset patch # User Miles Bader # Date 1141372126 0 # Node ID 5754737d1e04c1acd092385e029b3785ea48d710 # Parent 8f2b88ad38c46ceb32f70a5c35f4e5f05c5e67fd# Parent 6580c61aced73118adb4b4c70a2d05c2cc8756aa Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-34 Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 123-134) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 40-48) - Merge from emacs--devo--0 - Update from CVS - Munge arch explicit ids in etc/images to match Emacs diff -r 8f2b88ad38c4 -r 5754737d1e04 admin/FOR-RELEASE --- a/admin/FOR-RELEASE Fri Mar 03 05:16:17 2006 +0000 +++ b/admin/FOR-RELEASE Fri Mar 03 07:48:46 2006 +0000 @@ -31,15 +31,22 @@ ** Ensure MH-E 8.0 has been released. Assigned to Bill Wohler . -* NEW FEATURES - * BUGS ** 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" + +** Markus Gritsch's report about Emacs looping on Windoze with the following +.emacs file, and then reduce Emacs frame width to "something quite narrow": + (setq-default truncate-lines t) + (custom-set-variables + '(hscroll-margin 20) + '(hscroll-step 1) + ) ** TCP server processes do not work on Windows. diff -r 8f2b88ad38c4 -r 5754737d1e04 etc/gnus-tut.txt --- a/etc/gnus-tut.txt Fri Mar 03 05:16:17 2006 +0000 +++ b/etc/gnus-tut.txt Fri Mar 03 07:48:46 2006 +0000 @@ -223,7 +223,7 @@ Create the group by saying -`M-a my.virtual.newsgroupnnvirtual^rec\.aquaria\.*' +`G m my.virtual.newsgroupnnvirtual^rec\.aquaria\.*' This will create the group "nnvirtual:my.virtual.newsgroup", which will collect all articles from all the groups in the "rec.aquaria" diff -r 8f2b88ad38c4 -r 5754737d1e04 etc/orgcard.tex --- a/etc/orgcard.tex Fri Mar 03 05:16:17 2006 +0000 +++ b/etc/orgcard.tex Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/ChangeLog --- a/lisp/ChangeLog Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/ChangeLog Fri Mar 03 07:48:46 2006 +0000 @@ -1,3 +1,149 @@ +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 + [this is what info and gdb-ui use even if better methods exist now]. + + * t-mouse.el: New file. + (t-mouse-tty): Use with-temp-buffer. Add more terminal types. + (t-mouse-lispy-buffer-posn-from-coords): Remove. Use the C + primitive... + (t-mouse-make-event-element): ...posn-at-x-y instead. + (t-mouse-make-event): Deal with Fedora Core 3. + (t-mouse-make-event): Don't sink the `stupid text mode menubar'. + (t-mouse-mouse-position-function): New function. Use it instead + of advising mouse-position. + (t-mouse-mode): New minor mode. + (t-mouse-stop, t-mouse-run): Remove. Use t-mouse-mode instead. + +2006-02-27 Glenn Morris + + * calendar/calendar.el (calendar-holidays): Doc fix. + +2006-02-27 Nick Roberts + + * 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. + (def-gdb-auto-update-handler, gdb-info-locals-handler) + (gdb-data-list-register-values-handler) + (gdb-stack-list-locals-handler): Try to preserve window-start as + well as window-point. + (gdb-display-source-buffer): New function (old concept). + (gdb-goto-breakpoint): Use it. + + * progmodes/gud.el (gud-display-line): Use gdb-display-source-buffer + for gdb-ui/gdb-mi (old concept). + +2006-02-27 Carsten Dominik + + * textmodes/reftex-index.el (reftex-index-map): Add `follow-mouse' + binding. + + * 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. + +2006-02-26 Luc Teirlinck + + * jka-cmpr-hook.el (jka-compr-compression-info-list) + (jka-compr-mode-alist-additions, jka-compr-load-suffixes): + Give :set functions to provide automatic updating. + Update docstring. Give compiler defvars early in the file + and move the defcustoms to a later spot where all called functions + are defined. + (jka-compr-file-name-handler-entry): Doc fix. + (jka-compr-compression-info-list--internal) + (jka-compr-mode-alist-additions--internal) + (jka-compr-load-suffixes--internal): New variables. + (jka-compr-install): Set the three above variables. + Update `load-file-rep-suffixes' instead of `load-suffixes'. + (jka-compr-update, jka-compr-set): New functions. + (auto-compression-mode): Doc fix. + + * jka-compr.el (jka-compr-uninstall): Replace `mapcar' with `mapc'. + Update `load-file-rep-suffixes' instead of `load-suffixes'. + Use jka-compr-compression-info-list--internal, + jka-compr-mode-alist-additions--internal and + jka-compr-load-suffixes--internal. + + * files.el (load-library): + * loadhist.el (file-loadhist-lookup): + * startup.el (command-line): + * subr.el (locate-library): + * emacs-lisp/autoload.el (update-directory-autoloads): + * emacs-lisp/find-func.el (find-library-suffixes): Use + `get-load-suffixes' instead of `load-suffixes'. + + * subr.el (locate-library): + * emacs-lisp/find-func.el (find-library-name): Use + `load-file-rep-suffixes' instead of '(""). + 2006-02-26 Kim F. Storm * ido.el (ido-save-history, ido-load-history): Simplify. Don't @@ -20,7 +166,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. @@ -53,8 +199,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. @@ -93,15 +239,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 @@ -182,6 +328,11 @@ * textmodes/reftex.el (reftex-locate-file): Search all extensions if `reftex-try-all-extensions' is set. + * textmodes/reftex-dcr.el (reftex-view-crossref): New argument to + 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 8f2b88ad38c4 -r 5754737d1e04 lisp/calc/calccomp.el --- a/lisp/calc/calccomp.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/calc/calccomp.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/calendar/calendar.el --- a/lisp/calendar/calendar.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/calendar/calendar.el Fri Mar 03 07:48:46 2006 +0000 @@ -1190,9 +1190,16 @@ of `general-holidays', `local-holidays' `christian-holidays', `hebrew-holidays', `islamic-holidays', `bahai-holidays', `oriental-holidays', or `solar-holidays' to nil in your .emacs file, -you can eliminate unwanted categories of holidays. The intention is -that (in the US) `local-holidays' be set in site-init.el and -`other-holidays' be set by the user. +you can eliminate unwanted categories of holidays. + +Note that these variables are only used to initialize the default +value of `calendar-holidays'. In other words, they only have an +effect on the displayed holidays if set before the calendar is +loaded. After the calendar has been loaded, you must customize +`calendar-holidays' directly. + +The intention is that (in the US) `local-holidays' be set in +site-init.el and `other-holidays' be set by the user. Entries on the list are expressions that return (possibly empty) lists of items of the form ((month day year) string) of a holiday in the in the diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/dframe.el --- a/lisp/dframe.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/dframe.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/emacs-lisp/autoload.el --- a/lisp/emacs-lisp/autoload.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/emacs-lisp/autoload.el Fri Mar 03 07:48:46 2006 +0000 @@ -512,7 +512,7 @@ directory or directories specified." (interactive "DUpdate autoloads from directory: ") (let* ((files-re (let ((tmp nil)) - (dolist (suf load-suffixes + (dolist (suf (get-load-suffixes) (concat "^[^=.].*" (regexp-opt tmp t) "\\'")) (unless (string-match "\\.elc" suf) (push suf tmp))))) (files (apply 'nconc diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/emacs-lisp/find-func.el --- a/lisp/emacs-lisp/find-func.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/emacs-lisp/find-func.el Fri Mar 03 07:48:46 2006 +0000 @@ -142,7 +142,7 @@ (defun find-library-suffixes () (let ((suffixes nil)) - (dolist (suffix load-suffixes (nreverse suffixes)) + (dolist (suffix (get-load-suffixes) (nreverse suffixes)) (unless (string-match "elc" suffix) (push suffix suffixes))))) (defun find-library-name (library) @@ -153,7 +153,7 @@ (setq library (replace-match "" t t library))) (or (locate-file library (or find-function-source-path load-path) - (append (find-library-suffixes) '(""))) + (append (find-library-suffixes) load-file-rep-suffixes)) (error "Can't find library %s" library))) (defvar find-function-C-source-directory diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/files.el --- a/lisp/files.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/files.el Fri Mar 03 07:48:46 2006 +0000 @@ -699,7 +699,7 @@ (interactive (list (completing-read "Load library: " 'locate-file-completion - (cons load-path load-suffixes)))) + (cons load-path (get-load-suffixes))))) (load library)) (defun file-remote-p (file) diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/ChangeLog Fri Mar 03 07:48:46 2006 +0000 @@ -1,3 +1,66 @@ +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 + first or last are nil. + +2006-02-24 Simon Josefsson + + * flow-fill.el (fill-flowed): Flow-fill unquoted lines too. + Merge of 2005-10-26 change from the trunk. + 2006-02-23 Lars Magne Ingebrigtsen * flow-fill.el (fill-flowed): Bind adaptive-fill-mode to nil. @@ -863,10 +926,9 @@ * pgg-parse.el (top-level): Don't require custom, it is autoloaded. (To sync with No Gnus.) -2005-05-09 Simon Josefsson - - * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Fix PIN caching, - tiny patch from "Georg C. F. Greve" . +2005-05-09 Georg C. F. Greve (tiny change) + + * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Fix PIN caching. 2005-10-08 Simon Josefsson @@ -2571,11 +2633,13 @@ * deuglify.el (gnus-outlook-deuglify): Add :version. - * html2text.el: Beautify code. Improve doc strings. Some checkdoc - cleanup. + * html2text.el: Beautify code. Improve doc strings. Some + checkdoc cleanup. (html2text-get-attr, html2text-fix-paragraph): Simplify code. - (html2text-format-tag-list): Add "strong" and "em". - From "Alfred M. Szmidt" (tiny change). + +2004-11-01 Alfred M. Szmidt (tiny change) + + * html2text.el (html2text-format-tag-list): Add "strong" and "em". 2004-10-29 Katsumi Yamaoka @@ -3436,14 +3500,13 @@ Check `starttls-use-gnutls' and pass on to corresponding *-gnutls function if it is set. -2004-08-31 Simon Josefsson +2004-08-30 Andreas Schwab * rfc2231.el (rfc2231-parse-string): Restore whitespace syntax for - ?* and ?\; (tiny patch). From Andreas Schwab . + ?* and ?\;. * ietf-drums.el (ietf-drums-syntax-table): Set syntax of ?* ?\; - and ?\' to symbol instead of whitespace (tiny patch). - From Andreas Schwab . + and ?\' to symbol instead of whitespace. 2004-08-31 Jesper Harder diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/dns.el --- a/lisp/gnus/dns.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/dns.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/flow-fill.el --- a/lisp/gnus/flow-fill.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/flow-fill.el Fri Mar 03 07:48:46 2006 +0000 @@ -121,7 +121,7 @@ (while (re-search-forward " $" nil t) (when (save-excursion (beginning-of-line) - (looking-at "^\\(>+\\)\\( ?\\)")) + (looking-at "^\\(>*\\)\\( ?\\)")) (let ((quote (match-string 1)) sig) (if (string= quote "") diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/gnus-draft.el --- a/lisp/gnus/gnus-draft.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/gnus-draft.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/gnus-int.el --- a/lisp/gnus/gnus-int.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/gnus-int.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/gnus-sum.el Fri Mar 03 07:48:46 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) @@ -6452,10 +6455,12 @@ (setq nlast (if (atom (cadr read)) (cadr read) (caadr read))) (setq read (cdr read))))) ;; And add the last unread articles. - (cond ((< first last) - (push (cons first last) unread)) - ((= first last) - (push first unread))) + (cond ((not (and first last)) + nil) + ((< first last) + (push (cons first last) unread)) + ((= first last) + (push first unread))) ;; Return the sequence of unread articles. (delq 0 (nreverse unread)))) diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/mm-decode.el --- a/lisp/gnus/mm-decode.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/mm-decode.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/mm-util.el --- a/lisp/gnus/mm-util.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/mm-util.el Fri Mar 03 07:48:46 2006 +0000 @@ -727,11 +727,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 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/mml.el --- a/lisp/gnus/mml.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/mml.el Fri Mar 03 07:48:46 2006 +0000 @@ -506,7 +506,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 8f2b88ad38c4 -r 5754737d1e04 lisp/gnus/nnweb.el --- a/lisp/gnus/nnweb.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/gnus/nnweb.el Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lisp/textmodes/reftex-index.el --- a/lisp/textmodes/reftex-index.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/textmodes/reftex-index.el Fri Mar 03 07:48:46 2006 +0000 @@ -1034,6 +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-link] 'mouse-face) (substitute-key-definition 'next-line 'reftex-index-next reftex-index-map global-map) diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/textmodes/reftex-sel.el --- a/lisp/textmodes/reftex-sel.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/textmodes/reftex-sel.el Fri Mar 03 07:48:46 2006 +0000 @@ -685,7 +685,9 @@ ;; The mouse-2 binding (if (featurep 'xemacs) (define-key map [(button2)] 'reftex-select-mouse-accept) - (define-key map [(mouse-2)] 'reftex-select-mouse-accept)) + (define-key map [(mouse-2)] 'reftex-select-mouse-accept) + (define-key map [follow-link] 'mouse-face)) + ;; Digit arguments (loop for key across "0123456789" do diff -r 8f2b88ad38c4 -r 5754737d1e04 lisp/textmodes/reftex-toc.el --- a/lisp/textmodes/reftex-toc.el Fri Mar 03 05:16:17 2006 +0000 +++ b/lisp/textmodes/reftex-toc.el Fri Mar 03 07:48:46 2006 +0000 @@ -1011,6 +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-link] 'mouse-face) (substitute-key-definition 'next-line 'reftex-toc-next reftex-toc-map global-map) diff -r 8f2b88ad38c4 -r 5754737d1e04 lispref/ChangeLog --- a/lispref/ChangeLog Fri Mar 03 05:16:17 2006 +0000 +++ b/lispref/ChangeLog Fri Mar 03 07:48:46 2006 +0000 @@ -1,3 +1,26 @@ +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. + + * files.texi (Locating Files): Suggest additional values for the + SUFFIXES arg of `locate-file'. Update pxref. + + * loading.texi (Loading): Include new node "Load Suffixes" in menu. + (How Programs Do Loading): Discuss the effects of Auto Compression + mode on `load'. + (Load Suffixes): New node. + (Library Search): Delete description of `load-suffixes'; it was + moved to "Load Suffixes". + (Autoload, Named Features): Mention `load-suffixes'. + 2006-02-21 Giorgos Keramidas (tiny change) * display.texi (Fringe Indicators, Fringe Cursors): Fix typos. diff -r 8f2b88ad38c4 -r 5754737d1e04 lispref/elisp.texi --- a/lispref/elisp.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/lispref/elisp.texi Fri Mar 03 07:48:46 2006 +0000 @@ -78,7 +78,7 @@ @ifnottex @node Top, Introduction, (dir), (dir) -@top Emacs Lisp +@top Emacs Lisp This Info file contains edition @value{VERSION} of the GNU Emacs Lisp Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}. @@ -438,6 +438,7 @@ Loading * How Programs Do Loading:: The @code{load} function and others. +* Load Suffixes:: Details about the suffixes that @code{load} tries. * Library Search:: Finding a library to load. * Loading Non-ASCII:: Non-@acronym{ASCII} characters in Emacs Lisp files. * Autoload:: Setting up a function to autoload. diff -r 8f2b88ad38c4 -r 5754737d1e04 lispref/files.texi --- a/lispref/files.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/lispref/files.texi Fri Mar 03 07:48:46 2006 +0000 @@ -1283,8 +1283,9 @@ suffixes. If @var{suffixes} is @code{nil}, or @code{("")}, then there are no suffixes, and @var{filename} is used only as-is. Typical values of @var{suffixes} are @code{exec-suffixes} (@pxref{Subprocess -Creation, exec-suffixes}) and @code{load-suffixes} (@pxref{Library -Search, load-suffixes}). +Creation, exec-suffixes}), @code{load-suffixes}, +@code{load-file-rep-suffixes} and the return value of the function +@code{get-load-suffixes} (@pxref{Load Suffixes}). Typical values for @var{path} are @code{exec-path} (@pxref{Subprocess Creation, exec-path}) when looking for executable programs or diff -r 8f2b88ad38c4 -r 5754737d1e04 lispref/keymaps.texi --- a/lispref/keymaps.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/lispref/keymaps.texi Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 lispref/loading.texi --- a/lispref/loading.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/lispref/loading.texi Fri Mar 03 07:48:46 2006 +0000 @@ -36,6 +36,7 @@ @menu * How Programs Do Loading:: The @code{load} function and others. +* Load Suffixes:: Details about the suffixes that @code{load} tries. * Library Search:: Finding a library to load. * Loading Non-ASCII:: Non-@acronym{ASCII} characters in Emacs Lisp files. * Autoload:: Setting up a function to autoload. @@ -72,17 +73,27 @@ @var{filename}. In the perverse case of a file named @file{foo.el.el}, evaluation of @code{(load "foo.el")} will indeed find it.) -If the optional argument @var{nosuffix} is non-@code{nil}, then the -suffixes @samp{.elc} and @samp{.el} are not tried. In this case, you -must specify the precise file name you want. By specifying the precise -file name and using @code{t} for @var{nosuffix}, you can prevent -perverse file names such as @file{foo.el.el} from being tried. +If Auto Compression mode is enabled, as it is by default, then +if @code{load} can not find a file, it searches for a compressed +version of the file before trying other file names. It decompresses +and loads it if it exists. It looks for compressed versions by +appending the suffixes in @code{jka-compr-load-suffixes} to the file +name. The value of this variable must be a list of strings. Its +standard value is @code{(".gz")}. + +If the optional argument @var{nosuffix} is non-@code{nil}, then +@code{load} does not try the suffixes @samp{.elc} and @samp{.el}. In +this case, you must specify the precise file name you want, except +that, if Auto Compression mode is enabled, @code{load} will still use +@code{jka-compr-load-suffixes} to find compressed versions. By +specifying the precise file name and using @code{t} for +@var{nosuffix}, you can prevent perverse file names such as +@file{foo.el.el} from being tried. If the optional argument @var{must-suffix} is non-@code{nil}, then @code{load} insists that the file name used must end in either -@samp{.el} or @samp{.elc}, unless it contains an explicit directory -name. If @var{filename} does not contain an explicit directory name, -and does not end in a suffix, then @code{load} insists on adding one. +@samp{.el} or @samp{.elc} (possibly extended with a compression +suffix), unless it contains an explicit directory name. If @var{filename} is a relative file name, such as @file{foo} or @file{baz/foo.bar}, @code{load} searches for the file using the variable @@ -127,8 +138,10 @@ @deffn Command load-file filename This command loads the file @var{filename}. If @var{filename} is a relative file name, then the current default directory is assumed. -@code{load-path} is not used, and suffixes are not appended. Use this -command if you wish to specify precisely the file name to load. +This command does not use @code{load-path}, and does not append +suffixes. However, it does look for compressed versions (if Auto +Compression Mode is enabled). Use this command if you wish to specify +precisely the file name to load. @end deffn @deffn Command load-library library @@ -158,6 +171,52 @@ For information about how @code{load} is used in building Emacs, see @ref{Building Emacs}. +@node Load Suffixes +@section Load Suffixes +We now describe some technical details about the exact suffixes that +@code{load} tries. + +@defvar load-suffixes +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 +the behavior described in the previous section. +@end defvar + +@defvar load-file-rep-suffixes +This is a list of suffixes that indicate representations of the same +file. This list should normally start with the empty string. +When @code{load} searches for a file it appends the suffixes in this +list, in order, to the file name, before searching for another file. + +Enabling Auto Compression mode appends the suffixes in +@code{jka-compr-load-suffixes} to this list and disabling Auto +Compression mode removes them again. The standard value of +@code{load-file-rep-suffixes} if Auto Compression mode is disabled is +@code{("")}. Given that the standard value of +@code{jka-compr-load-suffixes} is @code{(".gz")}, the standard value +of @code{load-file-rep-suffixes} if Auto Compression mode is enabled +is @code{("" ".gz")}. +@end defvar + +@defun get-load-suffixes +This function returns the list of all suffixes that @code{load} should +try, in order, when its @var{must-suffix} argument is non-@code{nil}. +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 +Compression mode is enabled and @code{(".elc" ".el")} if Auto +Compression mode is disabled. +@end defun + +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 skips the former group, and if @var{must-suffix} is non-@code{nil}, +it skips the latter group. + @node Library Search @section Library Search @@ -288,13 +347,6 @@ tells @code{locate-library} to display the file name in the echo area. @end deffn -@defvar load-suffixes -This variable is a list of suffixes (strings) that @code{load} should -try adding to the specified file name. The default value is -@code{(".elc" ".elc.gz" ".el" ".el.gz" ".gz")}. There is no need to -include the null suffix. -@end defvar - @node Loading Non-ASCII @section Loading Non-@acronym{ASCII} Characters @@ -362,7 +414,8 @@ If @var{filename} does not contain either a directory name, or the suffix @code{.el} or @code{.elc}, then @code{autoload} insists on adding one of these suffixes, and it will not load from a file whose name is -just @var{filename} with no added suffix. +just @var{filename} with no added suffix. (The variable +@code{load-suffixes} specifies the exact required suffixes.) The argument @var{docstring} is the documentation string for the function. Specifying the documentation string in the call to @@ -699,8 +752,10 @@ 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 suffix; a file whose name is just @var{feature} won't be -used. +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.) If @var{noerror} is non-@code{nil}, that suppresses errors from actual loading of the file. In that case, @code{require} returns @code{nil} diff -r 8f2b88ad38c4 -r 5754737d1e04 man/ChangeLog --- a/man/ChangeLog Fri Mar 03 05:16:17 2006 +0000 +++ b/man/ChangeLog Fri Mar 03 07:48:46 2006 +0000 @@ -1,3 +1,22 @@ +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 =. + +2006-02-27 Simon Josefsson + + * emacs-mime.texi (Flowed text): Add mm-fill-flowed. (Sync + 2004-01-27 from the trunk). + 2006-02-24 Alan Mackenzie * cc-mode.texi: Rename c-hungry-backspace to diff -r 8f2b88ad38c4 -r 5754737d1e04 man/emacs-mime.texi --- a/man/emacs-mime.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/man/emacs-mime.texi Fri Mar 03 07:48:46 2006 +0000 @@ -983,7 +983,11 @@ @code{fill-flowed-display-column}. The default is to wrap after @code{fill-column}. - +@table @code +@item mm-fill-flowed +@vindex mm-fill-flowed +If non-@code{nil} a format=flowed article will be displayed flowed. +@end table @node Interface Functions diff -r 8f2b88ad38c4 -r 5754737d1e04 man/files.texi --- a/man/files.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/man/files.texi Fri Mar 03 07:48:46 2006 +0000 @@ -1661,11 +1661,11 @@ the options in @code{vc-rcs-diff-switches}. The @samp{vc@dots{}diff-switches} variables are @code{nil} by default. - Unlike the @kbd{M-x diff} command, @kbd{C-x v =} does not try to -locate the changes in the old and new versions. This is because -normally one or both versions do not exist as files when you compare -them; they exist only in the records of the master file. -@xref{Comparing Files}, for more information about @kbd{M-x diff}. + The buffer produced by @kbd{C-x v =} supports the commands of +Compilation mode (@pxref{Compilation Mode}), such as @kbd{C-x `} and +@kbd{C-c C-c}, in both the ``old'' and ``new'' text, and they always +find the corresponding locations in the current work file. (Older +versions are not, in general, present as files on your disk.) @findex vc-annotate @kindex C-x v g diff -r 8f2b88ad38c4 -r 5754737d1e04 man/org.texi --- a/man/org.texi Fri Mar 03 05:16:17 2006 +0000 +++ b/man/org.texi Fri Mar 03 07:48:46 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 8f2b88ad38c4 -r 5754737d1e04 src/ChangeLog --- a/src/ChangeLog Fri Mar 03 05:16:17 2006 +0000 +++ b/src/ChangeLog Fri Mar 03 07:48:46 2006 +0000 @@ -1,8 +1,87 @@ +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 + argument. + + * xterm.c: (x_load_font, x_term_init, XTmouse_position) + (handle_one_xevent, x_connection_closed, x_list_fonts): No arg for + x_uncatch_errors. + + * xselect.c (x_own_selection, x_decline_selection_request) + (x_reply_selection_request, x_get_foreign_selection) + (Fx_get_atom_name, Fx_send_client_event): Likewise. + + * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): + Likewise. + +2006-02-26 Luc Teirlinck + + * lread.c: Declare Vload_file_rep_suffixes instead of + deleted variable default_suffixes. + (Fget_load_suffixes): New function. + (Fload): Use Fget_load_suffixes and Vload_file_rep_suffixes. + No longer use deleted variable default_suffixes. Update docstring. + (syms_of_lread): defsubr Sget_load_suffixes. + Expand `load-suffixes' docstring. + Delete default_suffixes and DEFVAR_LISP the new variable + `load-file-rep-suffixes'. + + * w32.c (check_windows_init_file): Use Fget_load_suffixes instead + of Vload_suffixes. + + * lisp.h: EXFUN Fget_load_suffixes. + Extern Vload_file_rep_suffixes. + + * eval.c (specpdl_ptr): Remove volatile qualifier for consistency + with lisp.h. + +2006-02-26 Stefan Monnier + + * lisp.h (struct specbinding, specpdl_ptr): Remove the volatile + qualifier which was trying to avoid the bug that was fixed by + yesterday's changes to xterm.c. + 2006-02-25 Chong Yidong * xterm.h (x_catch_errors) Return value changed to void. - (x_uncatch_errors): Unused count argument deleted. - + (x_uncatch_errors): Delete unused count argument. + * xterm.c (x_catch_errors): Don't use record_unwind_protect, since it can be called in a signal handler. (x_catch_errors_unwind): Function deleted. diff -r 8f2b88ad38c4 -r 5754737d1e04 src/eval.c --- a/src/eval.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/eval.c Fri Mar 03 07:48:46 2006 +0000 @@ -117,7 +117,7 @@ /* Pointer to first unused element in specpdl. */ -volatile struct specbinding *specpdl_ptr; +struct specbinding *specpdl_ptr; /* Maximum size allowed for specpdl allocation */ diff -r 8f2b88ad38c4 -r 5754737d1e04 src/frame.h --- a/src/frame.h Fri Mar 03 05:16:17 2006 +0000 +++ b/src/frame.h Fri Mar 03 07:48:46 2006 +0000 @@ -222,6 +222,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 8f2b88ad38c4 -r 5754737d1e04 src/lisp.h --- a/src/lisp.h Fri Mar 03 05:16:17 2006 +0000 +++ b/src/lisp.h Fri Mar 03 07:48:46 2006 +0000 @@ -1754,13 +1754,13 @@ struct specbinding { - volatile Lisp_Object symbol, old_value; - volatile specbinding_func func; + Lisp_Object symbol, old_value; + specbinding_func func; Lisp_Object unused; /* Dividing by 16 is faster than by 12 */ }; extern struct specbinding *specpdl; -extern volatile struct specbinding *specpdl_ptr; +extern struct specbinding *specpdl_ptr; extern int specpdl_size; extern EMACS_INT max_specpdl_size; @@ -2638,6 +2638,7 @@ EXFUN (Fintern, 2); EXFUN (Fintern_soft, 2); EXFUN (Fload, 5); +EXFUN (Fget_load_suffixes, 0); EXFUN (Fget_file_char, 0); EXFUN (Fread_char, 2); EXFUN (Fread_event, 2); @@ -2649,7 +2650,7 @@ #define LOADHIST_ATTACH(x) \ if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list) extern Lisp_Object Vcurrent_load_list; -extern Lisp_Object Vload_history, Vload_suffixes; +extern Lisp_Object Vload_history, Vload_suffixes, Vload_file_rep_suffixes; extern int openp P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object *, Lisp_Object)); extern int isfloat_string P_ ((char *)); diff -r 8f2b88ad38c4 -r 5754737d1e04 src/lread.c --- a/src/lread.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/lread.c Fri Mar 03 07:48:46 2006 +0000 @@ -106,7 +106,7 @@ Lisp_Object Vsource_directory; /* Search path and suffixes for files to be loaded. */ -Lisp_Object Vload_path, Vload_suffixes, default_suffixes; +Lisp_Object Vload_path, Vload_suffixes, Vload_file_rep_suffixes; /* File name of user's init file. */ Lisp_Object Vuser_init_file; @@ -832,28 +832,64 @@ return Qnil; } +DEFUN ("get-load-suffixes", Fget_load_suffixes, Sget_load_suffixes, 0, 0, 0, + doc: /* Return the suffixes that `load' should try if a suffix is \ +required. +This uses the variables `load-suffixes' and `load-file-rep-suffixes'. */) + () +{ + Lisp_Object lst = Qnil, suffixes = Vload_suffixes, suffix, ext; + while (CONSP (suffixes)) + { + Lisp_Object exts = Vload_file_rep_suffixes; + suffix = XCAR (suffixes); + suffixes = XCDR (suffixes); + while (CONSP (exts)) + { + ext = XCAR (exts); + exts = XCDR (exts); + lst = Fcons (concat2 (suffix, ext), lst); + } + } + return Fnreverse (lst); +} + DEFUN ("load", Fload, Sload, 1, 5, 0, doc: /* Execute a file of Lisp code named FILE. First try FILE with `.elc' appended, then try with `.el', - then try FILE unmodified (the exact suffixes are determined by -`load-suffixes'). Environment variable references in FILE - are replaced with their values by calling `substitute-in-file-name'. +then try FILE unmodified (the exact suffixes in the exact order are +determined by `load-suffixes'). Environment variable references in +FILE are replaced with their values by calling `substitute-in-file-name'. This function searches the directories in `load-path'. + If optional second arg NOERROR is non-nil, - report no error if FILE doesn't exist. +report no error if FILE doesn't exist. Print messages at start and end of loading unless - optional third arg NOMESSAGE is non-nil. +optional third arg NOMESSAGE is non-nil. If optional fourth arg NOSUFFIX is non-nil, don't try adding - suffixes `.elc' or `.el' to the specified name FILE. +suffixes `.elc' or `.el' to the specified name FILE. If optional fifth arg MUST-SUFFIX is non-nil, insist on - the suffix `.elc' or `.el'; don't accept just FILE unless - it ends in one of those suffixes or includes a directory name. +the suffix `.elc' or `.el'; don't accept just FILE unless +it ends in one of those suffixes or includes a directory name. + +If this function fails to find a file, it may look for different +representations of that file before trying another file. +It does so by adding the non-empty suffixes in `load-file-rep-suffixes' +to the file name. Emacs uses this feature mainly to find compressed +versions of files when Auto Compression mode is enabled. + +The exact suffixes that this function tries out, in the exact order, +are given by the value of the variable `load-file-rep-suffixes' if +NOSUFFIX is non-nil and by the return value of the function +`get-load-suffixes' if MUST-SUFFIX is non-nil. If both NOSUFFIX and +MUST-SUFFIX are nil, this function first tries out the latter suffixes +and then the former. Loading a file records its definitions, and its `provide' and `require' calls, in an element of `load-history' whose car is the file name loaded. See `load-history'. -Return t if file exists. */) +Return t if the file exists and loads successfully. */) (file, noerror, nomessage, nosuffix, must_suffix) Lisp_Object file, noerror, nomessage, nosuffix, must_suffix; { @@ -930,9 +966,9 @@ fd = openp (Vload_path, file, (!NILP (nosuffix) ? Qnil - : !NILP (must_suffix) ? Vload_suffixes - : Fappend (2, (tmp[0] = Vload_suffixes, - tmp[1] = default_suffixes, + : !NILP (must_suffix) ? Fget_load_suffixes () + : Fappend (2, (tmp[0] = Fget_load_suffixes (), + tmp[1] = Vload_file_rep_suffixes, tmp))), &found, Qnil); UNGCPRO; @@ -1303,7 +1339,7 @@ fn = (char *) alloca (fn_size = 100 + want_size); /* Loop over suffixes. */ - for (tail = NILP (suffixes) ? default_suffixes : suffixes; + for (tail = NILP (suffixes) ? Fcons (build_string (""), Qnil) : suffixes; CONSP (tail); tail = XCDR (tail)) { int lsuffix = SBYTES (XCAR (tail)); @@ -3979,6 +4015,7 @@ defsubr (&Sintern); defsubr (&Sintern_soft); defsubr (&Sunintern); + defsubr (&Sget_load_suffixes); defsubr (&Sload); defsubr (&Seval_buffer); defsubr (&Seval_region); @@ -4040,13 +4077,27 @@ otherwise to default specified by file `epaths.h' when Emacs was built. */); DEFVAR_LISP ("load-suffixes", &Vload_suffixes, - doc: /* *List of suffixes to try for files to load. -This list should not include the empty string. */); + doc: /* List of suffixes for (compiled or source) Emacs Lisp files. +This list should not include the empty string. +`load' and related functions try to append these suffixes, in order, +to the specified file name if a Lisp suffix is allowed or required. */); Vload_suffixes = Fcons (build_string (".elc"), Fcons (build_string (".el"), Qnil)); + DEFVAR_LISP ("load-file-rep-suffixes", &Vload_file_rep_suffixes, + doc: /* List of suffixes that indicate representations of \ +the same file. +This list should normally start with the empty string. + +Enabling Auto Compression mode appends the suffixes in +`jka-compr-load-suffixes' to this list and disabling Auto Compression +mode removes them again. `load' and related functions use this list to +determine whether they should look for compressed versions of a file +and, if so, which suffixes they should try to append to the file name +in order to do so. However, if you want to customize which suffixes +the loading functions recognize as compression suffixes, you should +customize `jka-compr-load-suffixes' rather than the present variable. */); /* We don't use empty_string because it's not initialized yet. */ - default_suffixes = Fcons (build_string (""), Qnil); - staticpro (&default_suffixes); + Vload_file_rep_suffixes = Fcons (build_string (""), Qnil); DEFVAR_BOOL ("load-in-progress", &load_in_progress, doc: /* Non-nil iff inside of `load'. */); diff -r 8f2b88ad38c4 -r 5754737d1e04 src/search.c --- a/src/search.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/search.c Fri Mar 03 07:48:46 2006 +0000 @@ -3042,7 +3042,7 @@ for (; in != end; in++) { - if (*in == '[' || *in == ']' + if (*in == '[' || *in == '*' || *in == '.' || *in == '\\' || *in == '?' || *in == '+' || *in == '^' || *in == '$') diff -r 8f2b88ad38c4 -r 5754737d1e04 src/w32.c --- a/src/w32.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/w32.c Fri Mar 03 07:48:46 2006 +0000 @@ -3888,7 +3888,7 @@ objs[1] = decode_env_path (0, (getenv ("EMACSLOADPATH"))); full_load_path = Fappend (2, objs); init_file = build_string ("term/w32-win"); - fd = openp (full_load_path, init_file, Vload_suffixes, NULL, Qnil); + fd = openp (full_load_path, init_file, Fget_load_suffixes (), NULL, Qnil); if (fd < 0) { Lisp_Object load_path_print = Fprin1_to_string (full_load_path, Qnil); diff -r 8f2b88ad38c4 -r 5754737d1e04 src/window.c --- a/src/window.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/window.c Fri Mar 03 07:48:46 2006 +0000 @@ -50,6 +50,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; @@ -4721,9 +4722,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); @@ -4787,9 +4788,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; @@ -4926,10 +4936,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 @@ -4983,15 +4992,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)); } @@ -6988,6 +6991,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 8f2b88ad38c4 -r 5754737d1e04 src/xdisp.c --- a/src/xdisp.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/xdisp.c Fri Mar 03 07:48:46 2006 +0000 @@ -270,6 +270,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; @@ -855,7 +861,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)); @@ -966,7 +972,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)); @@ -9530,11 +9536,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; @@ -9590,11 +9602,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. */ @@ -9618,11 +9641,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; @@ -9638,8 +9663,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); } @@ -9669,7 +9697,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); } } @@ -9714,9 +9742,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. */ @@ -9749,7 +9818,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; @@ -23817,6 +23886,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 8f2b88ad38c4 -r 5754737d1e04 src/xfns.c --- a/src/xfns.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/xfns.c Fri Mar 03 07:48:46 2006 +0000 @@ -667,7 +667,7 @@ had_errors = x_had_errors_p (FRAME_X_DISPLAY (f)); } - x_uncatch_errors (FRAME_X_DISPLAY (f)); + x_uncatch_errors (); UNBLOCK_INPUT; @@ -1022,7 +1022,7 @@ /* Check and report errors with the above calls. */ x_check_errors (dpy, "can't set cursor shape: %s"); - x_uncatch_errors (dpy); + x_uncatch_errors (); { XColor fore_color, back_color; @@ -3427,7 +3427,7 @@ x_catch_errors (dpy); XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), RevertToParent, CurrentTime); - x_uncatch_errors (dpy); + x_uncatch_errors (); UNBLOCK_INPUT; return Qnil; diff -r 8f2b88ad38c4 -r 5754737d1e04 src/xselect.c --- a/src/xselect.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/xselect.c Fri Mar 03 07:48:46 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)); @@ -410,7 +411,7 @@ x_catch_errors (display); XSetSelectionOwner (display, selection_atom, selecting_window, time); x_check_errors (display, "Can't set selection: %s"); - x_uncatch_errors (display); + x_uncatch_errors (); UNBLOCK_INPUT; /* Now update the local cache */ @@ -586,7 +587,7 @@ x_catch_errors (reply.display); XSendEvent (reply.display, reply.requestor, False, 0L, (XEvent *) &reply); XFlush (reply.display); - x_uncatch_errors (reply.display); + x_uncatch_errors (); UNBLOCK_INPUT; } @@ -611,6 +612,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 @@ -703,8 +713,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 @@ -858,9 +871,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 (display); UNBLOCK_INPUT; } @@ -1370,7 +1382,7 @@ Atom selection_atom = symbol_to_x_atom (dpyinfo, display, selection_symbol); Atom type_atom; int secs, usecs; - int count; + int count = SPECPDL_INDEX (); Lisp_Object frame; if (CONSP (target_type)) @@ -1392,6 +1404,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", @@ -1409,8 +1425,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. */ @@ -1432,9 +1446,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 (display); UNBLOCK_INPUT; if (NILP (XCAR (reading_selection_reply))) @@ -2655,6 +2670,7 @@ Lisp_Object ret = Qnil; Display *dpy = FRAME_X_DISPLAY (f); Atom atom; + int had_errors; if (INTEGERP (value)) atom = (Atom) XUINT (value); @@ -2667,14 +2683,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 (dpy); - if (atom && name) XFree (name); if (NILP (ret)) ret = make_string ("", 0); @@ -2849,7 +2864,7 @@ XSendEvent (dpyinfo->display, wdest, propagate, mask, &event); XFlush (dpyinfo->display); } - x_uncatch_errors (dpyinfo->display); + x_uncatch_errors (); UNBLOCK_INPUT; return Qnil; diff -r 8f2b88ad38c4 -r 5754737d1e04 src/xterm.c --- a/src/xterm.c Fri Mar 03 05:16:17 2006 +0000 +++ b/src/xterm.c Fri Mar 03 07:48:46 2006 +0000 @@ -326,7 +326,7 @@ static int x_io_error_quitter P_ ((Display *)); void x_catch_errors P_ ((Display *)); -void x_uncatch_errors P_ ((Display *)); +void x_uncatch_errors P_ ((void)); void x_lower_frame P_ ((struct frame *)); void x_scroll_bar_clear P_ ((struct frame *)); int x_had_errors_p P_ ((Display *)); @@ -3877,7 +3877,7 @@ if (x_had_errors_p (FRAME_X_DISPLAY (*fp))) f1 = 0; - x_uncatch_errors (FRAME_X_DISPLAY (*fp)); + x_uncatch_errors (); /* If not, is it one of our scroll bars? */ if (! f1) @@ -5803,7 +5803,7 @@ /* This is needed to detect the error if there is an error. */ XSync (d, False); - x_uncatch_errors (d); + x_uncatch_errors (); } /* Not certain about handling scroll bars here */ #endif /* 0 */ @@ -7585,19 +7585,16 @@ DPY should be the display that was passed to x_catch_errors. */ void -x_uncatch_errors (dpy) - Display *dpy; +x_uncatch_errors () { struct x_error_message_stack *tmp; - eassert (x_error_message && dpy == x_error_message->dpy); - /* The display may have been closed before this function is called. Check if it is still open before calling XSync. */ - if (x_display_info_for_display (dpy) != 0) + if (x_display_info_for_display (x_error_message->dpy) != 0) { BLOCK_INPUT; - XSync (dpy, False); + XSync (x_error_message->dpy, False); UNBLOCK_INPUT; } @@ -7622,7 +7619,7 @@ { char string[X_ERROR_MESSAGE_SIZE]; bcopy (x_error_message->string, string, X_ERROR_MESSAGE_SIZE); - x_uncatch_errors (dpy); + x_uncatch_errors (); error (format, string); } } @@ -7782,7 +7779,7 @@ if (dpyinfo) x_delete_display (dpyinfo); - x_uncatch_errors (dpy); + x_uncatch_errors (); if (x_display_list == 0) { @@ -9525,7 +9522,7 @@ } } - x_uncatch_errors (dpy); + x_uncatch_errors (); UNBLOCK_INPUT; if (names) @@ -9626,7 +9623,7 @@ thisinfo = NULL; x_clear_errors (dpy); } - x_uncatch_errors (dpy); + x_uncatch_errors (); UNBLOCK_INPUT; if (thisinfo) @@ -9829,7 +9826,7 @@ font = NULL; x_clear_errors (FRAME_X_DISPLAY (f)); } - x_uncatch_errors (FRAME_X_DISPLAY (f)); + x_uncatch_errors (); UNBLOCK_INPUT; if (!font) return NULL; @@ -10769,7 +10766,7 @@ abort (); if (x_had_errors_p (dpy) || !XQueryFont (dpy, font)) XrmPutLineResource (&xrdb, "Emacs.dialog.*.font: 9x15"); - x_uncatch_errors (dpy); + x_uncatch_errors (); } #endif #endif diff -r 8f2b88ad38c4 -r 5754737d1e04 src/xterm.h --- a/src/xterm.h Fri Mar 03 05:16:17 2006 +0000 +++ b/src/xterm.h Fri Mar 03 07:48:46 2006 +0000 @@ -963,7 +963,7 @@ void x_wm_set_size_hint P_ ((struct frame *, long, int)); void x_catch_errors P_ ((Display *)); int x_had_errors_p P_ ((Display *)); -void x_uncatch_errors P_ ((Display *)); +void x_uncatch_errors P_ ((void)); void x_check_errors P_ ((Display *, char *)); int x_text_icon P_ ((struct frame *, char *)); int x_bitmap_icon P_ ((struct frame *, Lisp_Object)); @@ -980,7 +980,7 @@ extern void x_catch_errors P_ ((Display *)); extern void x_check_errors P_ ((Display *, char *)); extern int x_had_errors_p P_ ((Display *)); -extern void x_uncatch_errors P_ ((Display *)); +extern void x_uncatch_errors P_ ((void)); extern void x_set_window_size P_ ((struct frame *, int, int, int)); extern void x_set_mouse_position P_ ((struct frame *, int, int)); extern void x_set_mouse_pixel_position P_ ((struct frame *, int, int));