# HG changeset patch # User Jan D. # Date 1267035047 -3600 # Node ID 10f33dae12b73454c87a95b160801ca3559a0d9a # Parent 6f4137affc728b75f413f9ecdfb52746a9dda4ae# Parent 27eb4f0880755de8de46eb7ea506e6825066885d Merge from trunk diff -r 6f4137affc72 -r 10f33dae12b7 doc/emacs/ChangeLog --- a/doc/emacs/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/doc/emacs/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,8 @@ +2010-02-21 Chong Yidong + + * frames.texi (Frame Commands): Note that the last ordinary frame can + be deleted in daemon mode (Bug#5616). + 2010-02-18 Glenn Morris * trouble.texi (Contributing): Repository is no longer CVS. diff -r 6f4137affc72 -r 10f33dae12b7 doc/emacs/frames.texi --- a/doc/emacs/frames.texi Fri Feb 19 14:11:21 2010 +0100 +++ b/doc/emacs/frames.texi Wed Feb 24 19:10:47 2010 +0100 @@ -622,18 +622,24 @@ Delete all frames except the selected one. @end table + The @kbd{C-x 5 0} (@code{delete-frame}) command will never delete +the last frame, to prevent you from losing the ability to interact +with the Emacs process. Note that when Emacs is run as a daemon +(@pxref{Emacs Server}), there is always a ``virtual frame'' that +remains after all the ordinary, interactive frames are deleted. In +this case, @kbd{C-x 5 0} can delete the last interactive frame; you +can use @command{emacsclient} to reconnect to the Emacs session. + @vindex focus-follows-mouse - To make the command @kbd{C-x 5 o} work properly, you should tell -Emacs how the system (or the window manager) handles focus-switching -between windows. There are two possibilities: either simply moving -the mouse onto a window selects it (gives it focus), or you have to -click on it to do so. On X, this focus policy also affects whether -the focus is given to a frame that Emacs raises. Unfortunately there -is no way Emacs can find out automatically which way the system -handles this, so you have to explicitly say, by setting the variable -@code{focus-follows-mouse}. If just moving the mouse onto a window -selects it, that variable should be @code{t}; if a click is necessary, -the variable should be @code{nil}. The default is @code{t}. + On X, you may have to tell Emacs how the system (or the window +manager) handles focus-switching between windows, in order for the +command @kbd{C-x 5 o} (@code{other-frame}) to work properly. +Unfortunately, there is no way for Emacs to detect this automatically, +so you should set the variable @code{focus-follows-mouse}. If simply +moving the mouse onto a window selects it and gives it focus, the +variable should be @code{t}; if you have to click on the window to +select it, the variable should be @code{nil}. The default is +@code{t}. The window manager that is part of MS-Windows always gives focus to a frame that raises, so this variable has no effect in the native diff -r 6f4137affc72 -r 10f33dae12b7 lib-src/ChangeLog --- a/lib-src/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/lib-src/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,8 @@ +2010-02-20 Kevin Ryde + + * etags.c (Scheme_functions): Don't loop past a null character + (Bug#5601). + 2010-01-29 Kester Habermann (tiny change) * etags.c (Fortran_functions): Handle recursive keyword diff -r 6f4137affc72 -r 10f33dae12b7 lib-src/etags.c --- a/lib-src/etags.c Fri Feb 19 14:11:21 2010 +0100 +++ b/lib-src/etags.c Wed Feb 24 19:10:47 2010 +0100 @@ -5004,8 +5004,9 @@ if (strneq (bp, "(def", 4) || strneq (bp, "(DEF", 4)) { bp = skip_non_spaces (bp+4); - /* Skip over open parens and white space */ - while (notinname (*bp)) + /* Skip over open parens and white space. Don't continue past + '\0'. */ + while (*bp && notinname (*bp)) bp++; get_tag (bp, NULL); } diff -r 6f4137affc72 -r 10f33dae12b7 lisp/ChangeLog --- a/lisp/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,59 @@ +2010-02-24 Chong Yidong + + * files.el (hack-local-variables-filter): For eval forms, also + check safe-local-variable-p (Bug#5636). + +2010-02-24 Eduard Wiebe + + * javascript.el (wisent-javascript-jv-expand-tag): Avoid c(ad)ddr + and use c(ad)r of cddr (Bug#5640). + +2010-02-22 Michael Albinus + + * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Protect + setting the modes by `ignore-errors'. It might fail, for example + if the file is not owned by the user but the group. + (tramp-handle-write-region): Ensure, that `tmpfile' is always readable. + +2010-02-21 Chong Yidong + + * files.el (directory-listing-before-filename-regexp): Use + stricter matching for iso-style dates, to avoid false matches with + date-like filenames (Bug#5597). + + * htmlfontify.el (htmlfontify): Doc fix. + + * eshell/eshell.el (eshell): Doc fix. + + * startup.el (fancy-about-screen): In mode-line, apply + mode-line-buffer-id face only to the buffer name (Bug#5613). + +2010-02-20 Kevin Ryde + + * progmodes/compile.el (compilation-error-regexp-alist-alist): In + `watcom' anchor regexp to start of line, to avoid slowness + (Bug#5599). + +2010-02-20 Eli Zaretskii + + * subr.el (remove-yank-excluded-properties): Explain in a comment + why `category' property is removed. + +2010-02-19 Chong Yidong + + * isearch.el (isearch-update-post-hook, isearch-update): Revert + 2010-02-17 change. + +2010-02-19 Ulf Jasper + + * calendar/icalendar.el (icalendar--convert-ordinary-to-ical) + (icalendar--convert-weekly-to-ical) + (icalendar--convert-yearly-to-ical) + (icalendar--convert-block-to-ical) + (icalendar--convert-cyclic-to-ical) + (icalendar--convert-anniversary-to-ical): Take care of time + specifications where hour has 1-digit only (Bug#5549). + 2010-02-19 Nick Roberts * progmodes/gdb-ui.el (gdb-assembler-handler): Accommodate change diff -r 6f4137affc72 -r 10f33dae12b7 lisp/calendar/icalendar.el --- a/lisp/calendar/icalendar.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/calendar/icalendar.el Wed Feb 24 19:10:47 2010 +0100 @@ -1175,9 +1175,9 @@ (if (string-match (concat nonmarker "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\)\\s-*" ; date - "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" ; start time + "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" ; start time "\\(" - "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" ; end time + "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" ; end time "\\)?" "\\s-*\\(.*?\\) ?$") entry-main) @@ -1271,10 +1271,10 @@ entries. ENTRY-MAIN is the first line of the diary entry." (if (and (string-match (concat nonmarker "\\([a-z]+\\)\\s-+" - "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)" + "\\(\\([0-9][0-9]?:[0-9][0-9]\\)" "\\([ap]m\\)?" - "\\(-0?" - "\\([1-9][0-9]?:[0-9][0-9]\\)" + "\\(-" + "\\([0-9][0-9]?:[0-9][0-9]\\)" "\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$") @@ -1353,12 +1353,12 @@ entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker (if (eq (icalendar--date-style) 'european) - "0?\\([1-9]+[0-9]?\\)\\s-+\\([a-z]+\\)\\s-+" - "\\([a-z]+\\)\\s-+0?\\([1-9]+[0-9]?\\)\\s-+") + "\\([0-9]+[0-9]?\\)\\s-+\\([a-z]+\\)\\s-+" + "\\([a-z]+\\)\\s-+\\([0-9]+[0-9]?\\)\\s-+") "\\*?\\s-*" - "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" + "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" - "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" + "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\([^0-9]+.*?\\) ?$" ; must not match years ) @@ -1461,9 +1461,9 @@ (if (string-match (concat nonmarker "%%(diary-block \\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\)" " +\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\))\\s-*" - "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" + "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" - "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" + "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$") entry-main) @@ -1569,9 +1569,9 @@ (if (string-match (concat nonmarker "%%(diary-cyclic \\([^ ]+\\) +" "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\))\\s-*" - "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" + "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" - "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" + "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$") entry-main) @@ -1642,9 +1642,9 @@ entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker "%%(diary-anniversary \\([^)]+\\))\\s-*" - "\\(0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" + "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" - "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" + "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$") entry-main) diff -r 6f4137affc72 -r 10f33dae12b7 lisp/cedet/semantic/wisent/javascript.el --- a/lisp/cedet/semantic/wisent/javascript.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/cedet/semantic/wisent/javascript.el Wed Feb 24 19:10:47 2010 +0100 @@ -48,8 +48,8 @@ elts (cdr elts) clone (semantic-tag-clone tag (car elt)) value (car (cdr elt)) - start (if elts (caddr elt) (semantic-tag-start tag)) - end (if xpand (cdddr elt) (semantic-tag-end tag)) + start (if elts (car (cddr elt)) (semantic-tag-start tag)) + end (if xpand (cdr (cddr elt)) (semantic-tag-end tag)) xpand (cons clone xpand)) ;; Set the definition of the cloned tag (semantic-tag-put-attribute clone :default-value value) diff -r 6f4137affc72 -r 10f33dae12b7 lisp/eshell/eshell.el --- a/lisp/eshell/eshell.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/eshell/eshell.el Wed Feb 24 19:10:47 2010 +0100 @@ -229,11 +229,10 @@ (require 'esh-mode) (defgroup eshell nil - "Eshell is a command shell implemented entirely in Emacs Lisp. It -invokes no external processes beyond those requested by the user. It -is intended to be a functional replacement for command shells such as -bash, zsh, rc, 4dos; since Emacs itself is capable of handling most of -the tasks accomplished by such tools." + "A command shell implemented entirely in Emacs Lisp. +It invokes no external processes beyond those requested by the +user, and is intended to be a functional replacement for command +shells such as bash, zsh, rc, 4dos." :tag "The Emacs shell" :link '(info-link "(eshell)Top") :version "21.1" diff -r 6f4137affc72 -r 10f33dae12b7 lisp/files.el --- a/lisp/files.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/files.el Wed Feb 24 19:10:47 2010 +0100 @@ -2981,6 +2981,7 @@ (push elt all-vars) (or (eq enable-local-eval t) (hack-one-local-variable-eval-safep (eval (quote val))) + (safe-local-variable-p var val) (push elt unsafe-vars)))) ;; Ignore duplicates (except `mode') in the present list. ((and (assq var all-vars) (not (eq var 'mode))) nil) @@ -5592,8 +5593,10 @@ ;; -r--r--r-- 1 may 1997 1168 Oct 19 16:49 README ;; The "[BkKMGTPEZY]?" below supports "ls -alh" output. - ;; The ".*" below finds the last match if there are multiple matches. - ;; This avoids recognizing `jservice 10 1024' as a date in the line: + + ;; For non-iso date formats, we add the ".*" in order to find + ;; the last possible match. This avoids recognizing + ;; `jservice 10 1024' as a date in the line: ;; drwxr-xr-x 3 jservice 10 1024 Jul 2 1997 esg-host ;; vc dired listings provide the state or blanks between file @@ -5601,9 +5604,10 @@ ;; parantheses: ;; -rw-r--r-- (modified) 2005-10-22 21:25 files.el ;; This is not supported yet. - (purecopy (concat ".*[0-9][BkKMGTPEZY]?" s - "\\(" western "\\|" western-comma "\\|" east-asian "\\|" iso "\\)" - s "+"))) + (purecopy (concat "\\([0-9][BkKMGTPEZY]? " iso + "\\|.*[0-9][BkKMGTPEZY]? " + "\\(" western "\\|" western-comma "\\|" east-asian "\\)" + "\\) +"))) "Regular expression to match up to the file name in a directory listing. The default value is designed to recognize dates and times regardless of the language.") diff -r 6f4137affc72 -r 10f33dae12b7 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/gnus/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,13 @@ +2010-02-24 Stefan Monnier + + * gnus-art.el (gnus-treat-display-x-face): Don't burp if + shell-command-to-string signals an error (bug#5299). + +2010-02-24 Glenn Morris + + * message.el (message-smtpmail-send-it) + (message-send-mail-with-mailclient): Doc fixes. + 2010-02-16 Glenn Morris * message.el (message-default-mail-headers): Change the default value diff -r 6f4137affc72 -r 10f33dae12b7 lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/gnus/gnus-art.el Wed Feb 24 19:10:47 2010 +0100 @@ -1422,8 +1422,12 @@ (gnus-image-type-available-p 'xbm) (if (featurep 'xemacs) (featurep 'xface) - (and (string-match "^0x" (shell-command-to-string "uncompface")) - (executable-find "icontopbm"))) + (condition-case nil + (and (string-match "^0x" (shell-command-to-string "uncompface")) + (executable-find "icontopbm")) + ;; shell-command-to-string may signal an error, e.g. if + ;; shell-file-name is not found. + (error nil))) 'head) "Display X-Face headers. Valid values are nil and `head'. diff -r 6f4137affc72 -r 10f33dae12b7 lisp/gnus/message.el --- a/lisp/gnus/message.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/gnus/message.el Wed Feb 24 19:10:47 2010 +0100 @@ -4684,17 +4684,17 @@ (defun message-smtpmail-send-it () "Send the prepared message buffer with `smtpmail-send-it'. -This only differs from `smtpmail-send-it' that this command evaluates -`message-send-mail-hook' just before sending a message. It is useful -if your ISP requires the POP-before-SMTP authentication. See the Gnus -manual for details." +The only difference from `smtpmail-send-it' is that this command +evaluates `message-send-mail-hook' just before sending a message. +It is useful if your ISP requires the POP-before-SMTP +authentication. See the Gnus manual for details." (run-hooks 'message-send-mail-hook) (smtpmail-send-it)) (defun message-send-mail-with-mailclient () "Send the prepared message buffer with `mailclient-send-it'. -This only differs from `smtpmail-send-it' that this command evaluates -`message-send-mail-hook' just before sending a message." +The only difference from `mailclient-send-it' is that this +command evaluates `message-send-mail-hook' just before sending a message." (run-hooks 'message-send-mail-hook) (mailclient-send-it)) diff -r 6f4137affc72 -r 10f33dae12b7 lisp/htmlfontify.el --- a/lisp/htmlfontify.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/htmlfontify.el Wed Feb 24 19:10:47 2010 +0100 @@ -176,10 +176,9 @@ (htmlfontify-copy-and-link-dir srcdir destdir \".src\" \".html\")))") (defgroup htmlfontify nil - "Copy and convert buffers and files to HTML, adding hyperlinks between -files (driven by etags) if requested.\n -See also `htmlfontify-manual'." + "Convert buffers and files to HTML." :group 'applications + :link '(variable-link htmlfontify-manual) :prefix "hfy-") (defcustom hfy-page-header 'hfy-default-header diff -r 6f4137affc72 -r 10f33dae12b7 lisp/isearch.el --- a/lisp/isearch.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/isearch.el Wed Feb 24 19:10:47 2010 +0100 @@ -156,9 +156,6 @@ (defvar isearch-mode-hook nil "Function(s) to call after starting up an incremental search.") -(defvar isearch-update-post-hook nil - "Function(s) to call after isearch has found matches in the buffer.") - (defvar isearch-mode-end-hook nil "Function(s) to call after terminating an incremental search. When these functions are called, `isearch-mode-end-hook-quit' @@ -871,8 +868,7 @@ (isearch-lazy-highlight-new-loop)) ;; We must prevent the point moving to the end of composition when a ;; part of the composition has just been searched. - (setq disable-point-adjustment t) - (run-hooks 'isearch-update-post-hook)) + (setq disable-point-adjustment t)) (defun isearch-done (&optional nopush edit) "Exit Isearch mode. diff -r 6f4137affc72 -r 10f33dae12b7 lisp/net/tramp.el --- a/lisp/net/tramp.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/net/tramp.el Wed Feb 24 19:10:47 2010 +0100 @@ -3926,7 +3926,8 @@ ;; Set the mode. (unless (and keep-date copy-keep-date) - (set-file-modes newname (tramp-default-file-modes filename)))) + (ignore-errors + (set-file-modes newname (tramp-default-file-modes filename))))) ;; If the operation was `rename', delete the original file. (unless (eq op 'copy) @@ -5031,7 +5032,10 @@ ;; filename does not exist (eq modes nil) it has been ;; renamed to the backup file. This case `save-buffer' ;; handles permissions. - (when modes (set-file-modes tmpfile modes)) + ;; Ensure, that it is still readable. + (when modes + (set-file-modes + tmpfile (logior (or modes 0) (tramp-octal-to-decimal "0400")))) ;; This is a bit lengthy due to the different methods ;; possible for file transfer. First, we check whether the diff -r 6f4137affc72 -r 10f33dae12b7 lisp/nxml/TODO --- a/lisp/nxml/TODO Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/nxml/TODO Wed Feb 24 19:10:47 2010 +0100 @@ -450,7 +450,7 @@ ** Investigate performance on large files all on one line. -* CVS emacs issues +* Issues for Emacs versions >= 22 ** Take advantage of UTF-8 CJK support. diff -r 6f4137affc72 -r 10f33dae12b7 lisp/progmodes/compile.el --- a/lisp/progmodes/compile.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/progmodes/compile.el Wed Feb 24 19:10:47 2010 +0100 @@ -350,7 +350,7 @@ "^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3) (watcom - "\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)): ?\ + "^[ \t]*\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)): ?\ \\(?:\\(Error! E[0-9]+\\)\\|\\(Warning! W[0-9]+\\)\\):" 1 2 nil (4)) diff -r 6f4137affc72 -r 10f33dae12b7 lisp/startup.el --- a/lisp/startup.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/startup.el Wed Feb 24 19:10:47 2010 +0100 @@ -1626,8 +1626,10 @@ (select-frame frame) (switch-to-buffer "*About GNU Emacs*") (setq buffer-undo-list t - mode-line-format (propertize "---- %b %-" - 'face 'mode-line-buffer-id)) + mode-line-format + (concat "----" + (propertize "%b" 'face 'mode-line-buffer-id) + "%-")) (let ((inhibit-read-only t)) (erase-buffer) (if pure-space-overflow diff -r 6f4137affc72 -r 10f33dae12b7 lisp/subr.el --- a/lisp/subr.el Fri Feb 19 14:11:21 2010 +0100 +++ b/lisp/subr.el Wed Feb 24 19:10:47 2010 +0100 @@ -2442,7 +2442,11 @@ "Remove `yank-excluded-properties' between START and END positions. Replaces `category' properties with their defined properties." (let ((inhibit-read-only t)) - ;; Replace any `category' property with the properties it stands for. + ;; Replace any `category' property with the properties it stands + ;; for. This is to remove `mouse-face' properties that are placed + ;; on categories in *Help* buffers' buttons. See + ;; http://lists.gnu.org/archive/html/emacs-devel/2002-04/msg00648.html + ;; for the details. (unless (memq yank-excluded-properties '(t nil)) (save-excursion (goto-char start) diff -r 6f4137affc72 -r 10f33dae12b7 msdos/ChangeLog --- a/msdos/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/msdos/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,8 @@ +2010-02-19 Eli Zaretskii + + * INSTALL: Remove a CVS-specific note. Update for latest versions + of Windows. + 2009-09-17 Eli Zaretskii * sed1v2.inp (OTHER_FILES): Edit to empty. diff -r 6f4137affc72 -r 10f33dae12b7 msdos/INSTALL --- a/msdos/INSTALL Fri Feb 19 14:11:21 2010 +0100 +++ b/msdos/INSTALL Wed Feb 24 19:10:47 2010 +0100 @@ -5,8 +5,9 @@ See the end of the file for license conditions. The DJGPP port of GNU Emacs builds and runs on plain DOS and also on -all versions of MS-Windows from version 3.X on, including Windows XP -and Vista. +all versions of MS-Windows from version 3.X on, including Windows XP, +Vista, and Windows 7 (however, see below for issues with Windows Vista +and 7). To build and install the DJGPP port, you need to have the DJGPP ports of GCC (the GNU C compiler), GNU Make, rm, mv, and sed. See the @@ -19,28 +20,25 @@ Bootstrapping Emacs or recompiling Lisp files in the `lisp' subdirectory using the various targets in the lisp/Makefile file requires additional utilities: `find' (from Findutils), GNU `echo' and -`test' (from Sh-utils), `ls' and `chmod' (from Fileutils), `grep' -(from Grep), and a port of Bash. However, you should not normally -need to run lisp/Makefile, as all the Lisp files are distributed in -byte-compiled form as well. As for bootstrapping, you will only need -that if you check-out development sources from the Emacs source -repository. (Note: If you are checking out of CVS, use the -kb option -of the `checkout' and `update' commands, to preserve the original -Unix-style EOL format of the files. If some files are converted to -DOS EOL format by the default operation of CVS, the build might fail.) +`test' (from Sh-utils or Coreutils), `ls' and `chmod' (from Fileutils +or Coreutils), `grep' (from Grep), and a port of Bash. However, you +should not normally need to run lisp/Makefile, as all the Lisp files +are distributed in byte-compiled form as well. As for bootstrapping +itself, you will only need that if you check-out development sources +from the Emacs source repository. If you are building the DJGPP version of Emacs on a DOS-like system which supports long file names (e.g. Windows 9X or Windows XP), you need to make sure that long file names are handled consistently both -when you unpack the distribution and compile it. If you intend to -compile with DJGPP v2.0 or later, and long file names support is -enabled (LFN=y in the environment), you need to unpack Emacs -distribution in a way that doesn't truncate the original long +when you unpack the distribution and compile it. With DJGPP v2.0 or +later, long file names support is by default, so you need to unpack +Emacs distribution in a way that doesn't truncate the original long filenames to the DOS 8.3 namespace; the easiest way to do this is to -use djtar program which comes with DJGPP, since it will note the LFN -setting and behave accordingly. You can build Emacs with LFN=n, if -some of your tools don't support long file names: just ensure that LFN -is set to `n' during both unpacking and compiling. +use djtar program which comes with DJGPP, since it will behave +consistently with the rest of DJGPP tools. Alternatively, you can +build Emacs with LFN=n, if some of your tools don't support long file +names: just ensure that LFN is set to `n' during both unpacking and +compiling. (By the time you read this, you have already unpacked the Emacs distribution, but if the explanations above imply that you should have @@ -100,14 +98,14 @@ should be able to find them in your djdevNNN.zip archive (where NNN is the DJGPP version number). -On Windows NT, Windows 2000/XP/Vista, running "config msdos" might -print an error message like "VDM has been already loaded". This is -because those systems have a program called `redir.exe' which is +On Windows NT and Windows 2000/XP/Vista/7, running "config msdos" +might print an error message like "VDM has been already loaded". This +is because those systems have a program called `redir.exe' which is incompatible with a program by the same name supplied with DJGPP, which is used by config.bat. To resolve this, move the DJGPP's `bin' subdirectory to the front of your PATH environment variable. -Windows Vista has several bugs in its DPMI server related to memory +Windows Vista/7 has several bugs in its DPMI server related to memory allocation: it fails DPMI resize memory block function, and it arbitrarily limits the default amount of DPMI memory to 32MB. To work around these bugs, first configure Emacs to use the `malloc' function @@ -117,8 +115,8 @@ config --with-system-malloc msdos make install -In addition, you'll need to install Service Pack 1 (SP1) or later to -Windows Vista and enlarge its DPMI memory limit by setting the value +In addition, for Windows Vista you'll need to install Service Pack 1 +(SP1) or later and enlarge its DPMI memory limit by setting the value of this Registry key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Wow\DpmiLimit @@ -164,8 +162,8 @@ Emacs features which require asynchronous subprocesses that depend on multitasking do not work in the DJGPP port. Synchronous subprocesses -do work, so features such as compilation and grep run synchronously, -unlike opn other platforms. +do work, so features such as compilation, grep, and Ispell run +synchronously, unlike on other platforms. Version 2.0 of djgpp has two bugs that affect Emacs. We've included corrected versions of two files from djgpp in the msdos subdirectory: diff -r 6f4137affc72 -r 10f33dae12b7 src/ChangeLog --- a/src/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/src/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,7 @@ +2010-02-21 Chong Yidong + + * m/arm.h: Define the LIB_GCC flag to be -lgcc_s (Bug#5518). + 2010-02-18 Stefan Monnier * term.c (fatal): Add a final \n if needed (bug#5596). diff -r 6f4137affc72 -r 10f33dae12b7 src/dispextern.h --- a/src/dispextern.h Fri Feb 19 14:11:21 2010 +0100 +++ b/src/dispextern.h Wed Feb 24 19:10:47 2010 +0100 @@ -2257,8 +2257,8 @@ && ((IT)->c == '\n' \ || ((IT)->c == '\r' && (IT)->selective))) -/* Call produce_glyphs or produce_glyphs_hook, if set. Shortcut to - avoid the function call overhead. */ +/* Call produce_glyphs or FRAME_RIF->produce_glyphs, if set. Shortcut + to avoid the function call overhead. */ #define PRODUCE_GLYPHS(IT) \ do { \ diff -r 6f4137affc72 -r 10f33dae12b7 src/m/arm.h --- a/src/m/arm.h Fri Feb 19 14:11:21 2010 +0100 +++ b/src/m/arm.h Wed Feb 24 19:10:47 2010 +0100 @@ -36,5 +36,11 @@ #define NO_REMAP +/* armin76@gentoo.org reported that the lgcc_s flag is necessary to + build on ARM EABI under GNU/Linux (Bug#5518). */ +#ifdef GNU_LINUX +#define LIB_GCC -lgcc_s +#endif + /* arch-tag: 07856f0c-f0c8-4bd8-99af-0b7fa1e5ee42 (do not change this comment) */ diff -r 6f4137affc72 -r 10f33dae12b7 src/term.c --- a/src/term.c Fri Feb 19 14:11:21 2010 +0100 +++ b/src/term.c Wed Feb 24 19:10:47 2010 +0100 @@ -1568,8 +1568,9 @@ and where in the glyph matrix we currently are (glyph row and hpos). produce_glyphs fills in output fields of *IT with information such as the pixel width and height of a character, and maybe output actual glyphs at - the same time if IT->glyph_row is non-null. See the explanation of - struct display_iterator in dispextern.h for an overview. + the same time if IT->glyph_row is non-null. For an overview, see + the explanation in dispextern.h, before the definition of the + display_element_type enumeration. produce_glyphs also stores the result of glyph width, ascent etc. computations in *IT. diff -r 6f4137affc72 -r 10f33dae12b7 test/ChangeLog --- a/test/ChangeLog Fri Feb 19 14:11:21 2010 +0100 +++ b/test/ChangeLog Wed Feb 24 19:10:47 2010 +0100 @@ -1,3 +1,16 @@ +2010-02-19 Ulf Jasper + + * icalendar-testsuite.el + (icalendar-testsuite--run-function-tests): Added new tests. + (icalendar-testsuite--test-diarytime-to-isotime): Added another + testcase. + (icalendar-testsuite--test-convert-ordinary-to-ical): New. + (icalendar-testsuite--test-convert-weekly-to-ical): New. + (icalendar-testsuite--test-convert-yearly-to-ical): New. + (icalendar-testsuite--test-convert-block-to-ical): New. + (icalendar-testsuite--test-convert-cyclic-to-ical): New. + (icalendar-testsuite--test-convert-anniversary-to-ical): New. + 2010-01-18 Juanma Barranquero * cedet/semantic-tests.el (semanticdb-test-gnu-global) diff -r 6f4137affc72 -r 10f33dae12b7 test/icalendar-testsuite.el --- a/test/icalendar-testsuite.el Fri Feb 19 14:11:21 2010 +0100 +++ b/test/icalendar-testsuite.el Wed Feb 24 19:10:47 2010 +0100 @@ -52,6 +52,12 @@ (icalendar-testsuite--test-datestring-to-isodate) (icalendar-testsuite--test-datetime-to-diary-date) (icalendar-testsuite--test-diarytime-to-isotime) + (icalendar-testsuite--test-convert-ordinary-to-ical) + (icalendar-testsuite--test-convert-weekly-to-ical) + (icalendar-testsuite--test-convert-yearly-to-ical) + (icalendar-testsuite--test-convert-block-to-ical) + (icalendar-testsuite--test-convert-cyclic-to-ical) + (icalendar-testsuite--test-convert-anniversary-to-ical) (icalendar-testsuite--test-calendar-style) (icalendar-testsuite--test-create-uid) (icalendar-testsuite--test-parse-vtimezone)) @@ -213,6 +219,12 @@ (defun icalendar-testsuite--test-diarytime-to-isotime () "Test method for `icalendar--diarytime-to-isotime'." + (assert (string= (icalendar--diarytime-to-isotime "01:15" "") + "T011500")) + (assert (string= (icalendar--diarytime-to-isotime "1:15" "") + "T011500")) + (assert (string= (icalendar--diarytime-to-isotime "0:01" "") + "T000100")) (assert (string= (icalendar--diarytime-to-isotime "0100" "") "T010000")) (assert (string= (icalendar--diarytime-to-isotime "0100" "am") @@ -236,6 +248,106 @@ (assert (string= (icalendar--diarytime-to-isotime "1259" "pm") "T125900"))) +(defun icalendar-testsuite--test-convert-ordinary-to-ical () + "Test method for `icalendar--convert-ordinary-to-ical'." + (let* ((calendar-date-style 'iso) + result) + ;; without time + (setq result (icalendar--convert-ordinary-to-ical "&?" "2010 2 15 subject")) + (assert (= 2 (length result))) + (assert (string= "\nDTSTART;VALUE=DATE:20100215\nDTEND;VALUE=DATE:20100216" + (car result))) + (assert (string= "subject" (cadr result))) + + ;; with time + (setq result (icalendar--convert-ordinary-to-ical + "&?" "&2010 2 15 12:34-23:45 s")) + (assert (= 2 (length result))) + (assert (string= (concat "\nDTSTART;VALUE=DATE-TIME:20100215T123400" + "\nDTEND;VALUE=DATE-TIME:20100215T234500") + (car result))) + (assert (string= "s" (cadr result))) + + ;; with time, again -- test bug#5549 + (setq result (icalendar--convert-ordinary-to-ical + "x?" "x2010 2 15 0:34-1:45 s")) + (assert (= 2 (length result))) + (assert (string= (concat "\nDTSTART;VALUE=DATE-TIME:20100215T003400" + "\nDTEND;VALUE=DATE-TIME:20100215T014500") + (car result))) + (assert (string= "s" (cadr result))))) + +(defun icalendar-testsuite--test-convert-weekly-to-ical () + "Test method for `icalendar--convert-weekly-to-ical'." + (let* ((calendar-date-style 'iso) + result + (calendar-day-name-array + ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" + "Saturday"])) + (setq result (icalendar--convert-weekly-to-ical "" "Monday 8:30 subject")) + (assert (= 2 (length result))) + (assert (string= (concat "\nDTSTART;VALUE=DATE-TIME:20050103T083000" + "\nDTEND;VALUE=DATE-TIME:20050103T093000" + "\nRRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO") + (car result))) + (assert (string= "subject" (cadr result))))) + +(defun icalendar-testsuite--test-convert-yearly-to-ical () + "Test method for `icalendar--convert-yearly-to-ical'." + (let* ((calendar-date-style 'iso) + result + (calendar-month-name-array + ["January" "February" "March" "April" "May" "June" "July" "August" + "September" "October" "November" "December"])) + (setq result (icalendar--convert-yearly-to-ical "" "May 1 Tag der Arbeit")) + (assert (= 2 (length result))) + (assert (string= (concat + "\nDTSTART;VALUE=DATE:19000501" + "\nDTEND;VALUE=DATE:19000502" + "\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=5;BYMONTHDAY=1") + (car result))) + (assert (string= "Tag der Arbeit" (cadr result))))) + +(defun icalendar-testsuite--test-convert-block-to-ical () + "Test method for `icalendar--convert-block-to-ical'." + (let* ((calendar-date-style 'iso) + result) + (setq result (icalendar--convert-block-to-ical + "" "%%(diary-block 2004 7 19 2004 8 27) Sommerferien")) + (assert (= 2 (length result))) + (assert (string= (concat + "\nDTSTART;VALUE=DATE:20040719" + "\nDTEND;VALUE=DATE:20040828") + (car result))) + (assert (string= "Sommerferien" (cadr result))))) + +(defun icalendar-testsuite--test-convert-cyclic-to-ical () + "Test method for `icalendar--convert-cyclic-to-ical'." + (let* ((calendar-date-style 'iso) + result) + (setq result (icalendar--convert-block-to-ical + "" "%%(diary-block 2004 7 19 2004 8 27) Sommerferien")) + (assert (= 2 (length result))) + (assert (string= (concat + "\nDTSTART;VALUE=DATE:20040719" + "\nDTEND;VALUE=DATE:20040828") + (car result))) + (assert (string= "Sommerferien" (cadr result))))) + +(defun icalendar-testsuite--test-convert-anniversary-to-ical () + "Test method for `icalendar--convert-anniversary-to-ical'." + (let* ((calendar-date-style 'iso) + result) + (setq result (icalendar--convert-anniversary-to-ical + "" "%%(diary-anniversary 1964 6 30) g")) + (assert (= 2 (length result))) + (assert (string= (concat + "\nDTSTART;VALUE=DATE:19640630" + "\nDTEND;VALUE=DATE:19640701" + "\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=06;BYMONTHDAY=30") + (car result))) + (assert (string= "g" (cadr result))))) + (defun icalendar-testsuite--test-calendar-style () "Test method for `icalendar--date-style'." (dolist (calendar-date-style '(iso american european))