Mercurial > emacs
changeset 80887:a0e8097f1696
Merge from emacs--rel--22
Patches applied:
* emacs--rel--22 (patch 12)
- Update from CVS
2007-05-08 Richard Stallman <rms@gnu.org>
* lisp/mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
Don't include non-self-insert commands in the exception for `-'.
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-739
author | Miles Bader <miles@gnu.org> |
---|---|
date | Wed, 09 May 2007 23:47:51 +0000 |
parents | 4f3dcd505adb (diff) 8d4caf39c19f (current diff) |
children | 4005ed72ef83 |
files | lisp/ChangeLog |
diffstat | 43 files changed, 1096 insertions(+), 597 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -2,6 +2,15 @@ * configure: Tweak message about the absence of shell functions. +2007-04-27 Andreas Schwab <schwab@suse.de> + + * Makefile.in (config.status): Depend on + ${srcdir}/lisp/version.el. + +2007-04-26 Glenn Morris <rgm@gnu.org> + + * README: Increase version to 22.1.50. + 2007-04-24 Juanma Barranquero <lekktu@gmail.com> * INSTALL (DETAILED BUILDING AND INSTALLATION): Fix typo.
--- a/Makefile.in Tue May 08 18:15:58 2007 +0000 +++ b/Makefile.in Wed May 09 23:47:51 2007 +0000 @@ -311,7 +311,7 @@ Makefile: $(srcdir)/Makefile.in config.status ./config.status -config.status: ${srcdir}/configure +config.status: ${srcdir}/configure ${srcdir}/lisp/version.el ./config.status --recheck AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/m4/getopt.m4
--- a/README Tue May 08 18:15:58 2007 +0000 +++ b/README Wed May 09 23:47:51 2007 +0000 @@ -3,7 +3,7 @@ See the end of the file for license conditions. -This directory tree holds version 22.0.99 of GNU Emacs, the extensible, +This directory tree holds version 22.1.50 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU
--- a/admin/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/admin/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,3 +1,7 @@ +2007-04-25 Nick Roberts <nickrob@snap.net.nz> + + * make-tarball.txt: Add note about cutting the branch. + 2007-02-03 Eli Zaretskii <eliz@gnu.org> * nt/makedist.bat: Change EOL format to DOS. Don't use
--- a/admin/FOR-RELEASE Tue May 08 18:15:58 2007 +0000 +++ b/admin/FOR-RELEASE Wed May 09 23:47:51 2007 +0000 @@ -22,6 +22,10 @@ Reminders sent out on 2006-06-08. +** Remove temporary +++/--- lines in NEWS. + +** Try to reorder NEWS: most important things first, related items together. + * WINDOWS SUPPORT BUGS. These don't need to be fixed before a release, but we call the @@ -36,8 +40,7 @@ * BUGS -** python.el legal problem? -http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00459.html +See the copy of this file on the EMACS_22_BASE branch. ** rcyeske@gmail.com, April 22: Failure to build on OpenBSD macppc. OpenBSD compilation works on i386.
--- a/admin/make-tarball.txt Tue May 08 18:15:58 2007 +0000 +++ b/admin/make-tarball.txt Wed May 09 23:47:51 2007 +0000 @@ -76,7 +76,22 @@ 14. For a pretest, let Richard Stallman <rms@gnu.org> know about the new pretest and tell him to announce it using the announcement you prepared. Remind him to set a Reply-to header to <emacs-pretest-bug@gnu.org>. - For a release, Richard should prepare the announcement himself, + +15. Shortly before the release, cut the branch with the following commands: + + cvs rtag EMACS_`NUMBER'_BASE + cvs rtag -b EMACS_`NUMBER'_RC -r EMACS_`NUMBER'_BASE + +where `NUMBER' is the major version number of the release. This makes it +easier to see what changes have been applied to the branch with: + + cvs diff -r EMACS_`NUMBER'_BASE -r EMACS_`NUMBER'_RC + +or merge changes back to the trunk with "cvs update -j", if necessary. + +After doing this, increase the version number on the trunk as per step 4. + +16. For a release, Richard should prepare the announcement himself, possibly starting from a previous announcment. # arch-tag: c23c771f-ca26-4584-8a04-50ecf0989390
--- a/admin/notes/copyright Tue May 08 18:15:58 2007 +0000 +++ b/admin/notes/copyright Wed May 09 23:47:51 2007 +0000 @@ -228,6 +228,7 @@ the concept. rms: "My understanding is that game rules as such are not copyrightable." <http://lists.gnu.org/archive/html/emacs-devel/2007-01/msg00960.html> + rms: Legal advice is that we are ok and need not worry about this. lispref/doclicense.texi man/doclicense.texi @@ -405,6 +406,7 @@ Accordingly, FSF copyright was added. src/unexhp9k800.c (and dependent src/m/sr2k.h) + http://lists.gnu.org/archive/html/emacs-devel/2007-02/msg00138.html - briefly removed due to legal uncertainly Jan-Mar 2007. The relevant assignment is under "hp9k800" in copyright.list. File was written by John V. Morris at HP, and disclaimed by the author and @@ -549,9 +551,6 @@ Emacs 22 is released (though if they can be fixed before, that is obviously good): -Maybe some relevant comments here? -<http://groups.google.com/group/linux.debian.legal/browse_thread/thread/123547ea95437a1f> - Is it OK to just `cvs remove' a file for legal reasons, or is something more drastic needed? A removed file is still available from @@ -586,18 +585,10 @@ Done: TUTORIAL.eo -REMOVED src/unexhp9k800.c - - we would like to re-add this file if possible. Please let us know - if you can clarify its legal status. - http://lists.gnu.org/archive/html/emacs-devel/2007-02/msg00138.html - - *** These are copyright issues still to be addressed: python.el potential legal problem http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00459.html - - This file is part of GNU Emacs.
--- a/etc/TODO Tue May 08 18:15:58 2007 +0000 +++ b/etc/TODO Wed May 09 23:47:51 2007 +0000 @@ -594,6 +594,33 @@ * Other known bugs: +** The \\{...} keymap dump output does not correctly remove shadowed entries: +From: "Drew Adams" <drew.adams@oracle.com> + +(define-key minibuffer-local-map [(control ?=)] 'foo) +(define-key minibuffer-local-completion-map [(control ?=)] 'foo) + +(defun toto () "\\{minibuffer-local-completion-map}" 4) + +C-h f toto shows a duplicate entry for C-=: + +toto is a Lisp function. +(toto) + +key binding +- --- ------- + +C-g abort-recursive-edit +TAB minibuffer-complete +C-j exit-minibuffer +RET exit-minibuffer +ESC Prefix Command +SPC minibuffer-complete-word +? minibuffer-completion-help +C-= foo +C-= foo +... + ** a two-char comment-starter whose two chars are symbol constituents will not be noticed if it appears within a word.
--- a/lib-src/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/lib-src/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,3 +1,7 @@ +2007-04-26 Glenn Morris <rgm@gnu.org> + + * makefile.w32-in (VERSION): Increase to 22.1.50. + 2007-02-26 Francesco Potort,Al(B <pot@gnu.org> * Makefile.in (etags, ctags): Define EMACS_NAME as "GNU Emacs". @@ -1845,7 +1849,7 @@ [WINDOWSNT]: #undef DOS_NT and #define it even if built with HAVE_CONFIG_H. This change does nothing in Emacs, as DOS_NT is always defined when HAVE_CONFIG_H and WINDOWS are both defined. - [!HAVE_UNISTD_H]: use defined(WINDOWSNT) instead of the bare + [!HAVE_UNISTD_H]: Use defined(WINDOWSNT) instead of the bare WINDOWSNT, as this is the correct way to use it. 2001-01-28 Francesco Potort,Al(B <pot@gnu.org> @@ -2996,7 +3000,7 @@ 1997-03-14 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it> - * etags.c (add_regex): reset *putbuf before using it. + * etags.c (add_regex): Reset *putbuf before using it. 1997-02-23 Jonathan I. Kamens <jik@kamens.brookline.ma.us> @@ -3560,7 +3564,7 @@ 1995-12-04 Francesco Potort,Al(B <pot@cnuce.cnr.it> - * Makefile.in (ctags): depend on etags only for simplicity; + * Makefile.in (ctags): Depend on etags only for simplicity; compile with regexp support enabled. 1995-11-24 Richard Stallman <rms@mole.gnu.ai.mit.edu> @@ -3685,13 +3689,13 @@ 1995-06-27 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (plain_C_entries): new function. - (lowcase): new macro. - (tail, Fortran_functions, Pascal_functions): use new macro lowcase. - (lang_suffixes): new suffix ".pc" for Pro*C files. - (consider_token): don't tag all tokens beginning with DEFUN & Co.. - (tail): look for the end of the token when comparing. - (takeprec): since now tail behaves differently, use strneq. + * etags.c (plain_C_entries): New function. + (lowcase): New macro. + (tail, Fortran_functions, Pascal_functions): Use new macro lowcase. + (lang_suffixes): New suffix ".pc" for Pro*C files. + (consider_token): Don't tag all tokens beginning with DEFUN & Co.. + (tail): Look for the end of the token when comparing. + (takeprec): Since now tail behaves differently, use strneq. 1995-07-08 Paul Eggert <eggert@twinsun.com> @@ -3723,13 +3727,13 @@ 1995-06-27 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (plain_C_entries): new function. - (lowcase): new macro. - (tail, Fortran_functions, Pascal_functions): use new macro lowcase. - (lang_suffixes): new suffix ".pc" for Pro*C files. - (consider_token): don't tag all tokens beginning with DEFUN & Co.. - (tail): look for the end of the token when comparing. - (takeprec): since now tail behaves differently, use strneq. + * etags.c (plain_C_entries): New function. + (lowcase): New macro. + (tail, Fortran_functions, Pascal_functions): Use new macro lowcase. + (lang_suffixes): New suffix ".pc" for Pro*C files. + (consider_token): Don't tag all tokens beginning with DEFUN & Co.. + (tail): Look for the end of the token when comparing. + (takeprec): Since now tail behaves differently, use strneq. 1995-06-26 Richard Stallman <rms@mole.gnu.ai.mit.edu> @@ -3906,7 +3910,7 @@ 1995-03-13 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (process_file): free (filename) after using it. + * etags.c (process_file): Free (filename) after using it. (readline_internal): Do not access the char before start of line. 1995-02-22 Francesco Potort,Al(B (pot@cnuce.cnr.it) @@ -4039,8 +4043,8 @@ 1994-11-22 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (print_help): print --regex usage for ctags also. - (main): use -h in addition to -H as abbreviation for --help. + * etags.c (print_help): Print --regex usage for ctags also. + (main): Use -h in addition to -H as abbreviation for --help. 1994-11-16 Francesco Potort,Al(B (pot@cnuce.cnr.it) @@ -4105,9 +4109,9 @@ 1994-10-21 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (prestr, substr): return a logical type. + * etags.c (prestr, substr): Return a logical type. (consider_token): Comment out "EXFUN". Use "DEFUN" instead of "DEF". - (consider_token): set funcdef to fignore when a DEFUN is met. + (consider_token): Set funcdef to fignore when a DEFUN is met. (C_entries): Now we can use Tom Hageman patch for extern "C". 1994-10-20 Richard Stallman <rms@mole.gnu.ai.mit.edu> @@ -4190,8 +4194,8 @@ 1994-10-17 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it) - * Makefile.in.in (etags): add dependency on regex.o, link with it. - (REGEXPOBJ, REGEXPDEPS, regex.o): target and macros added. + * Makefile.in.in (etags): Add dependency on regex.o, link with it. + (REGEXPOBJ, REGEXPDEPS, regex.o): Target and macros added. 1994-10-12 David J. MacKenzie (djm@duality.gnu.ai.mit.edu) @@ -4341,7 +4345,7 @@ 1994-07-08 Dave Love (d.love@dl.ac.uk) - * etags.c (takeprec): recognise `character*(*) function' + * etags.c (takeprec): Recognise `character*(*) function'. 1994-07-08 Francesco Potort,Al(B (pot@cnuce.cnr.it) @@ -4489,11 +4493,11 @@ 1994-04-18 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it) - * etags.c (main, print_help): eliminate the -F option. + * etags.c (main, print_help): Eliminate the -F option. 1994-04-18 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it) - * etags.c (absolute_filename): compare against '\0' instead of NULL. + * etags.c (absolute_filename): Compare against '\0' instead of NULL. 1994-04-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) @@ -4527,21 +4531,21 @@ 1994-04-08 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it) - * etags.c (outf, outfiledir): renamed to tagf, tagfiledir. - (PF_funcs, Asm_funcs, L_funcs, PAS_funcs, TEX_funcs, - Scheme_funcs, prolog_funcs): renamed to Fortran_functions, + * etags.c (outf, outfiledir): Renamed to tagf, tagfiledir. + (PF_funcs, Asm_funcs, L_funcs, PAS_funcs, TEX_funcs) + (Scheme_funcs, prolog_funcs): Renamed to Fortran_functions, Asm_labels, Lisp_functions, Pascal_functions, Scheme_functions, TeX_functions, Prolog_functions. - (inf): no more a global variable. - (C_entries): take 2nd parameter `inf' instead of using the global one. - (find_entries): added the cp1 var for optimisation. - (find_entries): added more suffixes for assembler files. + (inf): No more a global variable. + (C_entries): Take 2nd parameter `inf' instead of using the global one. + (find_entries): Added the cp1 var for optimisation. + (find_entries): Added more suffixes for assembler files. (Asm_funcs): Now finds labels even without an ending colon. 1994-03-30 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it) - * etags.c (main): use etags_getcwd for compatibility. - (etags_getcwd): new function. + * etags.c (main): Use etags_getcwd for compatibility. + (etags_getcwd): New function. 1994-03-25 Richard Stallman (rms@mole.gnu.ai.mit.edu) @@ -4549,22 +4553,22 @@ 1994-03-25 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead. - (main): don't allow the use of -t and -T in etags mode. - (print_help): don't show options enabled by default. - (print_version): show the emacs version number if VERSION is #defined. - (find_entries): add "ss" as suffix for Chez Scheme. + * etags.c (emacs_tags_format, ETAGS): Removed. Use CTAGS instead. + (main): Don't allow the use of -t and -T in etags mode. + (print_help): Don't show options enabled by default. + (print_version): Show the emacs version number if VERSION is #defined. + (find_entries): Add "ss" as suffix for Chez Scheme. 1994-03-23 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (cwd, outfiledir): vars added. + * etags.c (cwd, outfiledir): Vars added. (relative_filename, absolute_filename, absolute_dirname): functions added to compute filenames in tags files. - (process_file): filenames in tags file are relative to the + (process_file): Filenames in tags file are relative to the directory where the tags file is (useful with the -o option). - (main): initialise the outfiledir var. - (TYPEDST): added the `tignore' value. - (C_entries): corrected various small bugs. + (main): Initialise the outfiledir var. + (TYPEDST): Added the `tignore' value. + (C_entries): Corrected various small bugs. 1994-03-19 Richard Stallman (rms@mole.gnu.ai.mit.edu) @@ -4579,8 +4583,8 @@ 1994-03-14 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (TYPEDST): added the `tignore' value. - (C_entries): corrected various bugs, now correctly parses the + * etags.c (TYPEDST): Added the `tignore' value. + (C_entries): Corrected various bugs, now correctly parses the `extern "C" {' construction (patch by Tom R.Hageman). 1994-03-05 Richard Stallman (rms@mole.gnu.ai.mit.edu) @@ -4621,7 +4625,7 @@ 1994-02-22 Karl Heuer (kwzh@gnu.ai.mit.edu) * profile.c (get_time): Simplify; avoid calling index. - (main): exit on EOF. + (main): Exit on EOF. 1994-02-17 Francesco Potort,Al(B (pot@cnuce.cnr.it) @@ -4633,11 +4637,11 @@ 1994-02-14 Francesco Potort,Al(B (pot@fly) - * etags.c (absolute_pathnames, cwd): added global vars. - (longopts, print_help, main, process_file): put absolute filenames + * etags.c (absolute_pathnames, cwd): Added global vars. + (longopts, print_help, main, process_file): Put absolute filenames in the tag file if the -A --absolute-pathnames option is used. - (print_help): alfabetically order the options. - (malloc, realloc, strcpy, strncpy, strcmp): remove extern declar. + (print_help): Alfabetically order the options. + (malloc, realloc, strcpy, strncpy, strcmp): Remove extern declar. 1994-02-09 Richard Stallman (rms@mole.gnu.ai.mit.edu) @@ -4666,15 +4670,15 @@ 1994-01-14 Francesco Potort,Al(B (pot@cnuce.cnr.it) * etags.c (stab_entry, stab_create, stab_find, stab_search, - stab_type, add_keyword, C_reate_stab, C_create_stabs): deleted. + stab_type, add_keyword, C_reate_stab, C_create_stabs): Deleted. Use gperf generated hash table instead of linked list. - (C_stab_entry, hash, in_word_set, get_C_stab, C_symtype): added. + (C_stab_entry, hash, in_word_set, get_C_stab, C_symtype): Added. Mostly code generated by gperf. - (consider_token): removed unused parameter `lp'. - (PF_funcs, getit): allow subroutine and similar declarations + (consider_token): Removed unused parameter `lp'. + (PF_funcs, getit): Allow subroutine and similar declarations to span multiple lines. - (C_entries): check for newline if inchar to avoid bus errors. - (process_file, find_entries): distinguish among nonexistent + (C_entries): Check for newline if inchar to avoid bus errors. + (process_file, find_entries): Distinguish among nonexistent and not regular file. 1994-01-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) @@ -4811,14 +4815,14 @@ functions returning a pointer to a function, a la `signal', can be parsed. This also required new state `fstartlist' to `FUNCST'. (SAVE_TOKEN, RESTORE_TOKEN, TOKEN_SAVED_P): 1-deep token save stack. - (C_entries, CNL): use it to isolate preprocessor directive processing + (C_entries, CNL): Use it to isolate preprocessor directive processing from the other state engines. - (begtk): add '~', for C++ class destructors. + (begtk): Add '~', for C++ class destructors. 1993-11-02 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (consider_token): removed unused variable firsttok. - (prolog_getit): call pfnote with the right number of arguments. + * etags.c (consider_token): Removed unused variable firsttok. + (prolog_getit): Call pfnote with the right number of arguments. 1993-10-19 Paul Eggert (eggert@twinsun.com) @@ -4837,9 +4841,9 @@ 1993-10-01 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (process_file): dead code removed. + * etags.c (process_file): Dead code removed. (S_ISREG): #define it using S_IFREG if not defined. - (process_file): regular files have nothing to do with symlinks. + (process_file): Regular files have nothing to do with symlinks. 1993-09-28 Brian Fox (bfox@ai.mit.edu) @@ -4922,10 +4926,10 @@ 1993-08-04 Francesco Potort,Al(B (pot@spiff.gnu.ai.mit.edu) - * etags.c (L_isdef, L_isquote, L_getit): small optimisations. - (L_funcs): the (foo::defmumble stuff now should work. - (consider_token): function returned random value--corrected. - (C_entries): corrected == versus = typo. + * etags.c (L_isdef, L_isquote, L_getit): Small optimisations. + (L_funcs): The (foo::defmumble stuff now should work. + (consider_token): Function returned random value--corrected. + (C_entries): Corrected == versus = typo. 1993-08-01 Roland McGrath (roland@churchy.gnu.ai.mit.edu) @@ -4941,11 +4945,11 @@ * etags.c (FINCST): Added the fignore status. Means we are after the parameter list and before the open curly brace. Allows correct parsing of C++ constructors. - (C_entries, consider_token): make use of fignore. - (consider_token): reset funcdef when next_token_is_func: when in + (C_entries, consider_token): Make use of fignore. + (consider_token): Reset funcdef when next_token_is_func: when in ctags mode makes DEFVAR and others work better. - (L_isquote): function that recognises the "(quote" string. - (L_getit): ignore quoting via "'" or "(quote". Useful for defalias. + (L_isquote): Function that recognises the "(quote" string. + (L_getit): Ignore quoting via "'" or "(quote". Useful for defalias. 1993-07-29 Paul Eggert (eggert@twinsun.com) @@ -4977,20 +4981,20 @@ 1993-07-08 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (alloca): removed all references to it. - (main): now calls xnew instead of alloca for portability. - (../src/config.h): included only if HAVE_CONFIG_H. - (const): void definition removed--config.h takes care of it. + * etags.c (alloca): Removed all references to it. + (main): Now calls xnew instead of alloca for portability. + (../src/config.h): Included only if HAVE_CONFIG_H. + (const): Void definition removed--config.h takes care of it. 1993-07-08 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (consider_token): was `==', now is `='. + * etags.c (consider_token): Was `==', now is `='. (consider_token): DEFUNs now treated like funcs in ctags mode. - * etags.c (LEVEL_OK_FOR_FUNCDEF): removed. - (C_entries): optimized the test that used LEVEL_OK_FOR_FUNCDEF. - (C_entries): removed a piece of useless code. - (C_entries): making typedef tags is delayed until a semicolon + * etags.c (LEVEL_OK_FOR_FUNCDEF): Removed. + (C_entries): Optimized the test that used LEVEL_OK_FOR_FUNCDEF. + (C_entries): Removed a piece of useless code. + (C_entries): Making typedef tags is delayed until a semicolon is met. This handles "typedef int X, Y, Z;" correctly. 1993-07-06 Jim Blandy (jimb@geech.gnu.ai.mit.edu) @@ -5266,38 +5270,38 @@ 1993-03-22 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (YACC): flag added to c_ext. - (c_ext): no more a synonim for c_ext&C_PLPL because of YACC. - (find_entries): consistently use streq when reasonable. - (find_entries): a .y file is a yacc file. + * etags.c (YACC): Flag added to c_ext. + (c_ext): No more a synonim for c_ext&C_PLPL because of YACC. + (find_entries): Consistently use streq when reasonable. + (find_entries): A .y file is a yacc file. (get_C_stab): c_ext becomes c_ext&C_PLPL. - (C_entries): logical cplpl means c_ext&C_PLPL. - (C_entries): logical yacc_rules means we are after the first %%. - (C_entries): added logic for yacc files. + (C_entries): Logical cplpl means c_ext&C_PLPL. + (C_entries): Logical yacc_rules means we are after the first %%. + (C_entries): Added logic for yacc files. 1993-03-16 Francesco Potort,Al(B (pot@cnuce.cnr.it) * etags.c (C_entries): ':' case moved to the second switch. - (C_entries): do not examine token if structdef==scolonseen. + (C_entries): Do not examine token if structdef==scolonseen. (consider_token): structtag set to null string for enum. 1993-03-12 Francesco Potort,Al(B (pot@cnuce.cnr.it) - * etags.c (GET_COOKIE): and related macros removed. - (logical): is now int, no more a char. - (reg): define deleted. - (isgood, _gd, notgd): deleted. - (gotone): deleted. - (TOKEN): member linestart removed. - (linepos, prev_linepos, lb1): deleted. - (main): call initbuffer on lbs array instead of lb1. - (init): removed the initialisation of the logical _gd array; - (find_entries): a .sa suffix means assembler file. + * etags.c (GET_COOKIE): And related macros removed. + (logical): Is now int, no more a char. + (reg): Define deleted. + (isgood, _gd, notgd): Deleted. + (gotone): Deleted. + (TOKEN): Member linestart removed. + (linepos, prev_linepos, lb1): Deleted. + (main): Call initbuffer on lbs array instead of lb1. + (init): Removed the initialisation of the logical _gd array; + (find_entries): A .sa suffix means assembler file. (C_create_stab): "auto", "void", "extern", "static" are st_C_typespec. All C state machines rewritten. - (C_entries): complete rewrite. - (condider_token): complete rewrite. - (getline): deleted. + (C_entries): Complete rewrite. + (condider_token): Complete rewrite. + (getline): Deleted. 1993-03-01 Francesco Potort,Al(B (pot@fly.CNUCE.CNR.IT) @@ -5311,7 +5315,7 @@ 1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) - * Makefile.in (EXECUTABLES): added rcs-checkin. + * Makefile.in (EXECUTABLES): Added rcs-checkin. * Makefile.in (unlock, relock): New productions. @@ -5594,7 +5598,7 @@ 1992-05-04 Jim Blandy (jimb@pogo.cs.oberlin.edu) - * Makefile.in: flags in CC invocations rearranged for no reason. + * Makefile.in: Flags in CC invocations rearranged for no reason. 1992-04-20 Jim Blandy (jimb@pogo.cs.oberlin.edu) @@ -6007,13 +6011,13 @@ 1989-04-18 Richard Stallman (rms@sugar-bombs.ai.mit.edu) - * loadst.c: on bsd4.3, use gettimeofday instead of CPUSTATES. + * loadst.c: On bsd4.3, use gettimeofday instead of CPUSTATES. 1989-03-15 Jeff Peck (rms@sugar-bombs.ai.mit.edu) * emacstool.c: setenv IN_EMACSTOOL=t, TERM=sun, TERMCAP=. - * emacsstool.1: update to document environment variables. + * emacsstool.1: Update to document environment variables. 1989-02-21 Richard Stallman (rms@sugar-bombs.ai.mit.edu) @@ -6114,7 +6118,7 @@ 1988-09-24 Richard Stallman (rms@gluteus.ai.mit.edu) - * etags.c (main): default setting of eflag was backwards. + * etags.c (main): Default setting of eflag was backwards. 1988-09-23 Richard Stallman (rms@sugar-bombs.ai.mit.edu) @@ -6197,7 +6201,7 @@ 1988-04-28 Richard Stallman (rms@frosted-flakes.ai.mit.edu) * movemail.c: #undef close, since config can #define it on V.3. - * emacsclient.c, fakemail.c, loadst.c, server.c: likewise. + * emacsclient.c, fakemail.c, loadst.c, server.c: Likewise. 1988-04-26 Richard Stallman (rms@lucky-charms.ai.mit.edu) @@ -6208,9 +6212,9 @@ 1988-03-20 Richard M. Stallman (rms@wilson) - * server.c [not BSD and not HAVE_SYSVIPC]: fix error message. - - * loadst.c (main) [XENIX]: use /usr/spool/mail, not /usr/mail. + * server.c [not BSD and not HAVE_SYSVIPC]: Fix error message. + + * loadst.c (main) [XENIX]: Use /usr/spool/mail, not /usr/mail. ;; Local Variables: ;; coding: iso-2022-7bit
--- a/lib-src/makefile.w32-in Tue May 08 18:15:58 2007 +0000 +++ b/lib-src/makefile.w32-in Wed May 09 23:47:51 2007 +0000 @@ -24,7 +24,7 @@ .PHONY: $(ALL) -VERSION = 22.0.99 +VERSION = 22.1.50 LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \ -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
--- a/lisp/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/lisp/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,3 +1,43 @@ +2007-05-09 Stefan Monnier <monnier@iro.umontreal.ca> + + * vc-hooks.el (vc-find-root): Stop searching when the user changes. + +2007-05-09 Edward O'Connor <hober0@gmail.com> (tiny change) + + * progmodes/python.el (python-font-lock-keywords) + (python-open-block-statement-p, python-mode): Add support for the new + "with" keyword. + +2007-05-08 Stefan Monnier <monnier@iro.umontreal.ca> + + * diff-mode.el (diff-apply-hunk, diff-test-hunk): Don't do by default + the exact opposite of diff-goto-source. + + * emacs-lisp/advice.el (ad-special-forms): Remove. + (ad-special-form-p): Use subr-arity. + + * newcomment.el (comment-search-forward): Make sure we search forward. + (comment-enter-backward): Try and distinguish the non-matching case at + EOB from the non-matching case with a missing comment-end-skip for + a 2-char comment ender. + (comment-choose-indent): New function extracted from comment-indent. + Improve the alignment algorithm. + (comment-indent): Use it. + + * textmodes/sgml-mode.el (sgml-lexical-context): Add handling of + XML style Processing Instructions. + (sgml-parse-tag-backward): Handle XML-style PIs. Also ensure progress. + (sgml-calculate-indent): Handle `pi' context. + + * vc.el: Ensure that update-changelog issues an error when used with + a backend that does not implement it. + (vc-update-changelog-rcs2log): Rename from vc-default-update-changelog. + Remove `backend' argument. Use expand-file-name. + (vc-cvs-update-changelog, vc-rcs-update-changelog): New aliases. + + * progmodes/python.el (python-end-of-block): Revert last change. + (python-end-of-statement): Make sure we move *forward*. + 2007-05-08 Richard Stallman <rms@gnu.org> * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): @@ -17,6 +57,29 @@ * emacs-lisp/eldoc.el (turn-on-eldoc-mode): Doc fix. +2007-05-05 Stefan Monnier <monnier@iro.umontreal.ca> + + * diff.el (diff): Use buffer-local vars diff-old-file and diff-new-file + rather than storing their value in the revert-buffer function. + +2007-05-04 Nick Roberts <nickrob@snap.net.nz> + + * t-mouse.el (t-mouse-mode): Do nothing on a graphical display + when disabling t-mouse-mode. + +2007-05-01 Davis Herring <herring@lanl.gov> + + * calendar/timeclock.el: Update version number. + (timeclock-modeline-display): Mention timeclock-use-display-time + in explanatory message. + (timeclock-in): Fix non-interactive workday specifications. + (timeclock-log): Don't kill the log buffer if it already existed. + Suppress warnings when finding the log. Don't check for a nil + project twice. Run hooks after killing the buffer (if applicable). + (timeclock-geometric-mean): Rename to `timeclock-mean' (it never + was geometric). All uses changed. + (timeclock-generate-report): Support prefix argument. + 2007-05-03 Ryan Yeske <rcyeske@gmail.com> * net/rcirc.el (rcirc-timeout-seconds): Increase to prevent unwanted @@ -26,21 +89,10 @@ * dired-x.el: Revert 2007-04-06 change. -2007-04-30 Nick Roberts <nickrob@snap.net.nz> - - * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so - don't put stop on toolbar. - 2007-04-29 Stephen Berman <Stephen.Berman@gmx.net> * find-dired.el (find-dired-filter): Propertize all text down to eob. -2007-04-29 Davis Herring <herring@lanl.gov> - - * calendar/timeclock.el (timeclock-in): Fix non-interactive - workday specifications. - (timeclock-log): Don't kill the log buffer if it already existed. - 2007-04-29 Richard Stallman <rms@gnu.org> * international/mule.el (auto-coding-alist): Add pdf => no-conversion. @@ -54,6 +106,11 @@ * progmodes/sh-script.el (sh-mode): Recognize .profile as sh style. +2007-04-28 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so + don't put stop on toolbar. + 2007-04-28 Stefan Monnier <monnier@iro.umontreal.ca> * vc-hooks.el (vc-ignore-dir-regexp): Add /.../ for the DFS filesystem. @@ -63,8 +120,6 @@ * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): Use ./mh-e instead of $(lisp)/mh-e. - * textmodes/fill.el (fill-paragraph): Doc fix. - 2007-04-28 Glenn Morris <rgm@gnu.org> * image-dired.el (image-dired-cmd-create-thumbnail-options) @@ -76,10 +131,13 @@ * textmodes/flyspell.el (flyspell-auto-correct-previous-word): Use window-start and window-end. -2007-04-26 Glenn Morris <rgm@gnu.org> - - * progmodes/python.el: Restore file pending consideration of legal - status. +2007-04-27 Andreas Schwab <schwab@suse.de> + + * emacs-lisp/sregex.el (sregexq): Fix doc string quoting. + +2007-04-27 Eli Zaretskii <eliz@gnu.org> + + * textmodes/fill.el (fill-paragraph): Doc fix. 2007-04-26 Luc Teirlinck <teirllm@dms.auburn.edu> @@ -90,6 +148,8 @@ * button.el (button): Use underline if supported, else fall back to color. + * version.el (emacs-version): Increase to 22.1.50. + 2007-04-25 Richard Stallman <rms@gnu.org> * hi-lock.el (hi-lock-file-patterns-policy): Default to `ask'. @@ -110,10 +170,6 @@ * custom.el (defface): Doc fix. -2007-04-24 Chong Yidong <cyd@stupidchicken.com> - - * progmodes/python.el: Remove due to unclear legal issues. - 2007-04-24 J.D. Smith <jdsmith@as.arizona.edu> * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp): @@ -13657,8 +13713,8 @@ 2006-01-29 Edward O'Connor <ted@oconnor.cx> - * emulation/viper.el (viper-major-mode-modifier-list): Add - insert-state and vi-state entries for erc-mode. + * emulation/viper.el (viper-major-mode-modifier-list): + Add insert-state and vi-state entries for erc-mode. (viper-go-away, viper-set-hooks): Add and remove viper-comint-mode-hook from erc-mode-hook as appropriate.
--- a/lisp/ChangeLog.8 Tue May 08 18:15:58 2007 +0000 +++ b/lisp/ChangeLog.8 Wed May 09 23:47:51 2007 +0000 @@ -5354,12 +5354,12 @@ * international/mule.el (auto-coding-alist): Add .tgz. -1999-05-2 Eli Zaretskii <eliz@is.elta.co.il> +1999-05-02 Eli Zaretskii <eliz@is.elta.co.il> * international/codepage.el (cp-coding-system-for-codepage-1): Make the magnification parameter for the -dos encoder be 2. -1999-05-2 Andrew Innes <andrewi@gnu.org> +1999-05-02 Andrew Innes <andrewi@gnu.org> * term/w32-win.el (w32-drag-n-drop): Select file in window where it is dropped, rather than current window.
--- a/lisp/calendar/timeclock.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/calendar/timeclock.el Wed May 09 23:47:51 2007 +0000 @@ -5,7 +5,7 @@ ;; Author: John Wiegley <johnw@gnu.org> ;; Created: 25 Mar 1999 -;; Version: 2.6 +;; Version: 2.6.1 ;; Keywords: calendar data ;; This file is part of GNU Emacs. @@ -304,8 +304,8 @@ ;; Update immediately so there is a visible change ;; on calling this function. (if display-time-mode (timeclock-update-modeline) - (message "Activate `display-time-mode' to see \ -timeclock information")) + (message "Activate `display-time-mode' or turn off \ +`timeclock-use-display-time' to see timeclock information")) (add-hook 'display-time-hook 'timeclock-update-modeline)) (setq timeclock-update-timer (run-at-time nil 60 'timeclock-update-modeline)))) @@ -375,8 +375,9 @@ (setq timeclock-discrepancy (- (or timeclock-discrepancy 0) workday)) (if (not (= workday timeclock-workday)) - (timeclock-log "h" (and (numberp arg) - (number-to-string arg)))))) + (timeclock-log "h" (number-to-string + (/ workday (if (zerop (% workday (* 60 60))) + 60 60.0) 60)))))) (timeclock-log "i" (or project (and timeclock-get-project-function (or find-project (interactive-p)) @@ -588,6 +589,38 @@ (message "%s" string) string))) +(defun timeclock-make-hours-explicit (old-default) + "Specify all workday lengths in `timeclock-file'. +OLD-DEFAULT hours are set for every day that has no number indicated." + (interactive "P") + (if old-default (setq old-default (prefix-numeric-value old-default)) + (error "timelog-make-hours-explicit requires an explicit argument")) + (let ((extant-timelog (find-buffer-visiting timeclock-file)) + current-date) + (with-current-buffer (find-file-noselect timeclock-file t) + (unwind-protect + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (while (progn (skip-chars-forward "\n") (not (eobp))) + ;; This is just a variant of `timeclock-moment-regexp'. + (unless (looking-at + (concat "^\\([bhioO]\\) \\([0-9]+/[0-9]+/[0-9]+\\) " + "\\([0-9]+:[0-9]+:[0-9]+\\)")) + (error "Can't parse `%s'" timeclock-file)) + (let ((this-date (match-string 2))) + (unless (or (and current-date + (string= this-date current-date)) + (string= (match-string 1) "h")) + (insert (format "h %s %s %s\n" (match-string 2) + (match-string 3) old-default))) + (if (string-match "^[ih]" (match-string 1)) ; ignore logouts + (setq current-date this-date))) + (forward-line)) + (save-buffer))) + (unless extant-timelog (kill-buffer (current-buffer))))))) + ;;; Internal Functions: (defvar timeclock-project-list nil) @@ -651,31 +684,34 @@ "Log the event CODE to the timeclock log, at the time of call. If PROJECT is a string, it represents the project which the event is being logged for. Normally only \"in\" events specify a project." - (with-current-buffer (find-file-noselect timeclock-file) - (goto-char (point-max)) - (if (not (bolp)) - (insert "\n")) - (let ((now (current-time))) - (insert code " " - (format-time-string "%Y/%m/%d %H:%M:%S" now) - (or (and project - (stringp project) - (> (length project) 0) - (concat " " project)) - "") - "\n") - (if (equal (downcase code) "o") - (setq timeclock-last-period - (- (timeclock-time-to-seconds now) - (timeclock-time-to-seconds - (cadr timeclock-last-event))) - timeclock-discrepancy - (+ timeclock-discrepancy - timeclock-last-period))) - (setq timeclock-last-event (list code now project))) - (save-buffer) - (run-hooks 'timeclock-event-hook) - (kill-buffer (current-buffer)))) + (let ((extant-timelog (find-buffer-visiting timeclock-file))) + (with-current-buffer (find-file-noselect timeclock-file t) + (save-excursion + (save-restriction + (widen) + (goto-char (point-max)) + (if (not (bolp)) + (insert "\n")) + (let ((now (current-time))) + (insert code " " + (format-time-string "%Y/%m/%d %H:%M:%S" now) + (or (and (stringp project) + (> (length project) 0) + (concat " " project)) + "") + "\n") + (if (equal (downcase code) "o") + (setq timeclock-last-period + (- (timeclock-time-to-seconds now) + (timeclock-time-to-seconds + (cadr timeclock-last-event))) + timeclock-discrepancy + (+ timeclock-discrepancy + timeclock-last-period))) + (setq timeclock-last-event (list code now project))))) + (save-buffer) + (unless extant-timelog (kill-buffer (current-buffer))))) + (run-hooks 'timeclock-event-hook)) (defvar timeclock-moment-regexp (concat "\\([bhioO]\\)\\s-+" @@ -1147,8 +1183,8 @@ (setcar (nthcdr 2 decoded) 0) (apply 'encode-time decoded))) -(defun timeclock-geometric-mean (l) - "Compute the geometric mean of the values in the list L." +(defun timeclock-mean (l) + "Compute the arithmetic mean of the values in the list L." (let ((total 0) (count 0)) (while l @@ -1163,7 +1199,7 @@ "Generate a summary report based on the current timelog file. By default, the report is in plain text, but if the optional argument HTML-P is non-nil, HTML markup is added." - (interactive) + (interactive "P") (let ((log (timeclock-log-data)) (today (timeclock-day-base))) (if html-p (insert "<p>")) @@ -1295,14 +1331,10 @@ ;; average statistics (let ((i 0) (l 5)) (while (< i l) - (aset time-in i (timeclock-geometric-mean - (cdr (aref time-in i)))) - (aset time-out i (timeclock-geometric-mean - (cdr (aref time-out i)))) - (aset breaks i (timeclock-geometric-mean - (cdr (aref breaks i)))) - (aset workday i (timeclock-geometric-mean - (cdr (aref workday i)))) + (aset time-in i (timeclock-mean (cdr (aref time-in i)))) + (aset time-out i (timeclock-mean (cdr (aref time-out i)))) + (aset breaks i (timeclock-mean (cdr (aref breaks i)))) + (aset workday i (timeclock-mean (cdr (aref workday i)))) (setq i (1+ i)))) ;; Output the HTML table (insert "<tr>\n")
--- a/lisp/diff-mode.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/diff-mode.el Wed May 09 23:47:51 2007 +0000 @@ -72,7 +72,7 @@ :group 'diff-mode) (defcustom diff-jump-to-old-file nil - "*Non-nil means `diff-goto-source' jumps to the old file. + "Non-nil means `diff-goto-source' jumps to the old file. Else, it jumps to the new file." :type 'boolean :group 'diff-mode) @@ -1276,7 +1276,7 @@ (if (> (- (car forw) orig) (- orig (car back))) back forw) (or back forw)))) -(defsubst diff-xor (a b) (if a (not b) b)) +(defsubst diff-xor (a b) (if a (if (not b) a) b)) (defun diff-find-source-location (&optional other-file reverse) "Find out (BUF LINE-OFFSET POS SRC DST SWITCHED). @@ -1358,8 +1358,15 @@ With a prefix argument, REVERSE the hunk." (interactive "P") (destructuring-bind (buf line-offset pos old new &optional switched) - ;; If REVERSE go to the new file, otherwise go to the old. - (diff-find-source-location (not reverse) reverse) + ;; Sometimes we'd like to have the following behavior: if REVERSE go + ;; to the new file, otherwise go to the old. But that means that by + ;; default we use the old file, which is the opposite of the default + ;; for diff-goto-source, and is thus confusing. Also when you don't + ;; know about it it's pretty surprising. + ;; TODO: make it possible to ask explicitly for this behavior. + ;; + ;; This is duplicated in diff-test-hunk. + (diff-find-source-location nil reverse) (cond ((null line-offset) (error "Can't find the text to patch")) @@ -1403,8 +1410,7 @@ With a prefix argument, try to REVERSE the hunk." (interactive "P") (destructuring-bind (buf line-offset pos src dst &optional switched) - ;; If REVERSE go to the new file, otherwise go to the old. - (diff-find-source-location (not reverse) reverse) + (diff-find-source-location nil reverse) (set-window-point (display-buffer buf) (+ (car pos) (cdr src))) (diff-hunk-status-msg line-offset (diff-xor reverse switched) t)))
--- a/lisp/diff.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/diff.el Wed May 09 23:47:51 2007 +0000 @@ -124,9 +124,13 @@ (erase-buffer)) (buffer-enable-undo (current-buffer)) (diff-mode) + ;; Use below 2 vars for backward-compatibility. + (set (make-local-variable 'diff-old-file) old) + (set (make-local-variable 'diff-new-file) new) + (set (make-local-variable 'diff-extra-args) (list switches no-async)) (set (make-local-variable 'revert-buffer-function) - `(lambda (ignore-auto noconfirm) - (diff ',old ',new ',switches ',no-async))) + (lambda (ignore-auto noconfirm) + (apply 'diff diff-old-file diff-new-file diff-extra-args))) (set (make-local-variable 'diff-old-temp-file) old-alt) (set (make-local-variable 'diff-new-temp-file) new-alt) (setq default-directory thisdir) @@ -186,5 +190,5 @@ (provide 'diff) -;;; arch-tag: 7de2c29b-7ea5-4b85-9b9d-72dd860de2bd +;; arch-tag: 7de2c29b-7ea5-4b85-9b9d-72dd860de2bd ;;; diff.el ends here
--- a/lisp/emacs-lisp/advice.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/emacs-lisp/advice.el Wed May 09 23:47:51 2007 +0000 @@ -2467,23 +2467,11 @@ "Take a macro function DEFINITION and make a lambda out of it." `(cdr ,definition)) -;; There is no way to determine whether some subr is a special form or not, -;; hence we need this list (which is probably out of date): -(defvar ad-special-forms - (let ((tem '(and catch cond condition-case defconst defmacro - defun defvar function if interactive let let* - or prog1 prog2 progn quote save-current-buffer - save-excursion save-restriction save-window-excursion - setq setq-default unwind-protect while - with-output-to-temp-buffer))) - ;; track-mouse could be void in some configurations. - (if (fboundp 'track-mouse) - (push 'track-mouse tem)) - (mapcar 'symbol-function tem))) - -(defmacro ad-special-form-p (definition) - ;;"non-nil if DEFINITION is a special form." - (list 'memq definition 'ad-special-forms)) +(defun ad-special-form-p (definition) + "Non-nil iff DEFINITION is a special form." + (if (and (symbolp definition) (fboundp definition)) + (setq definition (indirect-function definition))) + (and (subrp definition) (eq (cdr (subr-arity definition)) 'unevalled))) (defmacro ad-interactive-p (definition) ;;"non-nil if DEFINITION can be called interactively."
--- a/lisp/emacs-lisp/sregex.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/emacs-lisp/sregex.el Wed May 09 23:47:51 2007 +0000 @@ -436,11 +436,11 @@ or end of a word. - the symbol `bow' - Stands for \"\\\\\\=<\", matching the empty string at the beginning of a + Stands for \"\\\\=\\<\", matching the empty string at the beginning of a word. - the symbol `eow' - Stands for \"\\\\\\=>\", matching the empty string at the end of a word. + Stands for \"\\\\=\\>\", matching the empty string at the end of a word. - the symbol `wordchar' Stands for the regex \"\\\\w\", matching a word-constituent character
--- a/lisp/gnus/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/lisp/gnus/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,3 +1,9 @@ +2007-05-09 Didier Verna <didier@xemacs.org> + + * gnus-diary.el, nndiary.el: Remove the description comment (nndiary is + now properly documented in the Gnus manual). Fix the spelling of "Back + End". + 2007-04-19 Katsumi Yamaoka <yamaoka@jpl.org> * gnus-art.el (gnus-mime-strip-charset-parameters): New function.
--- a/lisp/gnus/gnus-diary.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/gnus/gnus-diary.el Wed May 09 23:47:51 2007 +0000 @@ -1,4 +1,4 @@ -;;; gnus-diary.el --- Wrapper around the NNDiary Gnus backend +;;; gnus-diary.el --- Wrapper around the NNDiary Gnus back end ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007 Free Software Foundation, Inc. @@ -33,63 +33,8 @@ ;; Description: ;; =========== -;; Gnus-Diary is a wrapper around the NNDiary Gnus backend. It is here to -;; make your nndiary-user life easier in different ways. So, you don't have -;; to use it if you don't want to. But, really, you should. - -;; Gnus-Diary offers the following features on top of the NNDiary backend: - -;; - A nice summary line format: -;; Displaying diary messages in standard summary line format (usually -;; something like "<From Joe>: <Subject>") is pretty useless. Most of the -;; time, you're the one who wrote the message, and you mostly want to see -;; the event's date. Gnus-Diary offers you a nice summary line format -;; which will do this. By default, a summary line will appear like this: -;; -;; <Event Date>: <Subject> <Remaining time> -;; -;; for example, here's how Joe's birthday is displayed in my -;; "nndiary:birhdays" summary buffer (the message is expirable, but will -;; never be deleted, as it specifies a regular event): -;; -;; E Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week) - -;; - More article sorting functions: -;; Gnus-Diary adds a new sorting function called -;; `gnus-summary-sort-by-schedule'. This function lets you organize your -;; diary summary buffers from the closest event to the farthest one. - -;; - Automatic generation of diary group parameters: -;; When you create a new diary group, or visit one, Gnus-Diary checks your -;; group parameters, and if needed, sets the summary line format to the -;; diary-specific value, adds the diary-specific sorting functions, and -;; also adds the different `X-Diary-*' headers to the group's -;; posting-style. It is then easier to send a diary message, because if -;; you use `C-u a' or `C-u m' on a diary group to prepare a message, these -;; headers will be inserted automatically (but not filled with proper -;; values yet). - -;; - An interactive mail-to-diary convertion function: -;; The function `gnus-diary-check-message' ensures that the current message -;; contains all the required diary headers, and prompts you for values / -;; correction if needed. This function is hooked in the nndiary backend so -;; that moving an article to an nndiary group will trigger it -;; automatically. It is also bound to `C-c D c' in message-mode and -;; article-edit-mode in order to ease the process of converting a usual -;; mail to a diary one. This function takes a prefix argument which will -;; force prompting of all diary headers, regardless of their -;; presence/validity. That way, you can very easily reschedule a diary -;; message for instance. - - -;; Usage: -;; ===== - -;; 0/ Don't use any `gnus-user-format-function-[d|D]'. Gnus-Diary provides -;; both of these (sorry if you used them before). -;; 1/ Add '(require 'gnus-diary) to your gnusrc file. -;; 2/ Customize your gnus-diary options to suit your needs. - +;; gnus-diary is a utility toolkit used on top of the nndiary back end. It is +;; now fully documented in the Gnus manual. ;; Bugs / Todo: @@ -103,7 +48,7 @@ (require 'gnus-art) (defgroup gnus-diary nil - "Utilities on top of the nndiary backend for Gnus." + "Utilities on top of the nndiary back end for Gnus." :version "22.1" :group 'gnus) @@ -136,7 +81,7 @@ :group 'gnus-diary) (defconst gnus-diary-version nndiary-version - "Current Diary backend version.") + "Current Diary back end version.") ;; Compatibility functions ================================================== @@ -334,7 +279,7 @@ )) ;; Called when a group is subscribed. This is needed because groups created -;; because of mail splitting are *not* created with the backend function. +;; because of mail splitting are *not* created with the back end function. ;; Thus, `nndiary-request-create-group-hooks' is inoperative. (defun gnus-diary-maybe-update-group-parameters (group) (when (eq (car (gnus-find-method-for-group group)) 'nndiary) @@ -452,7 +397,7 @@ ;; The end ================================================================== (defun gnus-diary-version () - "Current Diary backend version." + "Current Diary back end version." (interactive) (message "NNDiary version %s" nndiary-version))
--- a/lisp/gnus/nndiary.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/gnus/nndiary.el Wed May 09 23:47:51 2007 +0000 @@ -1,4 +1,4 @@ -;;; nndiary.el --- A diary backend for Gnus +;;; nndiary.el --- A diary back end for Gnus ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007 Free Software Foundation, Inc. @@ -33,127 +33,8 @@ ;; Description: ;; =========== -;; This package implements NNDiary, a diary backend for Gnus. NNDiary is a -;; mail backend, pretty similar to nnml in its functionnning (it has all the -;; features of nnml, actually), but in which messages are treated as event -;; reminders. - -;; Here is a typical scenario: -;; - You've got a date with Andy Mc Dowell or Bruce Willis (select according -;; to your sexual preference) in one month. You don't want to forget it. -;; - Send a (special) diary message to yourself (see below). -;; - Forget all about it and keep on getting and reading new mail, as usual. -;; - From time to time, as you type `g' in the group buffer and as the date -;; is getting closer, the message will pop up again, just like if it were -;; new and unread. -;; - Read your "new" messages, this one included, and start dreaming of the -;; night you're gonna have. -;; - Once the date is over (you actually fell asleep just after dinner), the -;; message will be automatically deleted if it is marked as expirable. - -;; Some more notes on the diary backend: -;; - NNDiary is a *real* mail backend. You *really* send real diary -;; messsages. This means for instance that you can give appointements to -;; anybody (provided they use Gnus and NNDiary) by sending the diary message -;; to them as well. -;; - However, since NNDiary also has a 'request-post method, you can also -;; `C-u a' instead of `C-u m' on a diary group and the message won't actually -;; be sent; just stored in the group. -;; - The events you want to remember need not be punctual. You can set up -;; reminders for regular dates (like once each week, each monday at 13:30 -;; and so on). Diary messages of this kind will never be deleted (unless -;; you do it explicitely). But that, you guessed. - - -;; Usage: -;; ===== - -;; 1/ NNDiary has two modes of operation: traditional (the default) and -;; autonomous. -;; a/ In traditional mode, NNDiary does not get new mail by itself. You -;; have to move mails from your primary mail backend to nndiary -;; groups. -;; b/ In autonomous mode, NNDiary retrieves its own mail and handles it -;; independantly of your primary mail backend. To use NNDiary in -;; autonomous mode, you have several things to do: -;; i/ Put (setq nndiary-get-new-mail t) in your gnusrc file. -;; ii/ Diary messages contain several `X-Diary-*' special headers. -;; You *must* arrange that these messages be split in a private -;; folder *before* Gnus treat them. You need this because Gnus -;; is not able yet to manage multiple backends for mail -;; retrieval. Getting them from a separate source will -;; compensate this misfeature to some extent, as we will see. -;; As an example, here's my procmailrc entry to store diary files -;; in ~/.nndiary (the default nndiary mail source file): -;; -;; :0 HD : -;; * ^X-Diary -;; .nndiary -;; iii/ Customize the variables `nndiary-mail-sources' and -;; `nndiary-split-methods'. These are replacements for the usual -;; mail sources and split methods which, and will be used in -;; autonomous mode. `nndiary-mail-sources' defaults to -;; '(file :path "~/.nndiary"). -;; 2/ Install nndiary somewhere Emacs / Gnus can find it. Normally, you -;; *don't* have to '(require 'nndiary) anywhere. Gnus will do so when -;; appropriate as long as nndiary is somewhere in the load path. -;; 3/ Now, customize the rest of nndiary. In particular, you should -;; customize `nndiary-reminders', the list of times when you want to be -;; reminded of your appointements (e.g. 3 weeks before, then 2 days -;; before, then 1 hour before and that's it). -;; 4/ You *must* use the group timestamp feature of Gnus. This adds a -;; timestamp to each groups' parameters (please refer to the Gnus -;; documentation ("Group Timestamp" info node) to see how it's done. -;; 5/ Once you have done this, you may add a permanent nndiary virtual server -;; (something like '(nndiary "")) to your `gnus-secondary-select-methods'. -;; Yes, this server will be able to retrieve mails and split them when you -;; type `g' in the group buffer, just as if it were your only mail backend. -;; This is the benefit of using a private folder. -;; 6/ Hopefully, almost everything (see the TODO section below) will work as -;; expected when you restart Gnus: in the group buffer, `g' and `M-g' will -;; also get your new diary mails, `F' will find your new diary groups etc. - - -;; How to send diary messages: -;; ========================== - -;; There are 7 special headers in diary messages. These headers are of the -;; form `X-Diary-<something>', the <something> being one of `Minute', `Hour', -;; `Dom', `Month', `Year', `Time-Zone' and `Dow'. `Dom' means "Day of Month", -;; and `dow' means "Day of Week". These headers actually behave like crontab -;; specifications and define the event date(s). - -;; For all headers but the `Time-Zone' one, a header value is either a -;; star (meaning all possible values), or a list of fields (separated by a -;; comma). A field is either an integer, or a range. A range is two integers -;; separated by a dash. Possible integer values are 0-59 for `Minute', 0-23 -;; for `Hour', 1-31 for `Dom', `1-12' for Month, above 1971 for `Year' and 0-6 -;; for `Dow' (0 = sunday). As a special case, a star in either `Dom' or `Dow' -;; doesn't mean "all possible values", but "use only the other field". Note -;; that if both are star'ed, the use of either one gives the same result :-), - -;; The `Time-Zone' header is special in that it can have only one value (you -;; bet ;-). -;; A star doesn't mean "all possible values" (because it has no sense), but -;; "the current local time zone". - -;; As an example, here's how you would say "Each Monday and each 1st of month, -;; at 12:00, 20:00, 21:00, 22:00, 23:00 and 24:00, from 1999 to 2010" (I let -;; you find what to do then): -;; -;; X-Diary-Minute: 0 -;; X-Diary-Hour: 12, 20-24 -;; X-Diary-Dom: 1 -;; X-Diary-Month: * -;; X-Diary-Year: 1999-2010 -;; X-Diary-Dow: 1 -;; X-Diary-Time-Zone: * -;; -;; -;; Sending a diary message is not different from sending any other kind of -;; mail, except that such messages are identified by the presence of these -;; special headers. - +;; nndiary is a mail back end designed to handle mails as diary event +;; reminders. It is now fully documented in the Gnus manual. ;; Bugs / Todo: @@ -161,43 +42,43 @@ ;; * Respooling doesn't work because contrary to the request-scan function, ;; Gnus won't allow me to override the split methods when calling the -;; respooling backend functions. +;; respooling back end functions. ;; * There's a bug in the time zone mechanism with variable TZ locations. ;; * We could allow a keyword like `ask' in X-Diary-* headers, that would mean ;; "ask for value upon reception of the message". ;; * We could add an optional header X-Diary-Reminders to specify a special ;; reminders value for this message. Suggested by Jody Klymak. ;; * We should check messages validity in other circumstances than just -;; moving an article from sonwhere else (request-accept). For instance, when -;; editing / saving and so on. +;; moving an article from somewhere else (request-accept). For instance, +;; when editing / saving and so on. ;; Remarks: ;; ======= -;; * nnoo. -;; NNDiary is very similar to nnml. This makes the idea of using nnoo (to -;; derive nndiary from nnml) natural. However, my experience with nnoo is -;; that for reasonably complex backends like this one, noo is a burden -;; rather than an help. It's tricky to use, not everything can be -;; inherited, what can be inherited and when is not very clear, and you've -;; got to be very careful because a little mistake can fuck up your your -;; other backends, especially because their variables will be use instead of -;; your real ones. Finally, I found it easier to just clone the needed -;; parts of nnml, and tracking nnml updates is not a big deal. +;; * nnoo. NNDiary is very similar to nnml. This makes the idea of using nnoo +;; (to derive nndiary from nnml) natural. However, my experience with nnoo +;; is that for reasonably complex back ends like this one, noo is a burden +;; rather than an help. It's tricky to use, not everything can be inherited, +;; what can be inherited and when is not very clear, and you've got to be +;; very careful because a little mistake can fuck up your other back ends, +;; especially because their variables will be use instead of your real ones. +;; Finally, I found it easier to just clone the needed parts of nnml, and +;; tracking nnml updates is not a big deal. ;; IMHO, nnoo is actually badly designed. A much simpler, and yet more ;; powerful one would be to make *real* functions and variables for a new -;; backend based on another. Lisp is a reflexive language so that's a very +;; back end based on another. Lisp is a reflexive language so that's a very ;; easy thing to do: inspect the function's form, replace occurences of ;; <nnfrom> (even in strings) with <nnto>, and you're done. ;; * nndiary-get-new-mail, nndiary-mail-source and nndiary-split-methods: ;; NNDiary has some experimental parts, in the sense Gnus normally uses only -;; one mail backends for mail retreival and splitting. This backend is also -;; an attempt to make it behave differently. For Gnus developpers: as you -;; can see if you snarf into the code, that was not a very difficult thing -;; to do. Something should be done about the respooling breakage though. +;; one mail back ends for mail retreival and splitting. This back end is +;; also an attempt to make it behave differently. For Gnus developpers: as +;; you can see if you snarf into the code, that was not a very difficult +;; thing to do. Something should be done about the respooling breakage +;; though. ;;; Code: @@ -220,10 +101,10 @@ (apply #'error args)))) -;; Backend behavior customization =========================================== +;; Back End behavior customization =========================================== (defgroup nndiary nil - "The Gnus Diary backend." + "The Gnus Diary back end." :version "22.1" :group 'gnus-diary) @@ -326,27 +207,27 @@ :type 'boolean) -;; Backend declaration ====================================================== +;; Back End declaration ====================================================== ;; Well, most of this is nnml clonage. (nnoo-declare nndiary) (defvoo nndiary-directory (nnheader-concat gnus-directory "diary/") - "Spool directory for the nndiary backend.") + "Spool directory for the nndiary back end.") (defvoo nndiary-active-file (expand-file-name "active" nndiary-directory) - "Active file for the nndiary backend.") + "Active file for the nndiary back end.") (defvoo nndiary-newsgroups-file (expand-file-name "newsgroups" nndiary-directory) - "Newsgroups description file for the nndiary backend.") + "Newsgroups description file for the nndiary back end.") (defvoo nndiary-get-new-mail nil "Whether nndiary gets new mail and split it. -Contrary to traditional mail backends, this variable can be set to t -even if your primary mail backend also retreives mail. In such a case, +Contrary to traditional mail back ends, this variable can be set to t +even if your primary mail back end also retreives mail. In such a case, NDiary uses its own mail-sources and split-methods.") (defvoo nndiary-nov-is-evil nil @@ -367,10 +248,10 @@ (defconst nndiary-version "0.2-b14" - "Current Diary backend version.") + "Current Diary back end version.") (defun nndiary-version () - "Current Diary backend version." + "Current Diary back end version." (interactive) (message "NNDiary version %s" nndiary-version)) @@ -631,7 +512,7 @@ (deffoo nndiary-request-scan (&optional group server) ;; Use our own mail sources and split methods while Gnus doesn't let us have - ;; multiple backends for retrieving mail. + ;; multiple back ends for retrieving mail. (let ((mail-sources nndiary-mail-sources) (nnmail-split-methods nndiary-split-methods)) (setq nndiary-article-file-alist nil)
--- a/lisp/newcomment.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/newcomment.el Wed May 09 23:47:51 2007 +0000 @@ -97,10 +97,10 @@ ;;;###autoload (defcustom comment-column 32 "Column to indent right-margin comments to. -Each mode establishes a different default value for this variable; you +Each mode may establish a different default value for this variable; you can set the value for a particular mode using that mode's hook. -Comments might be indented to a value smaller than this in order -not to go beyond `comment-fill-column'." +Comments might be indented to a different value in order not to go beyond +`comment-fill-column' or in order to align them with surrounding comments." :type 'integer :group 'comment) (make-variable-buffer-local 'comment-column) @@ -491,16 +491,24 @@ (goto-char (point-min)) (re-search-forward (concat comment-end-skip "\\'") nil t)) (goto-char (match-beginning 0))) - ;; comment-end-skip not found. Maybe we're at EOB which implicitly - ;; closes the comment. - ((eobp) (skip-syntax-backward " ")) - (t - ;; else comment-end-skip was not found probably because it was not - ;; set right. Since \\s> should catch the single-char case, we'll - ;; blindly assume we're at the end of a two-char comment-end. + ;; comment-end-skip not found probably because it was not set + ;; right. Since \\s> should catch the single-char case, let's + ;; check that we're looking at a two-char comment ender. + ((not (or (<= (- (point-max) (line-beginning-position)) 1) + (zerop (logand (car (syntax-after (- (point) 1))) + ;; Here we take advantage of the fact that + ;; the syntax class " " is encoded to 0, + ;; so " 4" gives us just the 4 bit. + (car (string-to-syntax " 4")))) + (zerop (logand (car (syntax-after (- (point) 2))) + (car (string-to-syntax " 3")))))) (backward-char 2) (skip-chars-backward (string (char-after))) - (skip-syntax-backward " "))))) + (skip-syntax-backward " ")) + ;; No clue what's going on: maybe we're really not right after the + ;; end of a comment. Maybe we're at the "end" because of EOB rather + ;; than because of a marker. + (t (skip-syntax-backward " "))))) ;;;; ;;;; Commands @@ -516,6 +524,58 @@ (and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)"))) comment-column))) +(defun comment-choose-indent (&optional indent) + "Choose the indentation to use for a right-hand-side comment. +The criteria are (in this order): +- try to keep the comment's text within `comment-fill-column'. +- try to align with surrounding comments. +- prefer INDENT (or `comment-column' if nil). +Point is expected to be at the start of the comment." + (unless indent (setq indent comment-column)) + ;; Avoid moving comments past the fill-column. + (let ((max (+ (current-column) + (- (or comment-fill-column fill-column) + (save-excursion (end-of-line) (current-column))))) + (other nil) + (min (save-excursion (skip-chars-backward " \t") + (1+ (current-column))))) + ;; Fix up the range. + (if (< max min) (setq max min)) + ;; Don't move past the fill column. + (if (<= max indent) (setq indent max)) + ;; We can choose anywhere between min..max. + ;; Let's try to align to a comment on the previous line. + (save-excursion + (when (and (zerop (forward-line -1)) + (setq other (comment-search-forward + (line-end-position) t))) + (goto-char other) (setq other (current-column)))) + (if (and other (<= other max) (>= other min)) + ;; There is a comment and it's in the range: bingo! + other + ;; Can't align to a previous comment: let's try to align to comments + ;; on the following lines, then. These have not been re-indented yet, + ;; so we can't directly align ourselves with them. All we do is to try + ;; and choose an indentation point with which they will be able to + ;; align themselves. + (save-excursion + (while (and (zerop (forward-line 1)) + (setq other (comment-search-forward + (line-end-position) t))) + (goto-char other) + (let ((omax (+ (current-column) + (- (or comment-fill-column fill-column) + (save-excursion (end-of-line) (current-column))))) + (omin (save-excursion (skip-chars-backward " \t") + (1+ (current-column))))) + (if (and (>= omax min) (<= omin max)) + (progn (setq min (max omin min)) + (setq max (min omax max))) + ;; Can't align with this anyway, so exit the loop. + (goto-char (point-max)))))) + ;; Return the closest point to indent within min..max. + (max min (min max indent))))) + ;;;###autoload (defun comment-indent (&optional continue) "Indent this line's comment to `comment-column', or insert an empty comment. @@ -569,38 +629,9 @@ (if (not indent) ;; comment-indent-function refuses: delegate to line-indent. (indent-according-to-mode) - ;; If the comment is at the left of code, adjust the indentation. + ;; If the comment is at the right of code, adjust the indentation. (unless (save-excursion (skip-chars-backward " \t") (bolp)) - ;; Avoid moving comments past the fill-column. - (let ((max (+ (current-column) - (- (or comment-fill-column fill-column) - (save-excursion (end-of-line) (current-column)))))) - (if (<= max indent) - (setq indent max) ;Don't move past the fill column. - ;; We can choose anywhere between indent..max. - ;; Let's try to align to a comment on the previous line. - (let ((other nil) - (min (max indent - (save-excursion (skip-chars-backward " \t") - (1+ (current-column)))))) - (save-excursion - (when (and (zerop (forward-line -1)) - (setq other (comment-search-forward - (line-end-position) t))) - (goto-char other) (setq other (current-column)))) - (if (and other (<= other max) (>= other min)) - ;; There is a comment and it's in the range: bingo. - (setq indent other) - ;; Let's try to align to a comment on the next line, then. - (let ((other nil)) - (save-excursion - (when (and (zerop (forward-line 1)) - (setq other (comment-search-forward - (line-end-position) t))) - (goto-char other) (setq other (current-column)))) - (if (and other (<= other max) (> other min)) - ;; There is a comment and it's in the range: bingo. - (setq indent other)))))))) + (setq indent (comment-choose-indent indent))) ;; Update INDENT to leave at least one space ;; after other nonwhite text on the line. (save-excursion
--- a/lisp/progmodes/compile.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/progmodes/compile.el Wed May 09 23:47:51 2007 +0000 @@ -1863,7 +1863,24 @@ (let* ((name (read-file-name (format "Find this %s in (default %s): " compilation-error filename) - spec-dir filename t nil)) + spec-dir filename t nil + ;; The predicate below is fine when called from + ;; minibuffer-complete-and-exit, but it's too + ;; restrictive otherwise, since it also prevents the + ;; user from completing "fo" to "foo/" when she + ;; wants to enter "foo/bar". + ;; + ;; Try to make sure the user can only select + ;; a valid answer. This predicate may be ignored, + ;; tho, so we still have to double-check afterwards. + ;; TODO: We should probably fix read-file-name so + ;; that it never ignores this predicate, even when + ;; using popup dialog boxes. + ;; (lambda (name) + ;; (if (file-directory-p name) + ;; (setq name (expand-file-name filename name))) + ;; (file-exists-p name)) + )) (origname name)) (cond ((not (file-exists-p name))
--- a/lisp/progmodes/python.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/progmodes/python.el Wed May 09 23:47:51 2007 +0000 @@ -96,7 +96,7 @@ "import" "in" "is" "lambda" "not" "or" "pass" "print" "raise" "return" "try" "while" "yield" ;; Future keywords - "as" "None" + "as" "None" "with" ;; Not real keywords, but close enough to be fontified as such "self" "True" "False") symbol-end) @@ -374,7 +374,7 @@ (save-excursion (unless bos (python-beginning-of-statement)) (looking-at (rx (and (or "if" "else" "elif" "while" "for" "def" - "class" "try" "except" "finally") + "class" "try" "except" "finally" "with") symbol-end))))) (defun python-close-block-statement-p (&optional bos) @@ -883,10 +883,13 @@ nil) ((eq 'string (syntax-ppss-context s)) ;; Go to start of string and skip it. - (goto-char (nth 8 s)) - (condition-case () ; beware invalid syntax - (progn (forward-sexp) t) - (error (end-of-line)))) + (let ((pos (point))) + (goto-char (nth 8 s)) + (condition-case () ; beware invalid syntax + (progn (forward-sexp) t) + ;; If there's a mismatched string, make sure + ;; we still overall move *forward*. + (error (goto-char pos) (end-of-line))))) ((python-skip-out t s)))) (end-of-line)) (unless comment @@ -981,15 +984,11 @@ (_ (if (python-comment-line-p) (python-skip-comments/blanks t))) (ci (current-indentation)) - (open (python-open-block-statement-p)) - opoint) + (open (python-open-block-statement-p))) (if (and (zerop ci) (not open)) (not (goto-char point)) (catch 'done - (setq opoint (point)) - (while (and (zerop (python-next-statement)) - (not (= opoint (point)))) - (setq opoint (point)) + (while (zerop (python-next-statement)) (when (or (and open (<= (current-indentation) ci)) (< (current-indentation) ci)) (python-skip-comments/blanks t) @@ -2240,7 +2239,7 @@ #'python-current-defun) (set (make-local-variable 'outline-regexp) (rx (* space) (or "class" "def" "elif" "else" "except" "finally" - "for" "if" "try" "while") + "for" "if" "try" "while" "with") symbol-end)) (set (make-local-variable 'outline-heading-end-regexp) ":\\s-*\n") (set (make-local-variable 'outline-level) #'python-outline-level)
--- a/lisp/t-mouse.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/t-mouse.el Wed May 09 23:47:51 2007 +0000 @@ -275,32 +275,32 @@ Turn it on to use Emacs mouse commands, and off to use t-mouse commands." nil " Mouse" nil :global t - (if t-mouse-mode - ;; Turn it on - (unless window-system - ;; Starts getting a stream of mouse events from an asynchronous process. - ;; Only works if Emacs is running on a virtual terminal without a window system. + (unless window-system + (if t-mouse-mode + ;; Turn it on. Starts getting a stream of mouse events from an + ;; asynchronous process. Only works if Emacs is running on a virtual + ;; terminal without a window system. (progn - (setq mouse-position-function #'t-mouse-mouse-position-function) - (let ((tty (t-mouse-tty)) - (process-connection-type t)) - (if (not (stringp tty)) - (error "Cannot find a virtual terminal")) - (setq t-mouse-process - (start-process "t-mouse" nil - "mev" "-i" "-E" "-C" tty - (if t-mouse-swap-alt-keys - "-M-leftAlt" "-M-rightAlt") - "-e-move" - "-dall" "-d-hard" - "-f"))) - (setq t-mouse-filter-accumulator "") - (set-process-filter t-mouse-process 't-mouse-process-filter) - (set-process-query-on-exit-flag t-mouse-process nil))) + (setq mouse-position-function #'t-mouse-mouse-position-function) + (let ((tty (t-mouse-tty)) + (process-connection-type t)) + (if (not (stringp tty)) + (error "Cannot find a virtual terminal")) + (setq t-mouse-process + (start-process "t-mouse" nil + "mev" "-i" "-E" "-C" tty + (if t-mouse-swap-alt-keys + "-M-leftAlt" "-M-rightAlt") + "-e-move" + "-dall" "-d-hard" + "-f"))) + (setq t-mouse-filter-accumulator "") + (set-process-filter t-mouse-process 't-mouse-process-filter) + (set-process-query-on-exit-flag t-mouse-process nil)) ;; Turn it off - (setq mouse-position-function nil) - (delete-process t-mouse-process) - (setq t-mouse-process nil))) + (setq mouse-position-function nil) + (delete-process t-mouse-process) + (setq t-mouse-process nil)))) (provide 't-mouse)
--- a/lisp/textmodes/sgml-mode.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/textmodes/sgml-mode.el Wed May 09 23:47:51 2007 +0000 @@ -937,7 +937,7 @@ (defun sgml-lexical-context (&optional limit) "Return the lexical context at point as (TYPE . START). START is the location of the start of the lexical element. -TYPE is one of `string', `comment', `tag', `cdata', or `text'. +TYPE is one of `string', `comment', `tag', `cdata', `pi', or `text'. Optional argument LIMIT is the position to start parsing from. If nil, start from a preceding tag at indentation." @@ -964,12 +964,19 @@ (let ((cdata-start (point))) (unless (search-forward "]]>" pos 'move) (list 0 nil nil 'cdata nil nil nil nil cdata-start)))) + ((and sgml-xml-mode (looking-at "<\\?")) + ;; Processing Instructions. + ;; In SGML, it's basically a normal tag of the form + ;; <?NAME ...> but in XML, it takes the form <? ... ?>. + (let ((pi-start (point))) + (unless (search-forward "?>" pos 'move) + (list 0 nil nil 'pi nil nil nil nil pi-start)))) (t ;; We've reached a tag. Parse it. ;; FIXME: Handle net-enabling start-tags (parse-partial-sexp (point) pos 0)))))) (cond - ((eq (nth 3 state) 'cdata) (cons 'cdata (nth 8 state))) + ((memq (nth 3 state) '(cdata pi)) (cons (nth 3 state) (nth 8 state))) ((nth 3 state) (cons 'string (nth 8 state))) ((nth 4 state) (cons 'comment (nth 8 state))) ((and state (> (nth 0 state) 0)) (cons 'tag (nth 1 state))) @@ -1093,9 +1100,15 @@ (when (eq (char-after) ?<) ;; Oops!! Looks like we were not in a textual context after all!. ;; Let's try to recover. + ;; Remember the tag-start so we don't need to look for it later. + ;; This is not just an optimization but also makes sure we don't get + ;; stuck in infloops in cases where "looking back for <" would not go + ;; back far enough. + (setq tag-start (point)) (with-syntax-table sgml-tag-syntax-table (let ((pos (point))) (condition-case nil + ;; FIXME: This does not correctly skip over PI an CDATA tags. (forward-sexp) (scan-error ;; This < seems to be just a spurious one, let's ignore it. @@ -1110,33 +1123,41 @@ (cond ((sgml-looking-back-at "--") ; comment (setq tag-type 'comment - tag-start (search-backward "<!--" nil t))) + tag-start (or tag-start (search-backward "<!--" nil t)))) ((sgml-looking-back-at "]]") ; cdata (setq tag-type 'cdata - tag-start (re-search-backward "<!\\[[A-Z]+\\[" nil t))) + tag-start (or tag-start + (re-search-backward "<!\\[[A-Z]+\\[" nil t)))) + ((sgml-looking-back-at "?") ; XML processing-instruction + (setq tag-type 'pi + ;; IIUC: SGML processing instructions take the form <?foo ...> + ;; i.e. a "normal" tag, handled below. In XML this is changed + ;; to <?foo ... ?> where "..." can contain < and > and even <? + ;; but not ?>. This means that when parsing backward, there's + ;; no easy way to make sure that we find the real beginning of + ;; the PI. + tag-start (or tag-start (search-backward "<?" nil t)))) (t - (setq tag-start - (with-syntax-table sgml-tag-syntax-table - (goto-char tag-end) - (condition-case nil - (backward-sexp) - (scan-error - ;; This > isn't really the end of a tag. Skip it. - (goto-char (1- tag-end)) - (throw 'found (sgml-parse-tag-backward limit)))) - (point))) + (unless tag-start + (setq tag-start + (with-syntax-table sgml-tag-syntax-table + (goto-char tag-end) + (condition-case nil + (backward-sexp) + (scan-error + ;; This > isn't really the end of a tag. Skip it. + (goto-char (1- tag-end)) + (throw 'found (sgml-parse-tag-backward limit)))) + (point)))) (goto-char (1+ tag-start)) (case (char-after) - (?! ; declaration - (setq tag-type 'decl)) - (?? ; processing-instruction - (setq tag-type 'pi)) + (?! (setq tag-type 'decl)) ; declaration + (?? (setq tag-type 'pi)) ; processing-instruction + (?% (setq tag-type 'jsp)) ; JSP tags (?/ ; close-tag (forward-char 1) (setq tag-type 'close name (sgml-parse-tag-name))) - (?% ; JSP tags - (setq tag-type 'jsp)) (t ; open or empty tag (setq tag-type 'open name (sgml-parse-tag-name)) @@ -1331,6 +1352,8 @@ ;; We don't know how to indent it. Let's be honest about it. (cdata nil) + ;; We don't know how to indent it. Let's be honest about it. + (pi nil) (tag (goto-char (1+ (cdr lcon)))
--- a/lisp/vc-hooks.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/vc-hooks.el Wed May 09 23:47:51 2007 +0000 @@ -315,10 +315,17 @@ ;; Represent /home/luser/foo as ~/foo so that we don't try to look for ;; witnesses in /home or in /. (setq file (abbreviate-file-name file)) - (let ((root nil)) + (let ((root nil) + (user (nth 2 (file-attributes file)))) (while (not (or root (equal file (setq file (file-name-directory file))) (null file) + ;; As a heuristic, we stop looking up the hierarchy of + ;; directories as soon as we find a directory belonging + ;; to another user. This should save us from looking in + ;; things like /net and /afs. This assumes that all the + ;; files inside a project belong to the same user. + (not (equal user (file-attributes file))) (string-match vc-ignore-dir-regexp file))) (if (file-exists-p (expand-file-name witness file)) (setq root file)
--- a/lisp/vc.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/vc.el Wed May 09 23:47:51 2007 +0000 @@ -2909,7 +2909,11 @@ (vc-call-backend (vc-responsible-backend default-directory) 'update-changelog args)) -(defun vc-default-update-changelog (backend files) +(defalias 'vc-cvs-update-changelog 'vc-update-changelog-rcs2log) +(defalias 'vc-rcs-update-changelog 'vc-update-changelog-rcs2log) +;; FIXME: This should probably be moved to vc-rcs.el and replaced in +;; vc-cvs.el by code using cvs2cl. +(defun vc-update-changelog-rcs2log (files) "Default implementation of update-changelog. Uses `rcs2log' which only works for RCS and CVS." ;; FIXME: We (c|sh)ould add support for cvs2cl @@ -2950,9 +2954,7 @@ (mapcar (lambda (f) (file-relative-name - (if (file-name-absolute-p f) - f - (concat odefault f)))) + (expand-file-name f odefault))) files))) "done" (pop-to-buffer (get-buffer-create "*vc*"))
--- a/lisp/version.el Tue May 08 18:15:58 2007 +0000 +++ b/lisp/version.el Wed May 09 23:47:51 2007 +0000 @@ -27,7 +27,7 @@ ;;; Code: -(defconst emacs-version "22.0.99" "\ +(defconst emacs-version "22.1.50" "\ Version numbers of this version of Emacs.") (defconst emacs-major-version
--- a/lispref/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/lispref/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,3 +1,7 @@ +2007-05-07 Karl Berry <karl@gnu.org> + + * elisp.texi (EMACSVER): back to 22. + 2007-05-06 Richard Stallman <rms@gnu.org> * processes.texi (Accepting Output): Revert most of previous change. @@ -16,7 +20,7 @@ * tips.texi (Documentation Tips): Rearrange items to place the more important ones first. Add an index entry for hyperlinks. -2007-05-03 Karl Berry <karl@tug.org> +2007-05-03 Karl Berry <karl@gnu.org> * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing. (EMACSVER) [smallbook]: 22 for printed version. @@ -24,6 +28,10 @@ * control.texi (Signaling Errors) <signal>: texinfo.tex is fixed, so restore anchor to normal position after defun. Found by Kevin Ryde. +2007-04-26 Glenn Morris <rgm@gnu.org> + + * elisp.texi (EMACSVER): Increase to 22.1.50. + 2007-04-28 Karl Berry <karl@gnu.org> * elisp.texi: Improve line breaks on copyright page,
--- a/lispref/elisp.texi Tue May 08 18:15:58 2007 +0000 +++ b/lispref/elisp.texi Wed May 09 23:47:51 2007 +0000 @@ -29,11 +29,13 @@ @tex @ifset smallbook @fonttextsize 10 -@set EMACSVER 22.1 +@set EMACSVER 22 \global\let\urlcolor=\Black % don't print links in grayscale \global\let\linkcolor=\Black @end ifset \global\hbadness=6666 % don't worry about not-too-underfull boxes +\global\let\urlcolor=\Black % don't print links in grayscale +\global\let\linkcolor=\Black @end tex @c Combine indices.
--- a/mac/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/mac/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -3,6 +3,11 @@ * INSTALL: Fix description about using colors in terminal. Fix typos (/Application -> /Applications). +2007-04-26 Glenn Morris <rgm@gnu.org> + + * Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings: + * src/Emacs.r: Increase version to 22.1.50. + 2007-04-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> * make-package (compver): Don't hardcode processor type.
--- a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings Tue May 08 18:15:58 2007 +0000 +++ b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings Wed May 09 23:47:51 2007 +0000 @@ -1,5 +1,5 @@ /* Localized versions of Info.plist keys */ CFBundleName = "Emacs"; -CFBundleShortVersionString = "22.0.99"; -CFBundleGetInfoString = "22.0.99, Copyright (C) 2007 Free Software Foundation, Inc."; +CFBundleShortVersionString = "22.1.50"; +CFBundleGetInfoString = "22.1.50, Copyright (C) 2007 Free Software Foundation, Inc.";
--- a/mac/src/Emacs.r Tue May 08 18:15:58 2007 +0000 +++ b/mac/src/Emacs.r Wed May 09 23:47:51 2007 +0000 @@ -219,12 +219,12 @@ resource 'vers' (1) { 0x22, /* Major revision in BCD */ - 0x0, /* Minor revision in BCD */ - alpha, /* development, alpha, beta, or final (release) */ - 99, /* Non-final release # */ + 0x1, /* Minor revision in BCD */ + development, /* development, alpha, beta, or final (release) */ + 50, /* Non-final release # */ 0, /* Region code */ - "22.0.99", /* Short version number */ - "22.0.99, Copyright \0xa9 2007 " + "22.1.50", /* Short version number */ + "22.1.50, Copyright \0xa9 2007 " "Free Software Foundation, Inc." /* Long version number */ };
--- a/man/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/man/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,13 +1,30 @@ +2007-05-09 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc. + +2007-05-09 Didier Verna <didier@xemacs.org> + + * gnus.texi (Email Based Diary): New. Proper documentation for the + nndiary back end and the gnus-diary library. + +2007-05-07 Karl Berry <karl@gnu.org> + + * emacs.texi (EMACSVER): back to 22. + +2007-05-06 Richard Stallman <rms@gnu.org> + + * maintaining.texi (Create Tags Table): Clean up previous change. + 2007-05-05 Francesco Potort,Al(B <pot@gnu.org> * maintaining.texi (Create Tags Table): Add text about the dangers of - making symbolic links to tags files. (Clarified by RMS.) - -2007-05-04 Karl Berry <karl@tug.org> + making symbolic links to tags files. + +2007-05-04 Karl Berry <karl@gnu.org> * emacs.texi (EMACSVER) [smallbook]: 22.1 for printed version, not 22. -2007-05-03 Karl Berry <karl@tug.org> +2007-05-03 Karl Berry <karl@gnu.org> * emacs.texi (EMACSVER) [smallbook]: 22 for printed version. @@ -22,6 +39,10 @@ * cmdargs.texi (Initial Options): Under --batch, mention --eval. +2007-04-30 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus.texi (Article Highlighting): Clarify gnus-cite-parse-max-size. + 2007-04-28 Glenn Morris <rgm@gnu.org> * ack.texi (Acknowledgments): @@ -34,17 +55,21 @@ * files.texi (File Names): Fixes to ~ description on MS systems. -2007-04-28 Karl Berry <karl@gnu.org> +2007-04-27 J.D. Smith <jdsmith@as.arizona.edu> + + * idlwave.texi: Minor updates for IDLWAVE 6.1. + +2007-04-26 Glenn Morris <rgm@gnu.org> + + * emacs.texi (EMACSVER): Increase to 22.1.50. + +2007-04-25 Karl Berry <karl@gnu.org> * emacs.texi: Improve line breaks on copyright page, similar layout to lispref, 8.5x11 by default. * dired.texi (Image-Dired): Improve line break, fix typo. -2007-04-27 J.D. Smith <jdsmith@as.arizona.edu> - - * idlwave.texi: Minor updates for IDLWAVE 6.1. - 2007-04-24 Chong Yidong <cyd@stupidchicken.com> * programs.texi (Program Modes): @@ -74,8 +99,8 @@ * misc.texi (Thumbnails): Node deleted. * emacs.texi (Top): Update node listing. - * files.texi (File Conveniences): - * ack.texi (Acknowledgments): + * files.texi (File Conveniences): + * ack.texi (Acknowledgments): * faq.texi (New in Emacs 22): Rename "tumme" to "image-dired". 2007-04-21 Richard Stallman <rms@gnu.org>
--- a/man/emacs.texi Tue May 08 18:15:58 2007 +0000 +++ b/man/emacs.texi Wed May 09 23:47:51 2007 +0000 @@ -5,7 +5,7 @@ @c The edition number appears in several places in this file @set EDITION Sixteenth -@set EMACSVER 22.0.99 +@set EMACSVER 22.1.50 @copying This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@* @@ -51,7 +51,7 @@ @tex @ifset smallbook @fonttextsize 10 -@set EMACSVER 22.1 +@set EMACSVER 22 \global\let\urlcolor=\Black % don't print links in grayscale \global\let\linkcolor=\Black @end ifset
--- a/man/gnus.texi Tue May 08 18:15:58 2007 +0000 +++ b/man/gnus.texi Wed May 09 23:47:51 2007 +0000 @@ -623,6 +623,7 @@ * IMAP:: Using Gnus as a @acronym{IMAP} client. * Other Sources:: Reading directories, files, SOUP packets. * Combined Groups:: Combining groups into one group. +* Email Based Diary:: Using mails to manage diary events in Gnus. * Gnus Unplugged:: Reading news and mail offline. Server Buffer @@ -720,6 +721,25 @@ * Virtual Groups:: Combining articles from many groups. * Kibozed Groups:: Looking through parts of the newsfeed for articles. +Email Based Diary + +* The NNDiary Back End:: Basic setup and usage. +* The Gnus Diary Library:: Utility toolkit on top of nndiary. +* Sending or Not Sending:: A final note on sending diary messages. + +The NNDiary Back End + +* Diary Messages:: What makes a message valid for nndiary. +* Running NNDiary:: NNDiary has two modes of operation. +* Customizing NNDiary:: Bells and whistles. + +The Gnus Diary Library + +* Diary Summary Line Format:: A nicer summary buffer line format. +* Diary Articles Sorting:: A nicer way to sort messages. +* Diary Headers Generation:: Not doing it manually. +* Diary Group Parameters:: Not handling them manually. + Gnus Unplugged * Agent Basics:: How it all is supposed to work. @@ -8148,8 +8168,8 @@ @vindex gnus-cite-parse-max-size @item gnus-cite-parse-max-size -If the article size if bigger than this variable (which is 25000 by -default), no citation highlighting will be performed. +If the article size in bytes is bigger than this variable (which is +25000 by default), no citation highlighting will be performed. @item gnus-cite-max-prefix @vindex gnus-cite-max-prefix @@ -12343,6 +12363,7 @@ * IMAP:: Using Gnus as a @acronym{IMAP} client. * Other Sources:: Reading directories, files, SOUP packets. * Combined Groups:: Combining groups into one group. +* Email Based Diary:: Using mails to manage diary events in Gnus. * Gnus Unplugged:: Reading news and mail offline. @end menu @@ -17878,6 +17899,381 @@ their @acronym{NOV} lines removed from the @acronym{NOV} file. +@node Email Based Diary +@section Email Based Diary +@cindex diary +@cindex email based diary +@cindex calendar + +This section describes a special mail back end called @code{nndiary}, +and its companion library @code{gnus-diary}. It is ``special'' in the +sense that it is not meant to be one of the standard alternatives for +reading mail with Gnus. See @ref{Choosing a Mail Back End} for that. +Instead, it is used to treat @emph{some} of your mails in a special way, +namely, as event reminders. + +Here is a typical scenario: + +@itemize @bullet +@item +You've got a date with Andy Mc Dowell or Bruce Willis (select according +to your sexual preference) in one month. You don't want to forget it. +@item +So you send a ``reminder'' message (actually, a diary one) to yourself. +@item +You forget all about it and keep on getting and reading new mail, as usual. +@item +From time to time, as you type `g' in the group buffer and as the date +is getting closer, the message will pop up again to remind you of your +appointment, just as if it were new and unread. +@item +Read your ``new'' messages, this one included, and start dreaming again +of the night you're gonna have. +@item +Once the date is over (you actually fell asleep just after dinner), the +message will be automatically deleted if it is marked as expirable. +@end itemize + +The Gnus Diary back end has the ability to handle regular appointments +(that wouldn't ever be deleted) as well as punctual ones, operates as a +real mail back end and is configurable in many ways. All of this is +explained in the sections below. + +@menu +* The NNDiary Back End:: Basic setup and usage. +* The Gnus Diary Library:: Utility toolkit on top of nndiary. +* Sending or Not Sending:: A final note on sending diary messages. +@end menu + + +@node The NNDiary Back End +@subsection The NNDiary Back End +@cindex nndiary +@cindex the nndiary back end + +@code{nndiary} is a back end very similar to @code{nnml} (@pxref{Mail +Spool}). Actually, it could appear as a mix of @code{nnml} and +@code{nndraft}. If you know @code{nnml}, you're already familiar with +the message storing scheme of @code{nndiary}: one file per message, one +directory per group. + + Before anything, there is one requirement to be able to run +@code{nndiary} properly: you @emph{must} use the group timestamp feature +of Gnus. This adds a timestamp to each group's parameters. @ref{Group +Timestamp} to see how it's done. + +@menu +* Diary Messages:: What makes a message valid for nndiary. +* Running NNDiary:: NNDiary has two modes of operation. +* Customizing NNDiary:: Bells and whistles. +@end menu + +@node Diary Messages +@subsubsection Diary Messages +@cindex nndiary messages +@cindex nndiary mails + +@code{nndiary} messages are just normal ones, except for the mandatory +presence of 7 special headers. These headers are of the form +@code{X-Diary-<something>}, @code{<something>} being one of +@code{Minute}, @code{Hour}, @code{Dom}, @code{Month}, @code{Year}, +@code{Time-Zone} and @code{Dow}. @code{Dom} means ``Day of Month'', and +@code{dow} means ``Day of Week''. These headers actually behave like +crontab specifications and define the event date(s): + +@itemize @bullet +@item +For all headers except the @code{Time-Zone} one, a header value is +either a star (meaning all possible values), or a list of fields +(separated by a comma). +@item +A field is either an integer, or a range. +@item +A range is two integers separated by a dash. +@item +Possible integer values are 0--59 for @code{Minute}, 0--23 for +@code{Hour}, 1--31 for @code{Dom}, 1--12 for @code{Month}, above 1971 +for @code{Year} and 0--6 for @code{Dow} (0 meaning Sunday). +@item +As a special case, a star in either @code{Dom} or @code{Dow} doesn't +mean ``all possible values'', but ``use only the other field''. Note +that if both are star'ed, the use of either one gives the same result. +@item +The @code{Time-Zone} header is special in that it can only have one +value (@code{GMT}, for instance). A star doesn't mean ``all possible +values'' (because it makes no sense), but ``the current local time +zone''. Most of the time, you'll be using a star here. However, for a +list of available time zone values, see the variable +@code{nndiary-headers}. +@end itemize + +As a concrete example, here are the diary headers to add to your message +for specifying ``Each Monday and each 1st of month, at 12:00, 20:00, +21:00, 22:00, 23:00 and 24:00, from 1999 to 2010'' (I'll let you find +what to do then): + +@example +X-Diary-Minute: 0 +X-Diary-Hour: 12, 20-24 +X-Diary-Dom: 1 +X-Diary-Month: * +X-Diary-Year: 1999-2010 +X-Diary-Dow: 1 +X-Diary-Time-Zone: * +@end example + +@node Running NNDiary +@subsubsection Running NNDiary +@cindex running nndiary +@cindex nndiary operation modes + +@code{nndiary} has two modes of operation: ``traditional'' (the default) +and ``autonomous''. In traditional mode, @code{nndiary} does not get new +mail by itself. You have to move (@kbd{B m}) or copy (@kbd{B c}) mails +from your primary mail back end to nndiary groups in order to handle them +as diary messages. In autonomous mode, @code{nndiary} retrieves its own +mail and handles it independently from your primary mail back end. + +One should note that Gnus is not inherently designed to allow several +``master'' mail back ends at the same time. However, this does make +sense with @code{nndiary}: you really want to send and receive diary +messages to your diary groups directly. So, @code{nndiary} supports +being sort of a ``second primary mail back end'' (to my knowledge, it is +the only back end offering this feature). However, there is a limitation +(which I hope to fix some day): respooling doesn't work in autonomous +mode. + +In order to use @code{nndiary} in autonomous mode, you have several +things to do: + +@itemize @bullet +@item +Allow @code{nndiary} to retrieve new mail by itself. Put the following +line in your @file{~/.gnus.el} file: + +@lisp +(setq nndiary-get-new-mail t) +@end lisp +@item +You must arrange for diary messages (those containing @code{X-Diary-*} +headers) to be split in a private folder @emph{before} Gnus treat them. +Again, this is needed because Gnus cannot (yet ?) properly handle +multiple primary mail back ends. Getting those messages from a separate +source will compensate this misfeature to some extent. + +As an example, here's my procmailrc entry to store diary files in +@file{~/.nndiary} (the default @code{nndiary} mail source file): + +@example +:0 HD : +* ^X-Diary +.nndiary +@end example +@end itemize + +Once this is done, you might want to customize the following two options +that affect the diary mail retrieval and splitting processes: + +@defvar nndiary-mail-sources +This is the diary-specific replacement for the standard +@code{mail-sources} variable. It obeys the same syntax, and defaults to +@code{(file :path "~/.nndiary")}. +@end defvar + +@defvar nndiary-split-methods +This is the diary-specific replacement for the standard +@code{nnmail-split-methods} variable. It obeys the same syntax. +@end defvar + + Finally, you may add a permanent @code{nndiary} virtual server +(something like @code{(nndiary "diary")} should do) to your +@code{gnus-secondary-select-methods}. + + Hopefully, almost everything (see the TODO section in +@file{nndiary.el}) will work as expected when you restart Gnus: in +autonomous mode, typing @kbd{g} and @kbd{M-g} in the group buffer, will +also get your new diary mails and split them according to your +diary-specific rules, @kbd{F} will find your new diary groups etc. + +@node Customizing NNDiary +@subsubsection Customizing NNDiary +@cindex customizing nndiary +@cindex nndiary customization + +Now that @code{nndiary} is up and running, it's time to customize it. +The custom group is called @code{nndiary} (no, really ?!). You should +browse it to figure out which options you'd like to tweak. The following +two variables are probably the only ones you will want to change: + +@defvar nndiary-reminders +This is the list of times when you want to be reminded of your +appointements (e.g. 3 weeks before, then 2 days before, then 1 hour +before and that's it). Remember that ``being reminded'' means that the +diary message will pop up as brand new and unread again when you get new +mail. +@end defvar + +@defvar nndiary-week-starts-on-monday +Rather self-explanatory. Otherwise, Sunday is assumed (this is the +default). +@end defvar + + +@node The Gnus Diary Library +@subsection The Gnus Diary Library +@cindex gnus-diary +@cindex the gnus diary library + +Using @code{nndiary} manually (I mean, writing the headers by hand and +so on) would be rather boring. Fortunately, there is a library called +@code{gnus-diary} written on top of @code{nndiary}, that does many +useful things for you. + + In order to use it, add the following line to your @file{~/.gnus.el} file: + +@lisp +(require 'gnus-diary) +@end lisp + + Also, you shouldn't use any @code{gnus-user-format-function-[d|D]} +(@pxref{Summary Buffer Lines}). @code{gnus-diary} provides both of these +(sorry if you used them before). + + +@menu +* Diary Summary Line Format:: A nicer summary buffer line format. +* Diary Articles Sorting:: A nicer way to sort messages. +* Diary Headers Generation:: Not doing it manually. +* Diary Group Parameters:: Not handling them manually. +@end menu + +@node Diary Summary Line Format +@subsubsection Diary Summary Line Format +@cindex diary summary buffer line +@cindex diary summary line format + +Displaying diary messages in standard summary line format (usually +something like @samp{From Joe: Subject}) is pretty useless. Most of +the time, you're the one who wrote the message, and you mostly want to +see the event's date. + + @code{gnus-diary} provides two supplemental user formats to be used in +summary line formats. @code{D} corresponds to a formatted time string +for the next occurrence of the event (e.g. ``Sat, Sep 22 01, 12:00''), +while @code{d} corresponds to an approximative remaining time until the +next occurrence of the event (e.g. ``in 6 months, 1 week''). + + For example, here's how Joe's birthday is displayed in my +@code{nndiary+diary:birthdays} summary buffer (note that the message is +expirable, but will never be deleted, as it specifies a periodic event): + +@example + E Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week) +@end example + +In order to get something like the above, you would normally add the +following line to your diary groups'parameters: + +@lisp +(gnus-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n") +@end lisp + +However, @code{gnus-diary} does it automatically (@pxref{Diary Group +Parameters}). You can however customize the provided summary line format +with the following user options: + +@defvar gnus-diary-summary-line-format +Defines the summary line format used for diary groups (@pxref{Summary +Buffer Lines}). @code{gnus-diary} uses it to automatically update the +diary groups'parameters. +@end defvar + +@defvar gnus-diary-time-format +Defines the format to display dates in diary summary buffers. This is +used by the @code{D} user format. See the docstring for details. +@end defvar + +@defvar gnus-diary-delay-format-function +Defines the format function to use for displaying delays (remaining +times) in diary summary buffers. This is used by the @code{d} user +format. There are currently built-in functions for English and French; +you can also define your own. See the docstring for details. +@end defvar + +@node Diary Articles Sorting +@subsubsection Diary Articles Sorting +@cindex diary articles sorting +@cindex diary summary lines sorting +@findex gnus-summary-sort-by-schedule +@findex gnus-thread-sort-by-schedule +@findex gnus-article-sort-by-schedule + +@code{gnus-diary} provides new sorting functions (@pxref{Sorting the +Summary Buffer} ) called @code{gnus-summary-sort-by-schedule}, +@code{gnus-thread-sort-by-schedule} and +@code{gnus-article-sort-by-schedule}. These functions let you organize +your diary summary buffers from the closest event to the farthest one. + +@code{gnus-diary} automatically installs +@code{gnus-summary-sort-by-schedule} as a menu item in the summary +buffer's ``sort'' menu, and the two others as the primary (hence +default) sorting functions in the group parameters (@pxref{Diary Group +Parameters}). + +@node Diary Headers Generation +@subsubsection Diary Headers Generation +@cindex diary headers generation +@findex gnus-diary-check-message + +@code{gnus-diary} provides a function called +@code{gnus-diary-check-message} to help you handle the @code{X-Diary-*} +headers. This function ensures that the current message contains all the +required diary headers, and prompts you for values or corrections if +needed. + + This function is hooked into the @code{nndiary} back end, so that +moving or copying an article to a diary group will trigger it +automatically. It is also bound to @kbd{C-c D c} in @code{message-mode} +and @code{article-edit-mode} in order to ease the process of converting +a usual mail to a diary one. + + This function takes a prefix argument which will force prompting of +all diary headers, regardless of their presence or validity. That way, +you can very easily reschedule an already valid diary message, for +instance. + +@node Diary Group Parameters +@subsubsection Diary Group Parameters +@cindex diary group parameters + +When you create a new diary group, or visit one, @code{gnus-diary} +automatically checks your group parameters and if needed, sets the +summary line format to the diary-specific value, installs the +diary-specific sorting functions, and also adds the different +@code{X-Diary-*} headers to the group's posting-style. It is then easier +to send a diary message, because if you use @kbd{C-u a} or @kbd{C-u m} +on a diary group to prepare a message, these headers will be inserted +automatically (although not filled with proper values yet). + +@node Sending or Not Sending +@subsection Sending or Not Sending + +Well, assuming you've read of of the above, here are two final notes on +mail sending with @code{nndiary}: + +@itemize @bullet +@item +@code{nndiary} is a @emph{real} mail back end. You really send real diary +messsages for real. This means for instance that you can give +appointements to anybody (provided they use Gnus and @code{nndiary}) by +sending the diary message to them as well. +@item +However, since @code{nndiary} also has a @code{request-post} method, you +can also use @kbd{C-u a} instead of @kbd{C-u m} on a diary group and the +message won't actually be sent; just stored locally in the group. This +comes in very handy for private appointments. +@end itemize + @node Gnus Unplugged @section Gnus Unplugged @cindex offline
--- a/man/texinfo.tex Tue May 08 18:15:58 2007 +0000 +++ b/man/texinfo.tex Wed May 09 23:47:51 2007 +0000 @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2007-05-03.09} +\def\texinfoversion{2007-05-04.09} % % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -1435,7 +1435,7 @@ \indexnofonts \setupdatafile \catcode`\\=\active \otherbackslash - \input \jobname.toc + \input \tocreadfilename \endgroup } % @@ -4301,11 +4301,8 @@ % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. - \def\tempa{{\rm }}% - \def\tempb{#1}% - \edef\tempc{\tempa}% - \edef\tempd{\tempb}% - \ifx\tempc\tempd + \setbox\boxA = \hbox{#1}% + \ifdim\wd\boxA = 0pt \ % \else % @@ -5177,7 +5174,7 @@ \def\readtocfile{% \setupdatafile \activecatcodes - \input \jobname.toc + \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in @@ -5208,11 +5205,16 @@ \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} % Normal (long) toc. +% \def\contents{% \startcontents{\putwordTOC}% - \openin 1 \jobname.toc + \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi @@ -5250,7 +5252,7 @@ \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry - \openin 1 \jobname.toc + \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi @@ -8340,7 +8342,7 @@ \textleading = 12pt % \internalpagesizes{7.5in}{5in}% - {\voffset}{.25in}% + {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% %
--- a/nt/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/nt/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -1,3 +1,7 @@ +2007-04-26 Glenn Morris <rgm@gnu.org> + + * emacs.rc: Increase version to 22.1.50. + 2007-03-31 Eli Zaretskii <eliz@gnu.org> * INSTALL: Mention the VCVARS32.BAT batch file for VS.NET users.
--- a/nt/emacs.rc Tue May 08 18:15:58 2007 +0000 +++ b/nt/emacs.rc Wed May 09 23:47:51 2007 +0000 @@ -6,8 +6,8 @@ #endif VS_VERSION_INFO VERSIONINFO - FILEVERSION 22,0,99,0 - PRODUCTVERSION 22,0,99,0 + FILEVERSION 22,1,50,0 + PRODUCTVERSION 22,1,50,0 FILEFLAGSMASK 0x3FL #ifdef EMACSDEBUG FILEFLAGS 0x1L @@ -24,12 +24,12 @@ BEGIN VALUE "CompanyName", "Free Software Foundation\0" VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0" - VALUE "FileVersion", "22, 0, 99, 0\0" + VALUE "FileVersion", "22, 1, 50, 0\0" VALUE "InternalName", "Emacs\0" VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0" VALUE "OriginalFilename", "emacs.exe" VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0" - VALUE "ProductVersion", "22, 0, 99, 0\0" + VALUE "ProductVersion", "22, 1, 50, 0\0" VALUE "OLESelfRegister", "\0" END END
--- a/src/ChangeLog Tue May 08 18:15:58 2007 +0000 +++ b/src/ChangeLog Wed May 09 23:47:51 2007 +0000 @@ -2,16 +2,14 @@ * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM) -2007-05-06 Richard Stallman <rms@gnu.org> - - * process.c: Undo May 3 change. - -2007-05-03 Per Cederqvist <ceder@lysator.liu.se> (tiny change) - - * process.c (Faccept_process_output): Revert 2006-03-22 change so - that the third argument once again is in microseconds (not - milliseconds). This makes it compatible with Emacs 21 and - earlier. Problem found by Henrik Rindl,Av(Bw. +2007-05-07 Andreas Schwab <schwab@suse.de> + + * keymap.c (Flookup_key): Fix typo in last change. + +2007-05-07 Stefan Monnier <monnier@iro.umontreal.ca> + + * keymap.c (Fdefine_key, Flookup_key): Only do the 0x80->meta_modifier + mapping for unibyte strings. 2007-05-01 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> @@ -22,11 +20,19 @@ * insdel.c (replace_range): For undo, record insertion first. +2007-04-29 Andreas Schwab <schwab@suse.de> + + * lisp.h (VECSIZE): Use OFFSETOF. + 2007-04-29 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> * xdisp.c (try_window_reusing_current_matrix): Fix number of disabled lines. +2007-04-28 Richard Stallman <rms@gnu.org> + + * lread.c (read_escape): In a string, \s is always space. + 2007-04-27 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog.
--- a/src/keymap.c Tue May 08 18:15:58 2007 +0000 +++ b/src/keymap.c Wed May 09 23:47:51 2007 +0000 @@ -1156,7 +1156,8 @@ if (SYMBOLP (def) && !EQ (Vdefine_key_rebound_commands, Qt)) Vdefine_key_rebound_commands = Fcons (def, Vdefine_key_rebound_commands); - meta_bit = VECTORP (key) ? meta_modifier : 0x80; + meta_bit = (VECTORP (key) || STRINGP (key) && STRING_MULTIBYTE (key) + ? meta_modifier : 0x80); if (VECTORP (def) && ASIZE (def) > 0 && CONSP (AREF (def, 0))) { /* DEF is apparently an XEmacs-style keyboard macro. */ @@ -1312,7 +1313,7 @@ c = Fevent_convert_list (c); /* Turn the 8th bit of string chars into a meta modifier. */ - if (INTEGERP (c) && XINT (c) & 0x80 && STRINGP (key)) + if (STRINGP (key) && XINT (c) & 0x80 && !STRING_MULTIBYTE (key)) XSETINT (c, (XINT (c) | meta_modifier) & ~0x80); /* Allow string since binding for `menu-bar-select-buffer'
--- a/src/lisp.h Tue May 08 18:15:58 2007 +0000 +++ b/src/lisp.h Wed May 09 23:47:51 2007 +0000 @@ -735,9 +735,9 @@ /* If a struct is made to look like a vector, this macro returns the length of the shortest vector that would hold that struct. */ -#define VECSIZE(type) ((sizeof (type) - (sizeof (struct Lisp_Vector) \ - - sizeof (Lisp_Object)) \ - + sizeof(Lisp_Object) - 1) /* round up */ \ +#define VECSIZE(type) ((sizeof (type) \ + - OFFSETOF (struct Lisp_Vector, contents[0]) \ + + sizeof(Lisp_Object) - 1) /* round up */ \ / sizeof (Lisp_Object)) /* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields