# HG changeset patch # User Katsumi Yamaoka # Date 1263765420 0 # Node ID d8549f97592e74ac6191d75212134135d1eb561f # Parent ff8134865c63d0ad1b2b2e429cb08fa6050a9beb# Parent 70822719735dd7b5bed47a992a5702bbdac0f557 Merge from mainline. diff -r ff8134865c63 -r d8549f97592e admin/notes/BRANCH --- a/admin/notes/BRANCH Thu Jan 14 23:01:38 2010 +0000 +++ b/admin/notes/BRANCH Sun Jan 17 21:57:00 2010 +0000 @@ -1,11 +1,10 @@ -This file describes the CVS branch in which it is maintained. +This file describes the bzr branch in which it is maintained. Everything below the line is branch-specific. ________________________________________________________________________ This is the trunk (sometimes mistakenly called "HEAD"). -When people say "use CVS emacs", this is the branch they are talking -about. Likewise, a "cvs checkout" without the "-r" option results in -this branch. +When people say "use the development version of Emacs" or the +"bzr version of Emacs", this is the branch they are talking about. Emacs development takes place on the trunk. Most of the time, Emacs hackers add to it relatively free of constraint (aside from proper diff -r ff8134865c63 -r d8549f97592e admin/notes/bugtracker --- a/admin/notes/bugtracker Thu Jan 14 23:01:38 2010 +0000 +++ b/admin/notes/bugtracker Sun Jan 17 21:57:00 2010 +0000 @@ -88,9 +88,8 @@ The "maintainer email address" is "bug-gnu-emacs@gnu.org" in most cases. -They also have: +A new report also has: -Reply-To: bug submitter, 123@debbugs.gnu.org Mail-Followup-To: bug submitter, 123@debbugs.gnu.org ** To not get acknowledgement mail from the tracker, @@ -174,13 +173,23 @@ *** Bugs can be tagged in various ways (eg wontfix, patch, etc). The available tags are: patch wontfix moreinfo unreproducible fixed notabug -Note that the list at http://debbugs.gnu.org/Developer#tags -is incorrect, at least for Emacs. +See http://debbugs.gnu.org/Developer#tags The list of tags can be prefixed with +, - or =, meaning to add (the default), remove, or reset the tags. E.g.: tags 123 + wontfix +** URL shortcuts + +http://debbugs.gnu.org/... + +123 # given bug number +123;mbox=yes # mbox version of given bug +package # bugs in given package (don't use "emacs" - too many bugs!) +from:submitter@email.address +severity:severity # all bugs of given severity +tag:tag # all bugs with given tag + ** Usertags See @@ -335,19 +344,10 @@ It's a function of the number of displayed bugs. You can speed things up by only looking at the newest 100 bugs: - http://debbugs.gnu.org/cgi-bin/pkgreport.cgi?newest=100;package=emacs -The above page is accessible from the "Options" section at the end of -the "main list of bugs" page. Select bugs "in package" = emacs; -"newest bugs" = 100. (I have no idea how you get to that Options -section without having to go through the bug list page first...) - -** Mails to the bug tracker disappear - -Apparently it has some kind of spam filter that sometimes silently -discards valid mails. Adding a subject (pointless in control messages) -may help. +Or use the static index: +http://debbugs.gnu.org/db/ix/full.html ** ChangeLog issues diff -r ff8134865c63 -r d8549f97592e admin/notes/commits --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/admin/notes/commits Sun Jan 17 21:57:00 2010 +0000 @@ -0,0 +1,53 @@ +HOW TO COMMIT CHANGES TO EMACS + +http://lists.gnu.org/archive/html/emacs-devel/2009-03/msg00555.html +From: Miles Bader +Subject: commit style redux +Date: Tue, 31 Mar 2009 12:21:20 +0900 + +(1) Commit all changed files at once with a single log message (which + in CVS will result in an identical log message for all committed + files), not one-by-one. This is pretty easy using vc-dir now. + +(2) Make the log message describe the entire changeset, perhaps + including relevant changelog entiries (I often don't bother with + the latter if it's a trivial sort of change). + + Many modern source-control systems vaguely distinguish the first + line of the log message to use as a short summary for abbreviated + history listing (in arch this was explicitly called the summary, + but many other systems have a similar concept). So it's nice if + you can format the log entry like: + + SHORTISH ONE-LINE SUMMARY + + MULTIPLE-LINE DETAILED DESCRIPTION POSSIBLY INCLUDING (OR + CONSISTING OF) CHANGELOG ENTRIES + + [Even with CVS this style is useful, because web CVS browsing + interfaces often include the first N words of the log message of + the most recent commit as a short "most recent change" + description.] + +(3) Don't phrase log messages assuming the filename is known, because + in non-file-oriented systems (everything modern other than CVS), + the log listing tends to be treated as global information, and the + connection with specific files is less explicit. + + For instance, currently I often see log messages like "Regenerate"; + for modern source-control systems with a global log, it's better to + have something like "Regenerate configure". + + +Followup discussion: +http://lists.gnu.org/archive/html/emacs-devel/2010-01/msg00897.html + + +PREVIOUS GUIDELINES FOR CVS + +For historical interest only, here is the old-style advice for CVS logs: +http://lists.gnu.org/archive/html/emacs-devel/2007-12/msg01208.html + +From: Eli Zaretskii +Subject: Re: Log messages in CVS +Date: Sat, 29 Dec 2007 16:06:29 +0200 diff -r ff8134865c63 -r d8549f97592e admin/notes/copyright --- a/admin/notes/copyright Thu Jan 14 23:01:38 2010 +0000 +++ b/admin/notes/copyright Sun Jan 17 21:57:00 2010 +0000 @@ -24,9 +24,9 @@ 2. When installing code written by someone else, the ChangeLog entry should be in the name of the author of the code, not the person who -installs it. I think it is helpful to put the author (if not yourself) -in the CVS log as well; and to not install any of your own changes in -the same commit. +installs it. I think it is helpful to put the author (if not yourself) +in the commit log as well (you can also use bzr commit's "--author" +option); and to not install any of your own changes in the same commit. 3. With images, add the legal info to a README file in the directory containing the image. @@ -38,17 +38,17 @@ right thing to do. -Every non-trivial file distributed through the Emacs CVS should be +Every non-trivial file distributed through the Emacs repository should be self-explanatory in terms of copyright and license. This includes files that are not distributed in Emacs releases (for example, the -admin/ directory), because the whole Emacs CVS is publicly +admin/ directory), because the whole Emacs repository is publicly available. The definition of triviality is a little vague, but a rule of thumb is that any file with less than 15 lines of actual content is trivial. If a file is auto-generated (eg ldefs-boot.el) from another one in the -CVS, then it does not really matter about adding a copyright statement -to the generated file. +repository, then it does not really matter about adding a copyright +statement to the generated file. Legal advice says that we could, if we wished, put a license notice even in trivial files, because copyright law in general looks at the @@ -67,8 +67,8 @@ should display copyright notices (an exception to the rule about "generated" files), but these can just display the latest year. The full list of years should be kept in comments in the source file. If -these are distributed in CVS, check in a regenerated version when the -tex files are updated. +these are distributed in the repository, check in a regenerated +version when the tex files are updated. Copyright changes should be propagated to any associated repositories (eg Gnus, MH-E), but I think in every case this happens automatically @@ -115,7 +115,7 @@ else it is possible the file should not be in Emacs at all (please report!). -Note that it seems painfully clear that one cannot rely on CVS logs, +Note that it seems painfully clear that one cannot rely on commit logs, or even ChangeLogs, for older changes. People often installed changes from others, without recording the true authorship. @@ -555,10 +555,10 @@ obviously good): -Is it OK to just `cvs remove' a file for legal reasons, or is +Is it OK to just `bzr remove' a file for legal reasons, or is something more drastic needed? A removed file is still available from -CVS, if suitable options are applied. (This CVS issue obviously does -not affect a release). +the repository, if suitable options are applied. (This issue obviously +does not affect a release). rms: will ask lawyer @@ -600,7 +600,7 @@ Some notes: (see http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg01431.html) -1. There are some files in Emacs CVS which are not part of Emacs (eg +1. There are some files in the Emacs tree which are not part of Emacs (eg those included from Gnulib). These are all copyright FSF and (at time of writing) GPL >= 2. rms says may as well leave the licenses of these alone (may import them from Gnulib again). These are: diff -r ff8134865c63 -r d8549f97592e admin/notes/cvslogs --- a/admin/notes/cvslogs Thu Jan 14 23:01:38 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -http://lists.gnu.org/archive/html/emacs-devel/2007-12/msg01208.html - -From: Eli Zaretskii -Subject: Re: Log messages in CVS -Date: Sat, 29 Dec 2007 16:06:29 +0200 - -I once posted a summary that I know about; see: - - http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00229.html - http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00234.html - http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00312.html - -Richard commented here, basically approving my summary: - - http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00276.html diff -r ff8134865c63 -r d8549f97592e doc/lispref/ChangeLog --- a/doc/lispref/ChangeLog Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/lispref/ChangeLog Sun Jan 17 21:57:00 2010 +0000 @@ -1,3 +1,7 @@ +2010-01-17 Juanma Barranquero + + * two.el (volume-header-toc-markup): Fix typos in docstring. + 2010-01-04 Stefan Monnier Avoid dubious uses of save-excursions. diff -r ff8134865c63 -r d8549f97592e doc/lispref/two.el --- a/doc/lispref/two.el Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/lispref/two.el Sun Jan 17 21:57:00 2010 +0000 @@ -54,8 +54,8 @@ (defun volume-header-toc-markup () "Insert Volume I and Volume II text into .toc file. -NOTE: this auxilary function is file specific. -This is for the *Elisp Ref Manual*" +NOTE: this auxiliary function is file specific. +This is for the *Elisp Ref Manual*." (interactive) (goto-char (point-min)) (insert "\\unnumbchapentry {Volume 1}{}\n\\unnumbchapentry {}{}\n") diff -r ff8134865c63 -r d8549f97592e doc/misc/ChangeLog --- a/doc/misc/ChangeLog Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/ChangeLog Sun Jan 17 21:57:00 2010 +0000 @@ -1,3 +1,33 @@ +2010-01-17 Chong Yidong + + * semantic.texi: Add Richard Y. Kim credit. + + * eieio.texi (Making New Objects): Fix typo (Bug#5406). + +2010-01-17 Michael Albinus + + * tramp.texi (Frequently Asked Questions): Add GNU Emacs 23 and + SXEmacs 22 to the supported systems. New item for hung ssh sessions. + +2010-01-17 Glenn Morris + + * calc.texi (Reporting Bugs): Don't mention format of repository. + + * woman.texi (Bugs): Make "Emacs repository" less specific, + and the URL for same more specific. + + * faq.texi (Latest version of Emacs): The repository is now Bazaar. + +2010-01-17 Juanma Barranquero + + * ede.texi (ede-step-project, ede-proj-target): + * tramp.texi (Remote processes): Fix typos. + +2010-01-16 Mario Lang + + * ede.texi (ede-target): + * org.texi (Refiling notes): Remove duplicated words. + 2010-01-04 Stefan Monnier * gnus.texi (Posting Styles): Use with-current-buffer. diff -r ff8134865c63 -r d8549f97592e doc/misc/calc.texi --- a/doc/misc/calc.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/calc.texi Sun Jan 17 21:57:00 2010 +0000 @@ -35269,7 +35269,7 @@ so any efforts can be coordinated. The latest version of Calc is available from Savannah, in the Emacs -CVS tree. See @uref{http://savannah.gnu.org/projects/emacs}. +repository. See @uref{http://savannah.gnu.org/projects/emacs}. @c [summary] @node Summary, Key Index, Reporting Bugs, Top diff -r ff8134865c63 -r d8549f97592e doc/misc/ede.texi --- a/doc/misc/ede.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/ede.texi Sun Jan 17 21:57:00 2010 +0000 @@ -1728,7 +1728,7 @@ Type: @code{(or null list)} @* Default Value: @code{(quote ("GNUmakefile.preamble"))} -The auxilliary makefile for additional variables. +The auxiliary makefile for additional variables. Included just before the specific target files. @refill @@ -1736,7 +1736,7 @@ Type: @code{(or null list)} @* Default Value: @code{(quote ("GNUmakefile.postamble"))} -The auxilliary makefile for additional rules. +The auxiliary makefile for additional rules. Included just after the specific target files. @refill @@ -1968,7 +1968,7 @@ @deffn Method ede-expand-filename :AFTER this filename &optional force Return a fully qualified file name based on target @var{THIS}. -@var{FILENAME} should a a filename which occurs in a directory in which @var{THIS} works. +@var{FILENAME} should be a filename which occurs in a directory in which @var{THIS} works. Optional argument @var{FORCE} forces the default filename to be provided even if it doesn't exist. @end deffn @@ -2083,7 +2083,7 @@ Type: @code{list} @* Default Value: @code{nil} -Auxilliary source files included in this target. +Auxiliary source files included in this target. Each of these is considered equivalent to a source file, but it is not distributed, and each should have a corresponding rule to build it. @refill diff -r ff8134865c63 -r d8549f97592e doc/misc/eieio.texi --- a/doc/misc/eieio.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/eieio.texi Sun Jan 17 21:57:00 2010 +0000 @@ -645,7 +645,7 @@ @comment node-name, next, previous, up @chapter Making New Objects -Suppose we have defined a simple class is defined, such as: +Suppose we have a simple class is defined, such as: @example (defclass record () diff -r ff8134865c63 -r d8549f97592e doc/misc/faq.texi --- a/doc/misc/faq.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/faq.texi Sun Jan 17 21:57:00 2010 +0000 @@ -1008,9 +1008,7 @@ @cindex Latest version of Emacs @cindex Development, Emacs @cindex Repository, Emacs -@cindex CVS repository, Emacs -@cindex Arch repository, Emacs -@cindex Git repository, Emacs +@cindex Bazaar repository, Emacs Emacs @value{VER} is the current version as of this writing. A version number with two components (e.g. @samp{22.1}) indicates a released @@ -1020,9 +1018,8 @@ Emacs is under active development, hosted at @uref{http://savannah.gnu.org/projects/emacs/, Savannah}. The source code can be retrieved anonymously following the -@uref{http://savannah.gnu.org/cvs/?group=emacs, instructions}. -The primary repository is CVS, but Arch and Git mirrors are also -available. +@uref{http://savannah.gnu.org/bzr/?group=emacs, instructions}. +The repository is GNU Bazaar. Because Emacs undergoes many changes before a release, the version number of a development version is not especially meaningful. It is diff -r ff8134865c63 -r d8549f97592e doc/misc/org.texi --- a/doc/misc/org.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/org.texi Sun Jan 17 21:57:00 2010 +0000 @@ -6181,7 +6181,7 @@ select a location via a file-path-like completion along the outline path, see the variables @code{org-refile-use-outline-path} and @code{org-outline-path-complete-in-steps}. If you would like to be able to -create new nodes as new parents for for refiling on the fly, check the +create new nodes as new parents for refiling on the fly, check the variable @code{org-refile-allow-creating-parent-nodes}. @kindex C-u C-c C-w @item C-u C-c C-w diff -r ff8134865c63 -r d8549f97592e doc/misc/semantic.texi --- a/doc/misc/semantic.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/semantic.texi Sun Jan 17 21:57:00 2010 +0000 @@ -1,7 +1,7 @@ \input texinfo @setfilename ../../info/semantic @set TITLE Semantic Manual -@set AUTHOR Eric M. Ludlam and David Ponce +@set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim @settitle @value{TITLE} @c ************************************************************************* diff -r ff8134865c63 -r d8549f97592e doc/misc/tramp.texi Binary file doc/misc/tramp.texi has changed diff -r ff8134865c63 -r d8549f97592e doc/misc/woman.texi --- a/doc/misc/woman.texi Thu Jan 14 23:01:38 2010 +0000 +++ b/doc/misc/woman.texi Sun Jan 17 21:57:00 2010 +0000 @@ -4,7 +4,7 @@ @settitle WoMan: Browse Unix Manual Pages ``W.O. (without) Man'' @c FIXME @c Manual last updated: -@set UPDATED Time-stamp: <2009-02-16 09:25:50 karl> +@set UPDATED Time-stamp: @c Software version: @set VERSION 0.54 (beta) @afourpaper @@ -18,8 +18,8 @@ This file documents WoMan: A program to browse Unix manual pages `W.O. (without) man'. -Copyright @copyright{} 2001, 2002, 2003, 2004, -2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +2009, 2010 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1319,8 +1319,8 @@ @enumerate @item -try the latest version of @file{woman.el} from the Emacs CVS repository -on @uref{http://savannah.gnu.org/}. If it still fails, please +try the latest version of @file{woman.el} from the Emacs repository +on @uref{http://savannah.gnu.org/projects/emacs/}. If it still fails, please @item send a bug report to @email{bug-gnu-emacs@@gnu.org} and to diff -r ff8134865c63 -r d8549f97592e etc/ChangeLog --- a/etc/ChangeLog Thu Jan 14 23:01:38 2010 +0000 +++ b/etc/ChangeLog Sun Jan 17 21:57:00 2010 +0000 @@ -1,3 +1,16 @@ +2010-01-16 Mario Lang + + * srecode/doc-cpp.srt, srecode/doc-default.srt: + * srecode/doc-java.srt: Remove duplicated words. + +2010-01-14 Nick Roberts + + * etc/images/gud/recstart.xpm, etc/images/gud/recstop.xpm: + * etc/images/gud/rcont.xpm, etc/images/gud/rnext.xpm: + * etc/images/gud/rfinish.xpm, etc/images/gud/rnexti.xpm: + * etc/images/gud/rstep.xpm, etc/images/gud/rstepi.xpm: + New icons for reverse debugging. + 2010-01-14 Juanma Barranquero * srecode/doc-cpp.srt (function-comment, variable-same-line-comment) diff -r ff8134865c63 -r d8549f97592e etc/srecode/doc-cpp.srt --- a/etc/srecode/doc-cpp.srt Thu Jan 14 23:01:38 2010 +0000 +++ b/etc/srecode/doc-cpp.srt Sun Jan 17 21:57:00 2010 +0000 @@ -58,7 +58,7 @@ ---- template group-comment-end :blank :indent -"A comment occurring at the end of a a group of declarations. +"A comment occurring at the end of a group of declarations. Recycle doxygen comment code from the more general template set." ---- {{>:classdecl:doxygen-function-group-end}} @@ -75,7 +75,7 @@ ---- template group-comment-end :blank :indent -"A comment occurring at the end of a a group of declarations. +"A comment occurring at the end of a group of declarations. Recycle doxygen comment code from the more general template set." ---- {{>:classdecl:doxygen-function-group-end}} diff -r ff8134865c63 -r d8549f97592e etc/srecode/doc-default.srt --- a/etc/srecode/doc-default.srt Thu Jan 14 23:01:38 2010 +0000 +++ b/etc/srecode/doc-default.srt Sun Jan 17 21:57:00 2010 +0000 @@ -57,7 +57,7 @@ ---- template group-comment-end :indent -"A comment occurring at the end of a a group of declarations." +"A comment occurring at the end of a group of declarations." ---- {{comment_start}} End {{?GROUPNAME}} {{comment_end}} ---- @@ -72,7 +72,7 @@ ---- template group-comment-end :indent -"A comment occurring at the end of a a group of declarations." +"A comment occurring at the end of a group of declarations." ---- {{>:declaration:group-comment-end}} ---- diff -r ff8134865c63 -r d8549f97592e etc/srecode/doc-java.srt --- a/etc/srecode/doc-java.srt Thu Jan 14 23:01:38 2010 +0000 +++ b/etc/srecode/doc-java.srt Sun Jan 17 21:57:00 2010 +0000 @@ -59,7 +59,7 @@ ---- template group-comment-end :blank :indent -"A comment occurring at the end of a a group of declarations. +"A comment occurring at the end of a group of declarations. Recycle javadoc comment code from the more general template set." ---- {{>:classdecl:javadoc-function-group-end}} @@ -76,7 +76,7 @@ ---- template group-comment-end :blank :indent -"A comment occurring at the end of a a group of declarations. +"A comment occurring at the end of a group of declarations. Recycle javadoc comment code from the more general template set." ---- {{>:classdecl:javadoc-function-group-end}} diff -r ff8134865c63 -r d8549f97592e lib-src/etags.c --- a/lib-src/etags.c Thu Jan 14 23:01:38 2010 +0000 +++ b/lib-src/etags.c Sun Jan 17 21:57:00 2010 +0000 @@ -6297,7 +6297,7 @@ readline (lbp, stream); return; } /* if a real #line directive */ - } /* if #line is followed by a a number */ + } /* if #line is followed by a number */ } /* if line begins with "#line " */ /* If we are here, no #line directive was found. */ diff -r ff8134865c63 -r d8549f97592e lisp/ChangeLog --- a/lisp/ChangeLog Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/ChangeLog Sun Jan 17 21:57:00 2010 +0000 @@ -1,3 +1,107 @@ +2010-01-17 Dan Nicolaescu + + * vc.el (with-vc-properties): Deal with directory arguments. (Bug#5298) + + * vc-dir.el (vc-dir-resynch-file): Update the vc-dir header when + resyncing a directory. + +2010-01-17 Stephen Leake + + * progmodes/ada-mode.el: Fix bug#1920, bug#5400. + (ada-ident-re): Delete ., allow multibyte characters. + (ada-goto-label-re): New; matches goto labels. + (ada-block-label-re): New; matches block labels. + (ada-label-re): New; matches both. + (ada-named-block-re): Deleted; callers changed to use + `ada-block-label-re' instead. + (ada-get-current-indent, ada-get-indent-noindent, ada-get-indent-loop): + Use `ada-block-label-re'. + (ada-indent-on-previous-lines): Improve handling of goto labels. + (ada-get-indent-block-start): Special-case block label. + (ada-get-indent-label): Split into `ada-indent-block-label' and + `ada-indent-goto-label'. + (ada-goto-stmt-start, ada-goto-next-non-ws): + Optionally ignore goto labels. + (ada-goto-next-word): Simplify. + (ada-indent-newline-indent-conditional): Insert newline before + trying to fix indentation; doc fix. + +2010-01-17 Jay Belanger + + * calc/calc.el (calc-command-flags): Give it an initial value. + +2010-01-17 Glenn Morris + + * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix. + +2010-01-17 Juanma Barranquero + + * cedet/semantic.el (semantic-mode): + * files.el (minibuffer-with-setup-hook): + * textmodes/artist.el (artist-mt, artist-key-undraw-continously) + (artist-key-draw-continously, artist-key-do-continously-continously) + (artist-key-set-point-continously, artist-mouse-draw-continously): + Fix typos in docstrings. + +2010-01-16 Lennart Borgman + + * nxml/nxml-mode.el (nxml-extend-after-change-region): Never + return t (Bug#3898). + +2010-01-16 Frédéric Perrin (tiny change) + + * vc-dispatcher.el (vc-do-command): Set LC_MESSAGES, so that we + can parse the output of the external commands (Bug#5279). + +2010-01-16 Jari Aalto + + * pcmpl-unix.el (pcmpl-unix-read-passwd-file): Doc fix. + +2010-01-16 Chong Yidong + + * emacs-lisp/advice.el (ad-add-advice): Doc fix (Bug#5274) + + * emacs-lisp/cl-macs.el (defstruct): Doc fix (Bug#5267). + + * startup.el (command-line): Remove unused --icon-type arg. + Handle --display arg, passing it to command-line-1 (Bug#5392). + +2010-01-16 Mario Lang + + * cedet/ede/cpp-root.el (ede-cpp-root-project): + * cedet/ede/files.el (ede-expand-filename): + * cedet/ede/simple.el (ede-simple-project): + * cedet/semantic/complete.el (semantic-complete-read-tag-engine) + (semantic-complete-inline-tag-engine): + * cedet/semantic/db-el.el (semanticdb-equivalent-mode): + * cedet/semantic/db-global.el (semanticdb-equivalent-mode): + * cedet/semantic/db-javascript.el (semanticdb-equivalent-mode): + * cedet/semantic/db.el (semanticdb-equivalent-mode): + * cedet/semantic/decorate/include.el (semantic-decoration-unknown-include-describe): + * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): + * emacs-lisp/chart.el (chart-translate-namezone): + * textmodes/artist.el (artist-compute-popup-menu-table): + Remove duplicated words in doc-strings. + +2010-01-15 David Abrahams (tiny change) + + * net/mairix.el (mairix-widget-send-query): Send -1 instead of nil + to mairix-search to suppress threading (Bug#5342). + +2010-01-15 Kenichi Handa + + * international/mule-cmds.el (canonicalize-coding-system-name): + Convert "msXXX", "ibmXXX", "windows-XXX" to "cpXXX". + +2010-01-15 Glenn Morris + + * log-view.el (top-level): Require 'wid-edit. (Bug#5311) + + * wid-edit.el (widget-keymap): Doc fix. + + * vc-svn.el (vc-svn-print-log): Use --limit rather than -l since the + former seems to be more widely accepted by various svn versions. + 2010-01-14 Juanma Barranquero * find-cmd.el (find-constituents): @@ -1454,7 +1558,7 @@ 2009-12-01 Dan Nicolaescu Make vc-print-log buttons work. - * log-view.el (log-view-mode-map): Inherit from from widget-keymap. + * log-view.el (log-view-mode-map): Inherit from widget-keymap. 2009-11-30 Ryan C. Thompson (tiny change) diff -r ff8134865c63 -r d8549f97592e lisp/calc/calc.el --- a/lisp/calc/calc.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/calc/calc.el Sun Jan 17 21:57:00 2010 +0000 @@ -1546,7 +1546,7 @@ (defvar calc-aborted-prefix nil) (defvar calc-start-time nil) -(defvar calc-command-flags) +(defvar calc-command-flags nil) (defvar calc-final-point-line) (defvar calc-final-point-column) ;;; Note that modifications to this function may break calc-pass-errors. diff -r ff8134865c63 -r d8549f97592e lisp/cedet/ede/cpp-root.el --- a/lisp/cedet/ede/cpp-root.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/ede/cpp-root.el Sun Jan 17 21:57:00 2010 +0000 @@ -324,7 +324,7 @@ ) ) "EDE cpp-root project class. -Each directory needs a a project file to control it.") +Each directory needs a project file to control it.") ;;; INIT ;; diff -r ff8134865c63 -r d8549f97592e lisp/cedet/ede/files.el --- a/lisp/cedet/ede/files.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/ede/files.el Sun Jan 17 21:57:00 2010 +0000 @@ -487,7 +487,7 @@ (defmethod ede-expand-filename ((this ede-target) filename &optional force) "Return a fully qualified file name based on target THIS. -FILENAME should a a filename which occurs in a directory in which THIS works. +FILENAME should be a filename which occurs in a directory in which THIS works. Optional argument FORCE forces the default filename to be provided even if it doesn't exist." (ede-expand-filename (ede-target-parent this) filename force)) diff -r ff8134865c63 -r d8549f97592e lisp/cedet/ede/proj-aux.el --- a/lisp/cedet/ede/proj-aux.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/ede/proj-aux.el Sun Jan 17 21:57:00 2010 +0000 @@ -1,4 +1,4 @@ -;;; ede/proj-aux.el --- EDE Generic Project auxilliary file support +;;; ede/proj-aux.el --- EDE Generic Project auxiliary file support ;; Copyright (C) 1998, 1999, 2000, 2007, 2009, 2010 Free Software Foundation, Inc. diff -r ff8134865c63 -r d8549f97592e lisp/cedet/ede/simple.el --- a/lisp/cedet/ede/simple.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/ede/simple.el Sun Jan 17 21:57:00 2010 +0000 @@ -87,7 +87,7 @@ (file-header-line :initform ";; EDE Simple Project") ) "EDE Simple project class. -Each directory needs a a project file to control it.") +Each directory needs a project file to control it.") (defmethod ede-commit-project ((proj ede-simple-project)) "Commit any change to PROJ to its file." diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic.el --- a/lisp/cedet/semantic.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic.el Sun Jan 17 21:57:00 2010 +0000 @@ -1014,7 +1014,7 @@ ;; The `semantic-mode' command, in conjuction with the ;; `semantic-default-submodes' variable, toggles Semantic's various -;; auxilliary minor modes. +;; auxiliary minor modes. (defvar semantic-load-system-cache-loaded nil "Non nil when the Semantic system caches have been loaded. @@ -1057,7 +1057,7 @@ In Semantic mode, Emacs parses the buffers you visit for their semantic content. This information is used by a variety of -auxilliary minor modes, listed in `semantic-default-submodes'; +auxiliary minor modes, listed in `semantic-default-submodes'; all the minor modes in this list are also enabled when you enable Semantic mode. @@ -1067,7 +1067,7 @@ (if semantic-mode ;; Turn on Semantic mode (progn - ;; Enable all the global auxilliary minor modes in + ;; Enable all the global auxiliary minor modes in ;; `semantic-submode-list'. (dolist (mode semantic-submode-list) (if (memq mode semantic-default-submodes) diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/complete.el --- a/lisp/cedet/semantic/complete.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/complete.el Sun Jan 17 21:57:00 2010 +0000 @@ -192,7 +192,7 @@ default-tag initial-input history) "Read a semantic tag, and return a tag for the selection. -Argument COLLECTOR is an object which can be used to to calculate +Argument COLLECTOR is an object which can be used to calculate a list of possible hits. See `semantic-completion-collector-engine' for details on COLLECTOR. Argument DISPLAYOR is an object used to display a list of possible @@ -394,7 +394,7 @@ ;;; Keybindings ;; -;; Keys are bound to to perform completion using our mechanisms. +;; Keys are bound to perform completion using our mechanisms. ;; Do that work here. (defun semantic-complete-done () "Accept the current input." @@ -738,7 +738,7 @@ (defun semantic-complete-inline-tag-engine (collector displayor buffer start end) "Perform completion based on semantic tags in a buffer. -Argument COLLECTOR is an object which can be used to to calculate +Argument COLLECTOR is an object which can be used to calculate a list of possible hits. See `semantic-completion-collector-engine' for details on COLLECTOR. Argument DISPLAYOR is an object used to display a list of possible diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/db-el.el --- a/lisp/cedet/semantic/db-el.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/db-el.el Sun Jan 17 21:57:00 2010 +0000 @@ -107,7 +107,7 @@ (defmethod semanticdb-equivalent-mode ((table semanticdb-table-emacs-lisp) &optional buffer) "Return non-nil if TABLE's mode is equivalent to BUFFER. -Equivalent modes are specified by by `semantic-equivalent-major-modes' +Equivalent modes are specified by the `semantic-equivalent-major-modes' local variable." (with-current-buffer buffer (eq (or mode-local-active-mode major-mode) 'emacs-lisp-mode))) diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/db-global.el --- a/lisp/cedet/semantic/db-global.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/db-global.el Sun Jan 17 21:57:00 2010 +0000 @@ -105,7 +105,7 @@ (defmethod semanticdb-equivalent-mode ((table semanticdb-table-global) &optional buffer) "Return t, pretend that this table's mode is equivalent to BUFFER. -Equivalent modes are specified by by `semantic-equivalent-major-modes' +Equivalent modes are specified by the `semantic-equivalent-major-modes' local variable." ;; @todo - hack alert! t) diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/db-javascript.el --- a/lisp/cedet/semantic/db-javascript.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/db-javascript.el Sun Jan 17 21:57:00 2010 +0000 @@ -145,7 +145,7 @@ (defmethod semanticdb-equivalent-mode ((table semanticdb-table-javascript) &optional buffer) "Return non-nil if TABLE's mode is equivalent to BUFFER. -Equivalent modes are specified by by `semantic-equivalent-major-modes' +Equivalent modes are specified by the `semantic-equivalent-major-modes' local variable." (with-current-buffer buffer (eq (or mode-local-active-mode major-mode) 'javascript-mode))) diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/db.el --- a/lisp/cedet/semantic/db.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/db.el Sun Jan 17 21:57:00 2010 +0000 @@ -735,13 +735,13 @@ (defmethod semanticdb-equivalent-mode ((table semanticdb-abstract-table) &optional buffer) "Return non-nil if TABLE's mode is equivalent to BUFFER. -Equivalent modes are specified by by `semantic-equivalent-major-modes' +Equivalent modes are specified by the `semantic-equivalent-major-modes' local variable." nil) (defmethod semanticdb-equivalent-mode ((table semanticdb-table) &optional buffer) "Return non-nil if TABLE's mode is equivalent to BUFFER. -Equivalent modes are specified by by `semantic-equivalent-major-modes' +Equivalent modes are specified by the `semantic-equivalent-major-modes' local variable." (save-excursion (if buffer (set-buffer buffer)) diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/decorate/include.el --- a/lisp/cedet/semantic/decorate/include.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/decorate/include.el Sun Jan 17 21:57:00 2010 +0000 @@ -461,7 +461,7 @@ (when (or (eq mm 'c++-mode) (eq mm 'c-mode)) (princ " -For C/C++ includes located within a a project, you can use a special +For C/C++ includes located within a project, you can use a special EDE project that will wrap an existing build system. You can do that like this in your .emacs file: diff -r ff8134865c63 -r d8549f97592e lisp/cedet/semantic/idle.el --- a/lisp/cedet/semantic/idle.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/cedet/semantic/idle.el Sun Jan 17 21:57:00 2010 +0000 @@ -336,9 +336,9 @@ (defun semantic-idle-work-for-one-buffer (buffer) - "Do long-processing work for for BUFFER. + "Do long-processing work for BUFFER. Uses `semantic-safe' and returns the output. -Returns t of all processing succeeded." +Returns t if all processing succeeded." (with-current-buffer buffer (not (and ;; Just in case diff -r ff8134865c63 -r d8549f97592e lisp/emacs-lisp/advice.el --- a/lisp/emacs-lisp/advice.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/emacs-lisp/advice.el Sun Jan 17 21:57:00 2010 +0000 @@ -2422,16 +2422,28 @@ ;;;###autoload (defun ad-add-advice (function advice class position) "Add a piece of ADVICE to FUNCTION's list of advices in CLASS. -If FUNCTION already has one or more pieces of advice of the specified -CLASS then POSITION determines where the new piece will go. The value -of POSITION can either be `first', `last' or a number where 0 corresponds -to `first'. Numbers outside the range will be mapped to the closest -extreme position. If there was already a piece of ADVICE with the same -name, then the position argument will be ignored and the old advice -will be overwritten with the new one. - If the FUNCTION was not advised already, then its advice info will be -initialized. Redefining a piece of advice whose name is part of the cache-id -will clear the cache." + +ADVICE has the form (NAME PROTECTED ENABLED DEFINITION), where +NAME is the advice name; PROTECTED is a flag specifying whether +to protect against non-local exits; ENABLED is a flag specifying +whether to initially enable the advice; and DEFINITION has the +form (advice . LAMBDA), where LAMBDA is a lambda expression. + +If FUNCTION already has a piece of advice with the same name, +then POSITION is ignored, and the old advice is overwritten with +the new one. + +If FUNCTION already has one or more pieces of advice of the +specified CLASS, then POSITION determines where the new piece +goes. POSITION can either be `first', `last' or a number (where +0 corresponds to `first', and numbers outside the valid range are +mapped to the closest extremal position). + +If FUNCTION was not advised already, its advice info will be +initialized. Redefining a piece of advice whose name is part of +the cache-id will clear the cache. + +See Info node `(elisp)Computed Advice' for detailed documentation." (cond ((not (ad-is-advised function)) (ad-initialize-advice-info function) (ad-set-advice-info-field diff -r ff8134865c63 -r d8549f97592e lisp/emacs-lisp/chart.el --- a/lisp/emacs-lisp/chart.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/emacs-lisp/chart.el Sun Jan 17 21:57:00 2010 +0000 @@ -323,7 +323,7 @@ (defmethod chart-translate-namezone ((c chart) n) "Return a dot-pair representing a positional range for a name. The name in chart C of the Nth name resides. -Automatically compensates for for direction." +Automatically compensates for direction." (let* ((dir (oref c direction)) (w (if (eq dir 'vertical) (oref c x-width) (oref c y-width))) (m (if (eq dir 'vertical) (oref c y-margin) (oref c x-margin))) diff -r ff8134865c63 -r d8549f97592e lisp/emacs-lisp/cl-loaddefs.el --- a/lisp/emacs-lisp/cl-loaddefs.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/emacs-lisp/cl-loaddefs.el Sun Jan 17 21:57:00 2010 +0000 @@ -282,7 +282,7 @@ ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist ;;;;;; do* do loop return-from return block etypecase typecase ecase ;;;;;; case load-time-value eval-when destructuring-bind function* -;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "3867c0613dfd69780f561012a1dfe67b") +;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "e10a7e42199c08dc39460f67dd2d424b") ;;; Generated autoloads from cl-macs.el (autoload 'gensym "cl-macs" "\ @@ -672,11 +672,21 @@ (autoload 'defstruct "cl-macs" "\ Define a struct type. -This macro defines a new Lisp data type called NAME, which contains data -stored in SLOTs. This defines a `make-NAME' constructor, a `copy-NAME' -copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors. +This macro defines a new data type called NAME that stores data +in SLOTs. It defines a `make-NAME' constructor, a `copy-NAME' +copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'. +You can use the accessors to set the corresponding slots, via `setf'. -\(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)" nil (quote macro)) +NAME may instead take the form (NAME OPTIONS...), where each +OPTION is either a single keyword or (KEYWORD VALUE). +See Info node `(cl)Structures' for a list of valid keywords. + +Each SLOT may instead take the form (SLOT SLOT-OPTS...), where +SLOT-OPTS are keyword-value pairs for that slot. Currently, only +one keyword is supported, `:read-only'. If this has a non-nil +value, that slot cannot be set via `setf'. + +\(fn NAME SLOTS...)" nil (quote macro)) (autoload 'cl-struct-setf-expander "cl-macs" "\ Not documented diff -r ff8134865c63 -r d8549f97592e lisp/emacs-lisp/cl-macs.el --- a/lisp/emacs-lisp/cl-macs.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/emacs-lisp/cl-macs.el Sun Jan 17 21:57:00 2010 +0000 @@ -2191,11 +2191,21 @@ ;;;###autoload (defmacro defstruct (struct &rest descs) "Define a struct type. -This macro defines a new Lisp data type called NAME, which contains data -stored in SLOTs. This defines a `make-NAME' constructor, a `copy-NAME' -copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors. +This macro defines a new data type called NAME that stores data +in SLOTs. It defines a `make-NAME' constructor, a `copy-NAME' +copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'. +You can use the accessors to set the corresponding slots, via `setf'. -\(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)" +NAME may instead take the form (NAME OPTIONS...), where each +OPTION is either a single keyword or (KEYWORD VALUE). +See Info node `(cl)Structures' for a list of valid keywords. + +Each SLOT may instead take the form (SLOT SLOT-OPTS...), where +SLOT-OPTS are keyword-value pairs for that slot. Currently, only +one keyword is supported, `:read-only'. If this has a non-nil +value, that slot cannot be set via `setf'. + +\(fn NAME SLOTS...)" (let* ((name (if (consp struct) (car struct) struct)) (opts (cdr-safe struct)) (slots nil) diff -r ff8134865c63 -r d8549f97592e lisp/emulation/edt.el --- a/lisp/emulation/edt.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/emulation/edt.el Sun Jan 17 21:57:00 2010 +0000 @@ -2107,7 +2107,7 @@ (setq edt-term "pc") (if (or (not edt-window-system) (eq edt-window-system 'tty)) (setq edt-term (getenv "TERM")))) - ;; Look for for terminal configuration file for this terminal type. + ;; Look for a terminal configuration file for this terminal type. ;; Otherwise, load the user's custom configuration file. (if (or (not edt-window-system) (memq edt-window-system '(pc tty))) (progn diff -r ff8134865c63 -r d8549f97592e lisp/files.el --- a/lisp/files.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/files.el Sun Jan 17 21:57:00 2010 +0000 @@ -1289,7 +1289,7 @@ Recursive uses of the minibuffer are unaffected (FUN is not called additional times). -This macro actually adds an auxilliary function that calls FUN, +This macro actually adds an auxiliary function that calls FUN, rather than FUN itself, to `minibuffer-setup-hook'." (declare (indent 1) (debug t)) (let ((hook (make-symbol "setup-hook"))) diff -r ff8134865c63 -r d8549f97592e lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/gnus/ChangeLog Sun Jan 17 21:57:00 2010 +0000 @@ -1,3 +1,8 @@ +2010-01-17 Juanma Barranquero + + * nnmairix.el (nnmairix-group-delete-recreate-this-group): + Fix typo in docstring. + 2010-01-08 Jason Rumney * sieve-manage.el (sieve-manage-parse-capability-1): Loosely match OK diff -r ff8134865c63 -r d8549f97592e lisp/gnus/nnmairix.el --- a/lisp/gnus/nnmairix.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/gnus/nnmairix.el Sun Jan 17 21:57:00 2010 +0000 @@ -1104,7 +1104,7 @@ (defun nnmairix-group-delete-recreate-this-group () "Deletes and recreates group on the back end. -You can use this function on nnmairix groups which continously +You can use this function on nnmairix groups which continuously show wrong article counts." (interactive) (let* ((group (gnus-group-group-name)) diff -r ff8134865c63 -r d8549f97592e lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/international/mule-cmds.el Sun Jan 17 21:57:00 2010 +0000 @@ -226,19 +226,22 @@ ;; and delimiter characters. Support function of ;; coding-system-from-name. (defun canonicalize-coding-system-name (name) - (if (string-match "^iso[-_ ]?[0-9]" name) - ;; "iso-8859-1" -> "8859-1", "iso-2022-jp" ->"2022-jp" - (setq name (substring name (1- (match-end 0))))) - (let ((idx (string-match "[-_ /]" name))) - ;; Delete "-", "_", " ", "/" but do distinguish "16-be" and "16be". - (while idx - (if (and (>= idx 2) - (eq (string-match "16-[lb]e$" name (- idx 2)) - (- idx 2))) - (setq idx (string-match "[-_ /]" name (match-end 0))) - (setq name (concat (substring name 0 idx) (substring name (1+ idx))) - idx (string-match "[-_ /]" name idx)))) - name)) + (if (string-match "^\\(ms\\|ibm\\|windows-\\)\\([0-9]+\\)$" name) + ;; "ms950", "ibm950", "windows-950" -> "cp950" + (concat "cp" (match-string 2 name)) + (if (string-match "^iso[-_ ]?[0-9]" name) + ;; "iso-8859-1" -> "8859-1", "iso-2022-jp" ->"2022-jp" + (setq name (substring name (1- (match-end 0))))) + (let ((idx (string-match "[-_ /]" name))) + ;; Delete "-", "_", " ", "/" but do distinguish "16-be" and "16be". + (while idx + (if (and (>= idx 2) + (eq (string-match "16-[lb]e$" name (- idx 2)) + (- idx 2))) + (setq idx (string-match "[-_ /]" name (match-end 0))) + (setq name (concat (substring name 0 idx) (substring name (1+ idx))) + idx (string-match "[-_ /]" name idx)))) + name))) (defun coding-system-from-name (name) "Return a coding system whose name matches with NAME (string or symbol)." diff -r ff8134865c63 -r d8549f97592e lisp/log-view.el --- a/lisp/log-view.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/log-view.el Sun Jan 17 21:57:00 2010 +0000 @@ -122,6 +122,9 @@ :group 'pcl-cvs :prefix "log-view-") +;; Needed because log-view-mode-map inherits from widget-keymap. (Bug#5311) +(require 'wid-edit) + (easy-mmode-defmap log-view-mode-map '(("z" . kill-this-buffer) ("q" . quit-window) diff -r ff8134865c63 -r d8549f97592e lisp/net/mairix.el --- a/lisp/net/mairix.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/net/mairix.el Sun Jan 17 21:57:00 2010 +0000 @@ -341,7 +341,7 @@ (defun mairix-search (search threads) "Call Mairix with SEARCH. -If THREADS is t, also display whole threads of found +If THREADS is non-nil, also display whole threads of found messages. Results will be put into the default search file." (interactive (list @@ -595,9 +595,7 @@ "Send query from WIDGETS to mairix binary." (mairix-search (mairix-widget-make-query-from-widgets widgets) - (if (widget-value (cadr (assoc "Threads" widgets))) - t - -1)) + (if (widget-value (cadr (assoc "Threads" widgets))) t)) (kill-buffer mairix-customize-query-buffer)) (defun mairix-widget-save-search (widgets) diff -r ff8134865c63 -r d8549f97592e lisp/nxml/nxml-mode.el --- a/lisp/nxml/nxml-mode.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/nxml/nxml-mode.el Sun Jan 17 21:57:00 2010 +0000 @@ -882,16 +882,17 @@ (defun nxml-extend-after-change-region (start end pre-change-length) (unless nxml-degraded (setq nxml-last-fontify-end nil) - - (nxml-with-degradation-on-error 'nxml-extend-after-change-region - (save-excursion - (save-restriction - (widen) - (save-match-data - (nxml-with-invisible-motion - (nxml-with-unmodifying-text-property-changes - (nxml-extend-after-change-region1 - start end pre-change-length))))))))) + (let ((region (nxml-with-degradation-on-error + 'nxml-extend-after-change-region + (save-excursion + (save-restriction + (widen) + (save-match-data + (nxml-with-invisible-motion + (nxml-with-unmodifying-text-property-changes + (nxml-extend-after-change-region1 + start end pre-change-length))))))))) + (if (consp region) region)))) (defun nxml-extend-after-change-region1 (start end pre-change-length) (let* ((region (nxml-after-change1 start end pre-change-length)) diff -r ff8134865c63 -r d8549f97592e lisp/pcmpl-unix.el --- a/lisp/pcmpl-unix.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/pcmpl-unix.el Sun Jan 17 21:57:00 2010 +0000 @@ -85,7 +85,10 @@ (while (pcomplete-here (funcall pcomplete-command-completion-function)))) (defun pcmpl-unix-read-passwd-file (file) - "Return an alist correlating gids to group names in FILE." + "Return an alist correlating gids to group names in FILE. + +If FILE is in hashed format (as described in the OpenSSH +documentation), this function returns nil." (let (names) (when (file-readable-p file) (with-temp-buffer diff -r ff8134865c63 -r d8549f97592e lisp/progmodes/ada-mode.el --- a/lisp/progmodes/ada-mode.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/progmodes/ada-mode.el Sun Jan 17 21:57:00 2010 +0000 @@ -590,8 +590,25 @@ ;; FIXME: make this customizable (defconst ada-ident-re - "\\(\\sw\\|[_.]\\)+" - "Regexp matching Ada (qualified) identifiers.") + "[[:alpha:]]\\(?:[_[:alnum:]]\\)*" + ;; [:alnum:] matches any multibyte word constituent, as well as + ;; Latin-1 letters and numbers. This allows __ and trailing _; + ;; someone (emacs bug#1919) proposed [^\W_] to fix that, but \W does + ;; _not_ mean "not word constituent" inside a character alternative. + "Regexp matching an Ada identifier.") + +(defconst ada-goto-label-re + (concat "<<" ada-ident-re ">>") + "Regexp matching a goto label.") + +(defconst ada-block-label-re + (concat ada-ident-re "[ \t\n]*:[^=]") + "Regexp matching a block label. +Note that this also matches a variable declaration.") + +(defconst ada-label-re + (concat "\\(?:" ada-block-label-re "\\)\\|\\(?:" ada-goto-label-re "\\)") + "Regexp matching a goto or block label.") ;; "with" needs to be included in the regexp, to match generic subprogram parameters ;; Similarly, we put '[not] overriding' on the same line with 'procedure' etc. @@ -678,10 +695,6 @@ "protected" "task") t) "\\>")) "Regexp for the start of a subprogram.") -(defvar ada-named-block-re - "[ \t]*\\(\\sw\\|_\\)+[ \t]*:[^=]" - "Regexp of the name of a block or loop.") - (defvar ada-contextual-menu-on-identifier nil "Set to true when the right mouse button was clicked on an identifier.") @@ -2108,10 +2121,18 @@ (defun ada-indent-newline-indent-conditional () "Insert a newline and indent it. -The original line is indented first if `ada-indent-after-return' is non-nil." +The original line is re-indented if `ada-indent-after-return' is non-nil." (interactive "*") - (if ada-indent-after-return (ada-indent-current)) + ;; If at end of buffer (entering brand new code), some indentation + ;; fails. For example, a block label requires whitespace following + ;; the : to be recognized. So we do the newline first, then + ;; go back and indent the original line. (newline) + (if ada-indent-after-return + (progn + (forward-char -1) + (ada-indent-current) + (forward-char 1))) (ada-indent-current)) (defun ada-justified-indent-current () @@ -2335,8 +2356,8 @@ (progn (goto-char (car match-cons)) (save-excursion - (beginning-of-line) - (if (looking-at ada-named-block-re) + (back-to-indentation) + (if (looking-at ada-block-label-re) (setq label (- ada-label-indent)))))))) ;; found 'record' => @@ -2648,8 +2669,9 @@ ;; label ;;--------------------------------- - ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]") + ((looking-at ada-label-re) (if (ada-in-decl-p) + ;; ada-block-label-re matches variable declarations (ada-indent-on-previous-lines nil orgpoint orgpoint) (append (ada-indent-on-previous-lines nil orgpoint orgpoint) '(ada-label-indent)))) @@ -2674,9 +2696,10 @@ (if (ada-in-paramlist-p) (ada-get-indent-paramlist) - ;; move to beginning of current statement + ;; Move to beginning of current statement. If already at a + ;; statement start, move to beginning of enclosing statement. (unless nomove - (ada-goto-stmt-start)) + (ada-goto-stmt-start t)) ;; no beginning found => don't change indentation (if (and (eq oldpoint (point)) @@ -2702,6 +2725,12 @@ ((looking-at ada-block-start-re) (ada-get-indent-block-start orgpoint)) ;; + ((looking-at ada-block-label-re) ; also variable declaration + (ada-get-indent-block-label orgpoint)) + ;; + ((looking-at ada-goto-label-re) + (ada-get-indent-goto-label orgpoint)) + ;; ((looking-at "\\(sub\\)?type\\>") (ada-get-indent-type orgpoint)) ;; @@ -2717,17 +2746,8 @@ ((looking-at "when\\>") (ada-get-indent-when orgpoint)) ;; - ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]") - (ada-get-indent-label orgpoint)) - ;; ((looking-at "separate\\>") (ada-get-indent-nochange)) - - ;; A label - ((looking-at "<<") - (list (+ (save-excursion (back-to-indentation) (point)) - (- ada-label-indent)))) - ;; ((looking-at "with\\>\\|use\\>") ;; Are we still in that statement, or are we in fact looking at @@ -2960,6 +2980,10 @@ (car (ada-search-ignore-string-comment "\\" t))) 'ada-indent))) + ;; Special case for label: + ((looking-at ada-block-label-re) + (list (- (save-excursion (back-to-indentation) (point)) ada-label-indent) 'ada-indent)) + ;; nothing follows the block-start (t (list (save-excursion (back-to-indentation) (point)) 'ada-indent))))) @@ -3055,10 +3079,10 @@ (list (save-excursion (back-to-indentation) (point)) 'ada-broken-decl-indent)) - ;; This one is called in every over case when indenting a line at the + ;; This one is called in every other case when indenting a line at the ;; top level (t - (if (looking-at ada-named-block-re) + (if (looking-at (concat "[ \t]*" ada-block-label-re)) (setq label (- ada-label-indent)) (let (p) @@ -3087,7 +3111,7 @@ (list (+ (save-excursion (back-to-indentation) (point)) label) 'ada-broken-indent))))))) -(defun ada-get-indent-label (orgpoint) +(defun ada-get-indent-block-label (orgpoint) "Calculate the indentation when before a label or variable declaration. ORGPOINT is the limit position used in the calculation." (let ((match-cons nil) @@ -3119,6 +3143,16 @@ (t (list cur-indent '(- ada-label-indent)))))) +(defun ada-get-indent-goto-label (orgpoint) + "Calculate the indentation when at a goto label." + (search-forward ">>") + (ada-goto-next-non-ws) + (if (>= (point) orgpoint) + ;; labeled statement is the one we need to indent + (list (- (point) ada-label-indent)) + ;; else indentation is indent for labeled statement + (ada-indent-on-previous-lines t orgpoint))) + (defun ada-get-indent-loop (orgpoint) "Calculate the indentation when just before a loop or a for ... use. ORGPOINT is the limit position used in the calculation." @@ -3127,8 +3161,8 @@ ;; If looking at a named block, skip the label (label (save-excursion - (beginning-of-line) - (if (looking-at ada-named-block-re) + (back-to-indentation) + (if (looking-at ada-block-label-re) (- ada-label-indent) 0)))) @@ -3286,7 +3320,7 @@ ;; -- searching and matching ;; ----------------------------------------------------------- -(defun ada-goto-stmt-start () +(defun ada-goto-stmt-start (&optional ignore-goto-label) "Move point to the beginning of the statement that point is in or after. Return the new position of point. As a special case, if we are looking at a closing parenthesis, skip to the @@ -3304,7 +3338,7 @@ (progn (unless (save-excursion (goto-char (cdr match-dat)) - (ada-goto-next-non-ws orgpoint)) + (ada-goto-next-non-ws orgpoint ignore-goto-label)) ;; ;; nothing follows => it's the end-statement directly in ;; front of point => search again @@ -3326,7 +3360,7 @@ (goto-char (point-min)) ;; ;; skip to the very first statement, if there is one - ;; + ;; (unless (ada-goto-next-non-ws orgpoint) (goto-char orgpoint)))) (point))) @@ -3388,18 +3422,25 @@ nil))) -(defun ada-goto-next-non-ws (&optional limit) - "Skip white spaces, newlines and comments to next non-ws character. +(defun ada-goto-next-non-ws (&optional limit skip-goto-label) + "Skip to next non-whitespace character. +Skips spaces, newlines and comments, and possibly goto labels. +Return `point' if moved, nil if not. Stop the search at LIMIT. Do not call this function from within a string." (unless limit (setq limit (point-max))) (while (and (<= (point) limit) - (progn (forward-comment 10000) - (if (and (not (eobp)) - (save-excursion (forward-char 1) - (ada-in-string-p))) - (progn (forward-sexp 1) t))))) + (or (progn (forward-comment 10000) + (if (and (not (eobp)) + (save-excursion (forward-char 1) + (ada-in-string-p))) + (progn (forward-sexp 1) t))) + (and skip-goto-label + (looking-at ada-goto-label-re) + (progn + (goto-char (match-end 0)) + t))))) (if (< (point) limit) (point) nil) @@ -3426,9 +3467,7 @@ (unless backward (skip-syntax-forward "w")) (if (setq match-cons - (if backward - (ada-search-ignore-string-comment "\\w" t nil t) - (ada-search-ignore-string-comment "\\w" nil nil t))) + (ada-search-ignore-string-comment "\\w" backward nil t)) ;; ;; move to the beginning of the word found ;; diff -r ff8134865c63 -r d8549f97592e lisp/startup.el --- a/lisp/startup.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/startup.el Sun Jan 17 21:57:00 2010 +0000 @@ -758,7 +758,8 @@ (pop args))) (let ((done nil) - (args (cdr command-line-args))) + (args (cdr command-line-args)) + display-arg) ;; Figure out which user's init file to load, ;; either from the environment or from the options. @@ -794,6 +795,11 @@ (setq argval nil argi orig-argi))))) (cond + ;; The --display arg is handled partly in C, partly in Lisp. + ;; When it shows up here, we just put it back to be handled + ;; by `command-line-1'. + ((member argi '("-d" "-display")) + (setq display-arg (list argi (pop args)))) ((member argi '("-Q" "-quick")) (setq init-file-user nil site-run-file nil @@ -813,8 +819,6 @@ (setq init-file-debug t)) ((equal argi "-iconic") (push '(visibility . icon) initial-frame-alist)) - ((member argi '("-icon-type" "-i" "-itype")) - (push '(icon-type . t) default-frame-alist)) ((member argi '("-nbc" "-no-blinking-cursor")) (setq no-blinking-cursor t)) ;; Push the popped arg back on the list of arguments. @@ -825,6 +829,9 @@ (and argval (error "Option `%s' doesn't allow an argument" argi)))) + ;; Re-attach the --display arg. + (and display-arg (setq args (append display-arg args))) + ;; Re-attach the program name to the front of the arg list. (and command-line-args (setcdr command-line-args args))) diff -r ff8134865c63 -r d8549f97592e lisp/textmodes/artist.el --- a/lisp/textmodes/artist.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/textmodes/artist.el Sun Jan 17 21:57:00 2010 +0000 @@ -870,7 +870,7 @@ is done. Arguments and return values for this funcion are described below. DRAW-HOW defines the kind of shape. The kinds of shapes are: - `artist-do-continously' -- Do drawing operation continously, + `artist-do-continously' -- Do drawing operation continuously, as long as the mouse button is held down. `artist-do-poly' -- Do drawing operation many times. 1 -- Do drawing operation only once. @@ -1477,7 +1477,7 @@ ; (defun artist-compute-popup-menu-table (menu-table) - "Create a menu from from MENU-TABLE data. + "Create a menu from MENU-TABLE data. The returned value is suitable for the `x-popup-menu' function." (cons "Artist menu" (artist-compute-popup-menu-table-sub menu-table))) @@ -3879,8 +3879,8 @@ ;; (defun artist-key-undraw-continously (x y) - "Undraw current continous shape with point at X, Y." - ;; No undraw-info for continous shapes + "Undraw current continuous shape with point at X, Y." + ;; No undraw-info for continuous shapes nil) (defun artist-key-undraw-poly (x y) @@ -3937,7 +3937,7 @@ ;; user has released the button, so the timer will always be cancelled ;; at that point. (defun artist-key-draw-continously (x y) - "Draw current continous shape at X,Y." + "Draw current continuous shape at X,Y." (let ((draw-fn (artist-go-get-draw-fn-from-symbol artist-curr-go))) (setq artist-key-shape (artist-funcall draw-fn x y)))) @@ -4018,7 +4018,7 @@ ;; (defun artist-key-do-continously-continously (x y) - "Update current continous shape at X,Y." + "Update current continuous shape at X,Y." (let ((draw-fn (artist-go-get-draw-fn-from-symbol artist-curr-go))) (artist-funcall draw-fn x y))) @@ -4045,7 +4045,7 @@ (defun artist-key-do-continously-1point (x y) "Update current 1-point shape at X,Y." - ;; Nothing to do continously for operations + ;; Nothing to do continuously for operations ;; where we have only one input point nil) @@ -4094,8 +4094,8 @@ (defun artist-key-set-point-continously (x y) - "Set point for current continous shape at X,Y." - ;; Maybe set arrow-points for continous shapes + "Set point for current continuous shape at X,Y." + ;; Maybe set arrow-points for continuous shapes (let ((arrow-pred (artist-go-get-arrow-pred-from-symbol artist-curr-go)) (arrow-set-fn (artist-go-get-arrow-set-fn-from-symbol artist-curr-go)) (init-fn (artist-go-get-init-fn-from-symbol artist-curr-go)) @@ -4914,7 +4914,7 @@ (defun artist-mouse-draw-continously (ev) "Generic function for shapes that require 1 point as input. -Operation is done continously while the mouse button is hold down. +Operation is done continuously while the mouse button is hold down. The event, EV, is the mouse event." (let* ((unshifted (artist-go-get-symbol-shift artist-curr-go nil)) (shifted (artist-go-get-symbol-shift artist-curr-go t)) @@ -5395,8 +5395,8 @@ ;; 1. If your new drawing mode falls into one of the following ;; categories, goto point 2, otherwise goto point 3. ;; -;; - Modes where the shapes are drawn continously, as long as -;; the mouse button is held down (continous modes). +;; - Modes where the shapes are drawn continuously, as long as +;; the mouse button is held down (continuous modes). ;; Example: the erase-char mode, the pen and pen-line modes. ;; ;; - Modes where the shape is made up of from 2 points to an @@ -5408,7 +5408,7 @@ ;; Example: lines, rectangles ;; ;; - Modes where the shape is made up of 1 point (1-point -;; modes). This mode differs from the continous modes in +;; modes). This mode differs from the continuous modes in ;; that the shape is drawn only once when the mouse button ;; is pressed. ;; Examples: paste, a flood-fill, vaporize modes @@ -5426,7 +5426,7 @@ ;; For each of the cases below, the arguments given to the init-fn, ;; prep-fill-fn, arrow-set-fn and exit-fn are stated. ;; -;; If your mode matches the continous mode or the 1-point mode: +;; If your mode matches the continuous mode or the 1-point mode: ;; ;; a. Create a draw-function that draws your shape. Your function ;; must take x and y as arguments. The return value is not @@ -5538,8 +5538,8 @@ ;; - artist-key-set-point-xxx for setting a point in the ;; mode, to be called from `artist-key-set-point-common'. ;; -;; - artist-key-do-continously-xxx to be called from -;; `artist-key-do-continously-common' whenever the user +;; - artist-key-do-continuously-xxx to be called from +;; `artist-key-do-continuously-common' whenever the user ;; moves around. ;; ;; As for the artist-mouse-draw-xxx, these two functions must diff -r ff8134865c63 -r d8549f97592e lisp/vc-dir.el --- a/lisp/vc-dir.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/vc-dir.el Sun Jan 17 21:57:00 2010 +0000 @@ -874,7 +874,10 @@ (let ((ddir default-directory)) (when (vc-string-prefix-p ddir file) (if (file-directory-p file) - (vc-dir-resync-directory-files file) + (progn + (vc-dir-resync-directory-files file) + (ewoc-set-hf vc-ewoc + (vc-dir-headers vc-dir-backend default-directory) "")) (let ((state (vc-dir-recompute-file-state file ddir))) (vc-dir-update (list state) diff -r ff8134865c63 -r d8549f97592e lisp/vc-dispatcher.el --- a/lisp/vc-dispatcher.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/vc-dispatcher.el Sun Jan 17 21:57:00 2010 +0000 @@ -320,11 +320,14 @@ (setq squeezed (nconc squeezed files))) (let ((exec-path (append vc-path exec-path)) ;; Add vc-path to PATH for the execution of this command. + ;; Also, since some functions need to parse the output + ;; from external commands, set LC_MESSAGES to C. (process-environment (cons (concat "PATH=" (getenv "PATH") path-separator (mapconcat 'identity vc-path path-separator)) - process-environment)) + (cons "LC_MESSAGES=C" + process-environment))) (w32-quote-process-args t)) (if (eq okstatus 'async) ;; Run asynchronously. diff -r ff8134865c63 -r d8549f97592e lisp/vc-svn.el --- a/lisp/vc-svn.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/vc-svn.el Sun Jan 17 21:57:00 2010 +0000 @@ -487,13 +487,13 @@ ;; subsequent commits. At least that's what the ;; vc-cvs.el code does. "-rHEAD:0")) - (when limit (list "-l" (format "%s" limit)))))) + (when limit (list "--limit" (format "%s" limit)))))) ;; Dump log for the entire directory. (apply 'vc-svn-command buffer 0 nil "log" (append (list (if start-revision (format "-r%s" start-revision) "-rHEAD:0")) - (when limit (list "-l" (format "%s" limit))))))))) + (when limit (list "--limit" (format "%s" limit))))))))) (defun vc-svn-diff (files &optional oldvers newvers buffer) "Get a difference report using SVN between two revisions of fileset FILES." diff -r ff8134865c63 -r d8549f97592e lisp/vc.el --- a/lisp/vc.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/vc.el Sun Jan 17 21:57:00 2010 +0000 @@ -791,13 +791,23 @@ (defmacro with-vc-properties (files form settings) "Execute FORM, then maybe set per-file properties for FILES. +If any of FILES is actually a directory, then do the same for all +buffers for files in that directory. SETTINGS is an association list of property/value pairs. After executing FORM, set those properties from SETTINGS that have not yet been updated to their corresponding values." (declare (debug t)) - `(let ((vc-touched-properties (list t))) + `(let ((vc-touched-properties (list t)) + (flist nil)) + (dolist (file ,files) + (if (file-directory-p file) + (dolist (buffer (buffer-list)) + (let ((fname (buffer-file-name buffer))) + (when (and fname (vc-string-prefix-p file fname)) + (push fname flist)))) + (push file flist))) ,form - (dolist (file ,files) + (dolist (file flist) (dolist (setting ,settings) (let ((property (car setting))) (unless (memq property vc-touched-properties) diff -r ff8134865c63 -r d8549f97592e lisp/wid-edit.el --- a/lisp/wid-edit.el Thu Jan 14 23:01:38 2010 +0000 +++ b/lisp/wid-edit.el Sun Jan 17 21:57:00 2010 +0000 @@ -875,7 +875,8 @@ (define-key map [(control ?m)] 'widget-button-press) map) "Keymap containing useful binding for buffers containing widgets. -Recommended as a parent keymap for modes using widgets.") +Recommended as a parent keymap for modes using widgets. +Note that such modes will need to require wid-edit.") (defvar widget-global-map global-map "Keymap used for events a widget does not handle itself.") diff -r ff8134865c63 -r d8549f97592e src/ChangeLog --- a/src/ChangeLog Thu Jan 14 23:01:38 2010 +0000 +++ b/src/ChangeLog Sun Jan 17 21:57:00 2010 +0000 @@ -1,3 +1,41 @@ +2010-01-16 Stefan Monnier + + * xterm.c (event_handler_gdk): Block input (Bug#5037). + +2010-01-16 Chong Yidong + + * emacs.c (standard_args): Adjust arg priorities to reflect how + they are processed in startup.el. + +2010-01-16 Andreas Schwab + + * Makefile.in (lisp, shortlisp): Update. + +2010-01-16 Stefan Monnier + + * xterm.c (x_term_init): Instead of inhibiting GC while running Lisp + code, link the new kboard into all_kboard before running Lisp code, + and protect the new terminal with GCPRO (Bug#5365). + (x_term_init): Remove unused var `atom'. + (x_delete_display, x_delete_terminal): Remove unused var `i'. + +2010-01-15 Jan Djärv + + * xfns.c (x_get_current_desktop, x_get_desktop_workarea): New functions. + (Fx_create_frame): Call x_get_current_desktop and x_get_desktop_workarea + to find out usable size of the desktop. Don't make frames larger than + this. Bug #3643. + +2010-01-15 Kenichi Handa + + * xdisp.c (CHAR_COMPOSED_P): New arg END_CHARPOS. Callers changed. + +2010-01-15 Chong Yidong + + * nsterm.m (Qnone): Define. + + * nsfns.m (Qnone): Move definition to nsterm.m. + 2010-01-14 Kenichi Handa * coding.c (detect_coding_iso_2022): Fix handling of euc-xx coding diff -r ff8134865c63 -r d8549f97592e src/Makefile.in --- a/src/Makefile.in Thu Jan 14 23:01:38 2010 +0000 +++ b/src/Makefile.in Sun Jan 17 21:57:00 2010 +0000 @@ -736,13 +736,13 @@ ${lispsource}emacs-lisp/map-ynp.elc \ ${lispsource}menu-bar.elc \ ${lispsource}international/mule.elc \ - ${lispsource}international/mule-conf.el \ + ${lispsource}international/mule-conf.elc \ ${lispsource}international/mule-cmds.elc \ ${lispsource}international/characters.elc \ ${lispsource}international/charprop.el \ ${lispsource}case-table.elc \ - ${lispsource}language/chinese.el \ - ${lispsource}language/cyrillic.el \ + ${lispsource}language/chinese.elc \ + ${lispsource}language/cyrillic.elc \ ${lispsource}language/indian.elc \ ${lispsource}language/sinhala.el \ ${lispsource}language/english.el \ @@ -760,7 +760,7 @@ ${lispsource}language/tai-viet.el \ ${lispsource}language/thai.el \ ${lispsource}language/tibetan.elc \ - ${lispsource}language/vietnamese.el \ + ${lispsource}language/vietnamese.elc \ ${lispsource}language/misc-lang.el \ ${lispsource}language/utf-8-lang.el \ ${lispsource}language/georgian.el \ @@ -829,12 +829,12 @@ ../lisp/emacs-lisp/map-ynp.elc \ ../lisp/env.elc \ ../lisp/international/mule.elc \ - ../lisp/international/mule-conf.el \ + ../lisp/international/mule-conf.elc \ ../lisp/international/mule-cmds.elc \ ../lisp/international/characters.elc \ ../lisp/case-table.elc \ - ../lisp/language/chinese.el \ - ../lisp/language/cyrillic.el \ + ../lisp/language/chinese.elc \ + ../lisp/language/cyrillic.elc \ ../lisp/language/indian.elc \ ../lisp/language/sinhala.el \ ../lisp/language/english.el \ @@ -852,7 +852,7 @@ ../lisp/language/tai-viet.el \ ../lisp/language/thai.el \ ../lisp/language/tibetan.elc \ - ../lisp/language/vietnamese.el \ + ../lisp/language/vietnamese.elc \ ../lisp/language/misc-lang.el \ ../lisp/language/utf-8-lang.el \ ../lisp/language/georgian.el \ diff -r ff8134865c63 -r d8549f97592e src/atimer.h --- a/src/atimer.h Thu Jan 14 23:01:38 2010 +0000 +++ b/src/atimer.h Sun Jan 17 21:57:00 2010 +0000 @@ -43,7 +43,7 @@ /* Timer is ripe at now plus an offset. */ ATIMER_RELATIVE, - /* Timer runs continously. */ + /* Timer runs continuously. */ ATIMER_CONTINUOUS }; diff -r ff8134865c63 -r d8549f97592e src/emacs.c --- a/src/emacs.c Thu Jan 14 23:01:38 2010 +0000 +++ b/src/emacs.c Sun Jan 17 21:57:00 2010 +0000 @@ -1869,7 +1869,7 @@ /* -d must come last before the options handled in startup.el. */ { "-d", "--display", 60, 1 }, { "-display", 0, 60, 1 }, - /* Now for the options handled in startup.el. */ + /* Now for the options handled in `command-line' (startup.el). */ { "-Q", "--quick", 55, 0 }, { "-quick", 0, 55, 0 }, { "-q", "--no-init-file", 50, 0 }, @@ -1878,10 +1878,12 @@ { "-u", "--user", 30, 1 }, { "-user", 0, 30, 1 }, { "-debug-init", "--debug-init", 20, 0 }, - { "-nbi", "--no-bitmap-icon", 15, 0 }, { "-iconic", "--iconic", 15, 0 }, { "-D", "--basic-display", 12, 0}, { "-basic-display", 0, 12, 0}, + { "-nbc", "--no-blinking-cursor", 12, 0 }, + /* Now for the options handled in `command-line-1' (startup.el). */ + { "-nbi", "--no-bitmap-icon", 10, 0 }, { "-bg", "--background-color", 10, 1 }, { "-background", 0, 10, 1 }, { "-fg", "--foreground-color", 10, 1 }, @@ -1891,7 +1893,6 @@ { "-ib", "--internal-border", 10, 1 }, { "-ms", "--mouse-color", 10, 1 }, { "-cr", "--cursor-color", 10, 1 }, - { "-nbc", "--no-blinking-cursor", 10, 0 }, { "-fn", "--font", 10, 1 }, { "-font", 0, 10, 1 }, { "-fs", "--fullscreen", 10, 0 }, diff -r ff8134865c63 -r d8549f97592e src/nsfns.m --- a/src/nsfns.m Thu Jan 14 23:01:38 2010 +0000 +++ b/src/nsfns.m Sun Jan 17 21:57:00 2010 +0000 @@ -80,8 +80,8 @@ extern Lisp_Object Qunderline, Qundefined; extern Lisp_Object Qheight, Qminibuffer, Qname, Qonly, Qwidth; extern Lisp_Object Qunsplittable, Qmenu_bar_lines, Qbuffer_predicate, Qtitle; - -Lisp_Object Qnone; +extern Lisp_Object Qnone; + Lisp_Object Qbuffered; Lisp_Object Qfontsize; @@ -2606,8 +2606,6 @@ { int i; - Qnone = intern ("none"); - staticpro (&Qnone); Qfontsize = intern ("fontsize"); staticpro (&Qfontsize); diff -r ff8134865c63 -r d8549f97592e src/nsterm.m --- a/src/nsterm.m Thu Jan 14 23:01:38 2010 +0000 +++ b/src/nsterm.m Sun Jan 17 21:57:00 2010 +0000 @@ -141,8 +141,7 @@ Lisp_Object ns_input_spi_name, ns_input_spi_arg; Lisp_Object Vx_toolkit_scroll_bars; static Lisp_Object Qmodifier_value; -/* TODO: unsure why these defined in term files, anyway we need in keymap.c */ -Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper; +Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper, Qnone; extern Lisp_Object Qcursor_color, Qcursor_type, Qns; /* Specifies which emacs modifier should be generated when NS receives @@ -6151,6 +6150,7 @@ DEFSYM (Qmeta, "meta"); DEFSYM (Qsuper, "super"); DEFSYM (Qcontrol, "control"); + DEFSYM (Qnone, "none"); Fput (Qalt, Qmodifier_value, make_number (alt_modifier)); Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier)); Fput (Qmeta, Qmodifier_value, make_number (meta_modifier)); diff -r ff8134865c63 -r d8549f97592e src/xdisp.c --- a/src/xdisp.c Thu Jan 14 23:01:38 2010 +0000 +++ b/src/xdisp.c Sun Jan 17 21:57:00 2010 +0000 @@ -1,7 +1,8 @@ /* Display generation from window structure and buffer text. Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -5638,11 +5639,11 @@ /* Return 1 iff a character at CHARPOS (and BYTEPOS) is composed (possibly with the following characters). */ -#define CHAR_COMPOSED_P(IT,CHARPOS,BYTEPOS) \ +#define CHAR_COMPOSED_P(IT,CHARPOS,BYTEPOS,END_CHARPOS) \ ((IT)->cmp_it.id >= 0 \ || ((IT)->cmp_it.stop_pos == (CHARPOS) \ && composition_reseat_it (&(IT)->cmp_it, CHARPOS, BYTEPOS, \ - (IT)->end_charpos, (IT)->w, \ + END_CHARPOS, (IT)->w, \ FACE_FROM_ID ((IT)->f, (IT)->face_id), \ (IT)->string))) @@ -6300,7 +6301,7 @@ return 0; } else if (CHAR_COMPOSED_P (it, IT_STRING_CHARPOS (*it), - IT_STRING_BYTEPOS (*it)) + IT_STRING_BYTEPOS (*it), SCHARS (it->string)) && next_element_from_composition (it)) { return 1; @@ -6336,7 +6337,7 @@ CHARPOS (position) = BYTEPOS (position) = -1; } else if (CHAR_COMPOSED_P (it, IT_STRING_CHARPOS (*it), - IT_STRING_BYTEPOS (*it)) + IT_STRING_BYTEPOS (*it), it->string_nchars) && next_element_from_composition (it)) { return 1; @@ -6523,7 +6524,8 @@ && IT_CHARPOS (*it) >= it->redisplay_end_trigger_charpos) run_redisplay_end_trigger_hook (it); - if (CHAR_COMPOSED_P (it, IT_CHARPOS (*it), IT_BYTEPOS (*it)) + if (CHAR_COMPOSED_P (it, IT_CHARPOS (*it), IT_BYTEPOS (*it), + it->end_charpos) && next_element_from_composition (it)) { return 1; diff -r ff8134865c63 -r d8549f97592e src/xfns.c --- a/src/xfns.c Thu Jan 14 23:01:38 2010 +0000 +++ b/src/xfns.c Sun Jan 17 21:57:00 2010 +0000 @@ -3145,6 +3145,91 @@ return Qnil; } +/* Return current desktop index for the display where frame F is. + If we can't find out the current desktop, return 0. */ + +static int +x_get_current_desktop (f) + struct frame *f; +{ + Atom actual_type; + unsigned long actual_size, bytes_remaining; + int rc, actual_format; + struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); + long max_len = 10; + Display *dpy = FRAME_X_DISPLAY (f); + long *data = NULL; + int current_desktop; + + BLOCK_INPUT; + x_catch_errors (dpy); + rc = XGetWindowProperty (dpy, dpyinfo->root_window, + XInternAtom (dpy, "_NET_CURRENT_DESKTOP", False), + 0, max_len, False, XA_CARDINAL, + &actual_type, &actual_format, &actual_size, + &bytes_remaining, (unsigned char **)&data); + + if (rc != Success || actual_type != XA_CARDINAL || x_had_errors_p (dpy) + || actual_size == 0 || actual_format != 32) + current_desktop = 0; + else + current_desktop = (int)*data; + + if (data) XFree (data); + x_uncatch_errors (); + UNBLOCK_INPUT; + return current_desktop; +} + +/* Return current size for DESKTOP_INDEX on the display where frame F is. + If we can't find out the size, return 0, otherwise 1. */ + +static int +x_get_desktop_workarea (f, desktop_index, deskw, deskh) + struct frame *f; + int desktop_index; + int *deskw, *deskh; +{ + Atom actual_type; + unsigned long actual_size, bytes_remaining; + int rc, actual_format; + struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); + long max_len = 1000; /* This handles 250 desktops, who has that many? */ + Display *dpy = FRAME_X_DISPLAY (f); + long *data = NULL; + int retval; + + BLOCK_INPUT; + x_catch_errors (dpy); + rc = XGetWindowProperty (dpy, dpyinfo->root_window, + XInternAtom (dpy, "_NET_WORKAREA", False), + 0, max_len, False, XA_CARDINAL, + &actual_type, &actual_format, &actual_size, + &bytes_remaining, (unsigned char **)&data); + + if (rc != Success || actual_type != XA_CARDINAL || x_had_errors_p (dpy) + || actual_size < 3 || actual_format != 32) + retval = 0; + else + { + int idx; + + if (actual_size == 4 /* Only one info for all desktops. */ + || desktop_index*4 > actual_size) /* destop_index out of range. */ + desktop_index = 0; + + idx = desktop_index*4; + *deskw = data[idx+2] - data[idx]; + *deskh = data[idx+3] - data[idx+1]; + retval = 1; + } + + if (data) XFree (data); + x_uncatch_errors (); + UNBLOCK_INPUT; + return retval; +} + DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame, 1, 1, 0, doc: /* Make a new X window, which is called a "frame" in Emacs terms. @@ -3164,7 +3249,7 @@ Lisp_Object name; int minibuffer_only = 0; long window_prompting = 0; - int width, height; + int width, height, deskw = -1, deskh = -1, current_desktop = -1; int count = SPECPDL_INDEX (); struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; Lisp_Object display; @@ -3440,6 +3525,12 @@ { int ph = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, FRAME_LINES (f)); int dph = DisplayHeight (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f)); + /* Some desktops have fixed menus above and/or panels below. Try to + figure out the usable size we have for emacs. */ + current_desktop = x_get_current_desktop (f); + x_get_desktop_workarea (f, current_desktop, &deskw, &deskh); + if (deskh > 0 && deskh < dph) dph = deskh; + if (ph > dph) { height = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, dph) - @@ -3459,6 +3550,13 @@ { int pw = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, FRAME_COLS (f)); int dpw = DisplayWidth (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f)); + if (deskw == -1) + { + current_desktop = x_get_current_desktop (f); + x_get_desktop_workarea (f, current_desktop, &deskw, &deskh); + } + if (deskw > 0 && deskw < dpw) dpw = deskw; + if (pw > dpw) width = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, dpw); } diff -r ff8134865c63 -r d8549f97592e src/xterm.c --- a/src/xterm.c Thu Jan 14 23:01:38 2010 +0000 +++ b/src/xterm.c Sun Jan 17 21:57:00 2010 +0000 @@ -5797,6 +5797,7 @@ { XEvent *xev = (XEvent *) gxev; + BLOCK_INPUT; if (current_count >= 0) { struct x_display_info *dpyinfo; @@ -5807,23 +5808,27 @@ /* Filter events for the current X input method. GTK calls XFilterEvent but not for key press and release, so we do it here. */ - if (xev->type == KeyPress || xev->type == KeyRelease) - if (dpyinfo && x_filter_event (dpyinfo, xev)) - return GDK_FILTER_REMOVE; + if ((xev->type == KeyPress || xev->type == KeyRelease) + && dpyinfo + && x_filter_event (dpyinfo, xev)) + { + UNBLOCK_INPUT; + return GDK_FILTER_REMOVE; + } #endif if (! dpyinfo) current_finish = X_EVENT_NORMAL; else - { - current_count += - handle_one_xevent (dpyinfo, xev, ¤t_finish, - current_hold_quit); - } + current_count += + handle_one_xevent (dpyinfo, xev, ¤t_finish, + current_hold_quit); } else current_finish = x_dispatch_event (xev, xev->xany.display); + UNBLOCK_INPUT; + if (current_finish == X_EVENT_GOTO_OUT || current_finish == X_EVENT_DROP) return GDK_FILTER_REMOVE; @@ -9821,7 +9826,7 @@ { Pixmap icon_pixmap, icon_mask; -#ifndef USE_X_TOOLKIT +#if !defined USE_X_TOOLKIT && !defined USE_GTK Window window = FRAME_OUTER_WINDOW (f); #endif @@ -10076,7 +10081,6 @@ int argc; char *argv[NUM_ARGV]; char **argv2 = argv; - GdkAtom atom; guint id; #ifndef HAVE_GTK_MULTIDISPLAY if (!EQ (Vinitial_window_system, Qx)) @@ -10215,25 +10219,36 @@ terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); init_kboard (terminal->kboard); terminal->kboard->Vwindow_system = Qx; + + /* Add the keyboard to the list before running Lisp code (via + Qvendor_specific_keysyms below), since these are not traced + via terminals but only through all_kboards. */ + terminal->kboard->next_kboard = all_kboards; + all_kboards = terminal->kboard; + if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound)) { char *vendor = ServerVendor (dpy); - /* Temporarily hide the partially initialized terminal, - but make sure it doesn't get garbage collected. */ - int count = inhibit_garbage_collection (); + + /* Protect terminal from GC before removing it from the + list of terminals. */ + struct gcpro gcpro1; + Lisp_Object gcpro_term; + XSETTERMINAL (gcpro_term, terminal); + GCPRO1 (gcpro_term); + + /* Temporarily hide the partially initialized terminal. */ terminal_list = terminal->next_terminal; UNBLOCK_INPUT; terminal->kboard->Vsystem_key_alist = call1 (Qvendor_specific_keysyms, vendor ? build_string (vendor) : empty_unibyte_string); BLOCK_INPUT; - unbind_to (count, Qnil); terminal->next_terminal = terminal_list; terminal_list = terminal; + UNGCPRO; } - terminal->kboard->next_kboard = all_kboards; - all_kboards = terminal->kboard; /* Don't let the initial kboard remain current longer than necessary. That would cause problems if a file loaded on startup tries to prompt in the mini-buffer. */ @@ -10582,7 +10597,6 @@ x_delete_display (dpyinfo) struct x_display_info *dpyinfo; { - int i; struct terminal *t; /* Close all frames and delete the generic struct terminal for this @@ -10734,7 +10748,6 @@ x_delete_terminal (struct terminal *terminal) { struct x_display_info *dpyinfo = terminal->display_info.x; - int i; /* Protect against recursive calls. delete_frame in delete_terminal calls us back when it deletes our last frame. */