Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 99537. ------------------------------------------------------------ revno: 99537 committer: Chong Yidong branch nick: trunk timestamp: Fri 2010-02-19 16:36:29 -0500 message: Revert isearch.el change due to feature freeze. * isearch.el (isearch-update-post-hook, isearch-update): Revert 2010-02-17 change. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-02-19 18:59:00 +0000 +++ lisp/ChangeLog 2010-02-19 21:36:29 +0000 @@ -1,3 +1,8 @@ +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) === modified file 'lisp/isearch.el' --- lisp/isearch.el 2010-02-17 21:39:21 +0000 +++ lisp/isearch.el 2010-02-19 21:36:29 +0000 @@ -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. ------------------------------------------------------------ revno: 99536 committer: Ulf Jasper branch nick: trunk timestamp: Fri 2010-02-19 19:59:00 +0100 message: Fixed bug#5549 (icalendar.el) diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-02-19 04:55:31 +0000 +++ lisp/ChangeLog 2010-02-19 18:59:00 +0000 @@ -1,3 +1,13 @@ +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 === modified file 'lisp/calendar/icalendar.el' --- lisp/calendar/icalendar.el 2010-01-13 08:35:10 +0000 +++ lisp/calendar/icalendar.el 2010-02-19 18:59:00 +0000 @@ -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) === modified file 'test/ChangeLog' --- test/ChangeLog 2010-01-18 04:39:40 +0000 +++ test/ChangeLog 2010-02-19 18:59:00 +0000 @@ -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) === modified file 'test/icalendar-testsuite.el' --- test/icalendar-testsuite.el 2010-01-13 08:35:10 +0000 +++ test/icalendar-testsuite.el 2010-02-19 18:59:00 +0000 @@ -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)) ------------------------------------------------------------ revno: 99535 committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2010-02-19 15:57:53 +0200 message: term.c, dispextern.h: Fix stale comments. diff: === modified file 'src/dispextern.h' --- src/dispextern.h 2010-01-13 08:35:10 +0000 +++ src/dispextern.h 2010-02-19 13:57:53 +0000 @@ -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 { \ === modified file 'src/term.c' --- src/term.c 2010-02-18 17:02:24 +0000 +++ src/term.c 2010-02-19 13:57:53 +0000 @@ -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. ------------------------------------------------------------ revno: 99534 committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2010-02-19 15:26:50 +0200 message: INSTALL: Remove a CVS-specific note. Update for latest versions of Windows. diff: === modified file 'msdos/ChangeLog' --- msdos/ChangeLog 2010-01-13 08:35:10 +0000 +++ msdos/ChangeLog 2010-02-19 13:26:50 +0000 @@ -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. === modified file 'msdos/INSTALL' --- msdos/INSTALL 2010-01-13 08:35:10 +0000 +++ msdos/INSTALL 2010-02-19 13:26:50 +0000 @@ -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: ------------------------------------------------------------ revno: 99533 committer: Nick Roberts branch nick: trunk timestamp: Fri 2010-02-19 17:55:31 +1300 message: Accommodate change of disassemble output in GDB 7.1. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-02-19 02:36:10 +0000 +++ lisp/ChangeLog 2010-02-19 04:55:31 +0000 @@ -1,3 +1,8 @@ +2010-02-19 Nick Roberts + + * progmodes/gdb-ui.el (gdb-assembler-handler): Accommodate change + of disassemble output in GDB 7.1. + 2010-02-19 Glenn Morris * progmodes/f90.el (f90-electric-insert): Give it a delete-selection === modified file 'lisp/progmodes/gdb-ui.el' --- lisp/progmodes/gdb-ui.el 2010-01-14 18:59:31 +0000 +++ lisp/progmodes/gdb-ui.el 2010-02-19 04:55:31 +0000 @@ -3573,18 +3573,24 @@ (setq gdb-pending-triggers (delq 'gdb-invalidate-assembler gdb-pending-triggers)) - (let ((buf (gdb-get-buffer 'gdb-assembler-buffer))) - (and buf - (with-current-buffer buf - (let* ((window (get-buffer-window buf 0)) - (p (window-point window)) - (buffer-read-only nil)) - (erase-buffer) - (insert-buffer-substring (gdb-get-buffer-create + (let ((buf (gdb-get-buffer 'gdb-partial-output-buffer))) + (with-current-buffer buf + (goto-char (point-min)) + ;; The disassemble command in GDB 7.1 onwards displays an overlay arrow. + (while (re-search-forward "\\(^ 0x\\|=> 0x\\)" nil t) + (replace-match "0x" nil nil)))) + (let ((buf (gdb-get-buffer 'gdb-assembler-buffer))) + (and buf + (with-current-buffer buf + (let* ((window (get-buffer-window buf 0)) + (p (window-point window)) + (buffer-read-only nil)) + (erase-buffer) + (insert-buffer-substring (gdb-get-buffer-create 'gdb-partial-output-buffer)) - (set-window-point window p))))) - ;; put customisation here - (gdb-assembler-custom)) + (set-window-point window p))))) + ;; put customisation here + (gdb-assembler-custom)) (defun gdb-assembler-custom () (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))