# HG changeset patch # User Stefan Monnier # Date 1273344427 14400 # Node ID 973b5bc5fcfe04aea5efc5799088987dbb4b9661 # Parent f043f612f6dad16454f797612cdc4eacc215847c# Parent 22f58204116dfe15e798b756183820c03aee9731 Merge from emacs-23 diff -r f043f612f6da -r 973b5bc5fcfe ChangeLog --- a/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,9 +1,21 @@ +2010-05-08 Štěpán Němec (tiny change) + + * INSTALL: Fix typos. + +2010-05-08 Chong Yidong + + * configure.in: Add check for buggy version of GCC (Bug#6031). + 2010-05-08 Glenn Morris * configure.in (HAVE_LIBNCURSES): New local variable. (TERMINFO, LIBS_TERMCAP, TERMCAP_OBJ): New output variables, replacing cpp in src/s/*.h and src/Makefile.in. +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-07 Stefan Monnier * configure.in: Add tests for `isnan' and `copysign'. diff -r f043f612f6da -r 973b5bc5fcfe INSTALL --- a/INSTALL Sat May 08 11:42:56 2010 -0700 +++ b/INSTALL Sat May 08 14:47:07 2010 -0400 @@ -408,7 +408,7 @@ switch to the compiler, and link against libfoo.a and libbar.a libraries in addition to the standard ones. -For some libraries, like Gtk+, fontconfig and ALSA, `configure' use +For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses pkg-config to find where those libraries are installed. If you want pkg-config to look in special directories, you have to set the environment variable PKG_CONFIG_PATH to point to the directories @@ -466,7 +466,7 @@ documentation strings to be in the etc/DOC file (see src/Makefile.in if you wish to figure out how to do that). For all else, use site-init.el. Do not load byte-compiled code which -was build with a non-nil value of `byte-compile-dynamic'. +was built with a non-nil value of `byte-compile-dynamic'. If you set load-path to a different value in site-init.el or site-load.el, Emacs will use *precisely* that value when it starts up @@ -491,7 +491,7 @@ copying it, if you wish; then it automatically uses the sibling directories ../lisp, ../lib-src, ../info. -Or you can "install" the executable and the other Emacs into their +Or you can "install" the executable and the other files into their installed locations, with `make install'. By default, Emacs's files are installed in the following directories: diff -r f043f612f6da -r 973b5bc5fcfe admin/ChangeLog --- a/admin/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/admin/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-04-01 Eli Zaretskii * CPP-DEFINES (__DJGPP__, __GO32__): Remove, no longer used. diff -r f043f612f6da -r 973b5bc5fcfe configure --- a/configure Sat May 08 11:42:56 2010 -0700 +++ b/configure Sat May 08 14:47:07 2010 -0400 @@ -26209,6 +26209,16 @@ CFLAGS="$REAL_CFLAGS" CPPFLAGS="$REAL_CPPFLAGS" +## Hack to detect a buggy GCC version. +if test "x$GCC" = xyes \ + && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \ + && test x"`echo $CFLAGS | grep '\-O[23]'`" != x \ + && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then + { { $as_echo "$as_me:$LINENO: error: GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'." >&5 +$as_echo "$as_me: error: GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'." >&2;} + { (exit 1); exit 1; }; } +fi + #### Find out which version of Emacs this is. version=`grep 'defconst[ ]*emacs-version' ${srcdir}/lisp/version.el \ | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'` diff -r f043f612f6da -r 973b5bc5fcfe configure.in --- a/configure.in Sat May 08 11:42:56 2010 -0700 +++ b/configure.in Sat May 08 14:47:07 2010 -0400 @@ -2923,6 +2923,14 @@ CFLAGS="$REAL_CFLAGS" CPPFLAGS="$REAL_CPPFLAGS" +## Hack to detect a buggy GCC version. +if test "x$GCC" = xyes \ + && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \ + && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \ + && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then + AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.]) +fi + #### Find out which version of Emacs this is. [version=`grep 'defconst[ ]*emacs-version' ${srcdir}/lisp/version.el \ | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`] diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/ChangeLog --- a/doc/emacs/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,28 @@ +2010-05-08 Chong Yidong + + * building.texi (GDB Graphical Interface): Remove misleading comparison + to an IDE (Bug#6128). + +2010-05-08 Štěpán Němec (tiny change) + + * programs.texi (Man Page): + * misc.texi (Invoking emacsclient): + * mini.texi (Repetition): + * mark.texi (Setting Mark): Fix typos. + +2010-05-08 Chong Yidong + + * misc.texi (Printing): Document htmlfontify-buffer. + +2010-05-08 Glenn Morris + + * calendar.texi (Displaying the Diary, Format of Diary File): + Fix external cross-references for TeX format output. + +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-02 Jan Djärv * cmdargs.texi (Initial Options): Mention --chdir. diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/building.texi --- a/doc/emacs/building.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/building.texi Sat May 08 14:47:07 2010 -0400 @@ -836,12 +836,11 @@ @subsection GDB Graphical Interface The command @code{gdb} starts GDB in a graphical interface, using -Emacs windows for display program state information. In effect, this -makes Emacs into an IDE (interactive development environment). With -it, you do not need to use textual GDB commands; you can control the -debugging session with the mouse. For example, you can click in the -fringe of a source buffer to set a breakpoint there, or on a stack -frame in the stack buffer to select that frame. +Emacs windows for display program state information. With it, you do +not need to use textual GDB commands; you can control the debugging +session with the mouse. For example, you can click in the fringe of a +source buffer to set a breakpoint there, or on a stack frame in the +stack buffer to select that frame. This mode requires telling GDB that its ``screen size'' is unlimited, so it sets the height and width accordingly. For correct diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/calendar.texi --- a/doc/emacs/calendar.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/calendar.texi Sat May 08 14:47:07 2010 -0400 @@ -1082,7 +1082,7 @@ shown either in the buffer or in the mode line, depending on the display method you choose @iftex -(@pxref{Diary Display,, emacs-xtra}). +(@pxref{Diary Display,,, emacs-xtra, Specialized Emacs Features}). @end iftex @ifnottex (@pxref{Diary Display}). @@ -1186,7 +1186,7 @@ This entry will have a different appearance if you use the simple diary display @iftex -(@pxref{Diary Display,, emacs-xtra}). +(@pxref{Diary Display,,, emacs-xtra, Specialized Emacs Features}). @end iftex @ifnottex (@pxref{Diary Display}). diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/mark.texi --- a/doc/emacs/mark.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/mark.texi Sat May 08 14:47:07 2010 -0400 @@ -80,7 +80,7 @@ character in @acronym{ASCII}; usually, typing @kbd{C-@key{SPC}} on a text terminal gives the character @kbd{C-@@}. This key is also bound to @code{set-mark-command}, so unless you are unlucky enough to have -an text terminal that behaves differently, you might as well think of +a text terminal that behaves differently, you might as well think of @kbd{C-@@} as @kbd{C-@key{SPC}}.}. This sets the mark where point is, and activates it. You can then move point away, leaving the mark behind. diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/mini.texi --- a/doc/emacs/mini.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/mini.texi Sat May 08 14:47:07 2010 -0400 @@ -601,7 +601,7 @@ unchanged. You can also change the command by editing the Lisp expression before you execute it. The repeated command is added to the front of the command history unless it is identical to the most -recently item. +recent item. Once inside the minibuffer for @kbd{C-x @key{ESC} @key{ESC}}, you can use the minibuffer history commands (@kbd{M-p}, @kbd{M-n}, @kbd{M-r}, diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/misc.texi --- a/doc/emacs/misc.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/misc.texi Sat May 08 14:47:07 2010 -0400 @@ -1528,7 +1528,7 @@ @kbd{C-x #} (@code{server-edit}) in its buffer. This saves the file and sends a message back to the @command{emacsclient} program, telling it to exit. Programs that use @env{EDITOR} usually wait for the -``editor''---in the case @command{emacsclient}---to exit before doing +``editor''---in this case @command{emacsclient}---to exit before doing something else. You can also call @command{emacsclient} with multiple file name @@ -1701,8 +1701,14 @@ Emacs provides commands for printing hard copies of either an entire buffer or just part of one, with or without page headers. You can invoke the printing commands directly, as detailed in the following -section, or using the @samp{File} menu on the menu bar. See also the -hardcopy commands of Dired (@pxref{Misc File Ops}) and the diary +section, or using the @samp{File} menu on the menu bar. + +@findex htmlfontify-buffer + Aside from the commands described in this section, you can also +``print'' an Emacs buffer to HTML with @kbd{M-x htmlfontify-buffer}. +This command converts the current buffer to a HTML file, replacing +Emacs faces with CSS-based markup. In addition, see the hardcopy +commands of Dired (@pxref{Misc File Ops}) and the diary (@pxref{Displaying the Diary}). @table @kbd diff -r f043f612f6da -r 973b5bc5fcfe doc/emacs/programs.texi --- a/doc/emacs/programs.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/emacs/programs.texi Sat May 08 14:47:07 2010 -0400 @@ -1202,7 +1202,7 @@ your machine; the list of available manual pages is computed automatically the first time you invoke @code{woman}. The word at point in the current buffer is used to suggest the default for the -name the manual page. +name of the manual page. With a numeric argument, @kbd{M-x woman} recomputes the list of the manual pages used for completion. This is useful if you add or delete diff -r f043f612f6da -r 973b5bc5fcfe doc/lispintro/ChangeLog --- a/doc/lispintro/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispintro/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-03-10 Chong Yidong * Branch for 23.2. @@ -13,8 +17,7 @@ 2009-12-09 David Robinow (tiny change) - * makefile.w32-in: Use parenthesis for macros for nmake - compatibility. + * makefile.w32-in: Use parenthesis for macros for nmake compatibility. 2009-12-03 Glenn Morris @@ -72,7 +75,7 @@ 2009-02-22 Karl Berry - * emacs-lisp-intro.texi (Default Configuration): fix dup word "by by". + * emacs-lisp-intro.texi (Default Configuration): Fix dup word "by by". 2009-02-20 Juanma Barranquero diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/ChangeLog --- a/doc/lispref/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,8 +1,37 @@ +2010-05-08 Štěpán Němec (tiny change) + + * windows.texi (Textual Scrolling): + * tips.texi (Coding Conventions): + * minibuf.texi (Minibuffer History): + * maps.texi (Standard Keymaps): + * loading.texi (Where Defined): + * edebug.texi (Instrumenting): Fix typos. + +2010-05-08 Chong Yidong + + * keymaps.texi (Menu Bar): Document :advertised-binding property. + + * functions.texi (Obsolete Functions): + Document set-advertised-calling-convention. + + * minibuf.texi (Basic Completion): Document completion-in-region. + (Programmed Completion): Document completion-annotate-function. + + * commands.texi (Reading One Event): Document read-key. + (Distinguish Interactive): Document KIND arg to + called-interactively-p. Delete obsolete interactive-p. + + * elisp.texi (Top): Update node description. + 2010-05-08 Eli Zaretskii - * nonascii.texi (Character Properties): Document - unicode-category-table. Add an index entry for Unicode general - category. + * nonascii.texi (Character Properties): + Document unicode-category-table. Add an index entry for Unicode + general category. + +2010-05-07 Chong Yidong + + * Version 23.2 released. 2010-04-20 Juanma Barranquero diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/commands.texi --- a/doc/lispref/commands.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/commands.texi Sat May 08 14:47:07 2010 -0400 @@ -696,71 +696,67 @@ because it allows callers to say ``treat this call as interactive.'' But you can also do the job by testing @code{called-interactively-p}. -@defun called-interactively-p +@defun called-interactively-p kind This function returns @code{t} when the calling function was called using @code{call-interactively}. -If the containing function was called by Lisp evaluation (or with -@code{apply} or @code{funcall}), then it was not called interactively. +The argument @var{kind} should be either the symbol @code{interactive} +or the symbol @code{any}. If it is @code{interactive}, then +@code{called-interactively-p} returns @code{t} only if the call was +made directly by the user---e.g., if the user typed a key sequence +bound to the calling function, but @emph{not} if the user ran a +keyboard macro that called the function (@pxref{Keyboard Macros}). If +@var{kind} is @code{any}, @code{called-interactively-p} returns +@code{t} for any kind of interactive call, including keyboard macros. + +If in doubt, use @code{any}; the only known proper use of +@code{interactive} is if you need to decide whether to display a +helpful message while a function is running. + +A function is never considered to be called interactively if it was +called via Lisp evaluation (or with @code{apply} or @code{funcall}). @end defun - Here's an example of using @code{called-interactively-p}: +@noindent +Here is an example of using @code{called-interactively-p}: @example @group (defun foo () (interactive) - (when (called-interactively-p) - (message "foo")) - 'haha) - @result{} foo + (when (called-interactively-p 'any) + (message "Interactive!") + 'foo-called-interactively)) @end group @group ;; @r{Type @kbd{M-x foo}.} - @print{} foo + @print{} Interactive! @end group @group (foo) - @result{} haha + @result{} nil @end group @end example - Here is another example that contrasts direct and indirect -calls to @code{called-interactively-p}. +@noindent +Here is another example that contrasts direct and indirect calls to +@code{called-interactively-p}. @example @group (defun bar () (interactive) - (setq foobar (list (foo) (called-interactively-p)))) - @result{} bar + (message "%s" (list (foo) (called-interactively-p 'any)))) @end group @group ;; @r{Type @kbd{M-x bar}.} -;; @r{This does not display a message.} -@end group - -@group -foobar - @result{} (nil t) + @print{} (nil t) @end group @end example - If you want to treat commands run in keyboard macros just like calls -from Lisp programs, test @code{interactive-p} instead of -@code{called-interactively-p}. - -@defun interactive-p -This function returns @code{t} if the containing function (the one -whose code includes the call to @code{interactive-p}) was called in -direct response to user input. This means that it was called with the -function @code{call-interactively}, and that a keyboard macro is -not running, and that Emacs is not running in batch mode. -@end defun - @node Command Loop Info @comment node-name, next, previous, up @section Information from the Command Loop @@ -2309,10 +2305,8 @@ @cindex reading a single event @cindex event, reading only one - The lowest level functions for command input are those that read a -single event. - -None of the three functions below suppresses quitting. + The lowest level functions for command input are @code{read-event}, +@code{read-char}, and @code{read-char-exclusive}. @defun read-event &optional prompt inherit-input-method seconds This function reads and returns the next event of command input, waiting @@ -2409,11 +2403,31 @@ gets a character. The arguments work as in @code{read-event}. @end defun + None of the above functions suppress quitting. + @defvar num-nonmacro-input-events This variable holds the total number of input events received so far from the terminal---not counting those generated by keyboard macros. @end defvar + We emphasize that, unlike @code{read-key-sequence}, the functions +@code{read-event}, @code{read-char}, and @code{read-char-exclusive} do +not perform the translations described in @ref{Translation Keymaps}. +If you wish to read a single key taking these translations into +account, use the function @code{read-key}: + +@defun read-key &optional prompt +This function reads a single key. It is ``intermediate'' between +@code{read-key-sequence} and @code{read-event}. Unlike the former, it +reads a single key, not a key sequence. Unlike the latter, it does +not return a raw event, but decodes and translates the user input +according to @code{input-decode-map}, @code{local-function-key-map}, +and @code{key-translation-map} (@pxref{Translation Keymaps}). + +The argument @var{prompt} is either a string to be displayed in the +echo area as a prompt, or @code{nil}, meaning not to display a prompt. +@end defun + @node Event Mod @subsection Modifying and Translating Input Events diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/edebug.texi --- a/doc/lispref/edebug.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/edebug.texi Sat May 08 14:47:07 2010 -0400 @@ -186,7 +186,7 @@ While Edebug is active, the command @kbd{I} (@code{edebug-instrument-callee}) instruments the definition of the -function or macro called by the list form after point, if is not already +function or macro called by the list form after point, if it is not already instrumented. This is possible only if Edebug knows where to find the source for that function; for this reason, after loading Edebug, @code{eval-region} records the position of every definition it diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/elisp.texi --- a/doc/lispref/elisp.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/elisp.texi Sat May 08 14:47:07 2010 -0400 @@ -649,7 +649,6 @@ Completion * Basic Completion:: Low-level functions for completing strings. - (These are too low level to use the minibuffer.) * Minibuffer Completion:: Invoking the minibuffer with completion. * Completion Commands:: Minibuffer commands that do completion. * High-Level Completion:: Convenient special cases of completion diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/functions.texi --- a/doc/lispref/functions.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/functions.texi Sat May 08 14:47:07 2010 -0400 @@ -1197,7 +1197,7 @@ @end defun You can define a function as an alias and declare it obsolete at the -same time using the macro @code{define-obsolete-function-alias}. +same time using the macro @code{define-obsolete-function-alias}: @defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring This macro marks the function @var{obsolete-name} obsolete and also @@ -1210,6 +1210,33 @@ @end example @end defmac +In addition, you can mark a certain a particular calling convention +for a function as obsolete: + +@defun set-advertised-calling-convention function signature +This function specifies the argument list @var{signature} as the +correct way to call @var{function}. This causes the Emacs byte +compiler to issue a warning whenever it comes across an Emacs Lisp +program that calls @var{function} any other way (however, it will +still allow the code to be byte compiled). + +For instance, in old versions of Emacs the @code{sit-for} function +accepted three arguments, like this + +@smallexample + (sit-for seconds milliseconds nodisp) +@end smallexample + +However, calling @code{sit-for} this way is considered obsolete +(@pxref{Waiting}). The old calling convention is deprecated like +this: + +@smallexample +(set-advertised-calling-convention + 'sit-for '(seconds &optional nodisp)) +@end smallexample +@end defun + @node Inline Functions @section Inline Functions @cindex inline functions diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/keymaps.texi --- a/doc/lispref/keymaps.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/keymaps.texi Sat May 08 14:47:07 2010 -0400 @@ -2470,9 +2470,13 @@ @cindex menu bar Most window systems allow each frame to have a @dfn{menu bar}---a -permanently displayed menu stretching horizontally across the top of the -frame. The items of the menu bar are the subcommands of the fake -``function key'' @code{menu-bar}, as defined in the active keymaps. +permanently displayed menu stretching horizontally across the top of +the frame. (In order for a frame to display a menu bar, its +@code{menu-bar-lines} parameter must be greater than zero. +@xref{Layout Parameters}.) + + The items of the menu bar are the subcommands of the fake ``function +key'' @code{menu-bar}, as defined in the active keymaps. To add an item to the menu bar, invent a fake ``function key'' of your own (let's call it @var{key}), and make a binding for the key sequence @@ -2490,13 +2494,6 @@ from the keymaps that would be active if @code{overriding-local-map} were @code{nil}. @xref{Active Keymaps}. - In order for a frame to display a menu bar, its @code{menu-bar-lines} -parameter must be greater than zero. Emacs uses just one line for the -menu bar itself; if you specify more than one line, the other lines -serve to separate the menu bar from the windows in the frame. We -recommend 1 or 2 as the value of @code{menu-bar-lines}. @xref{Layout -Parameters}. - Here's an example of setting up a menu bar item: @example @@ -2535,8 +2532,8 @@ @end example @noindent -@code{edit} is the fake function key used by the global map for the -@samp{Edit} menu bar item. The main reason to suppress a global +Here, @code{edit} is the fake function key used by the global map for +the @samp{Edit} menu bar item. The main reason to suppress a global menu bar item is to regain space for mode-specific items. @defvar menu-bar-final-items @@ -2557,6 +2554,23 @@ in the usual case. @end defvar +Next to every menu bar item, Emacs displays a key binding that runs +the same command (if such a key binding exists). This serves as a +convenient hint for users who do not know the key binding. If a +command has multiple bindings, Emacs normally displays the first one +it finds. You can specify one particular key binding by assigning an +@code{:advertised-binding} symbol property to the command. For +instance, the following tells Emacs to show @kbd{C-/} for the +@code{undo} menu item: + +@smallexample +(put 'undo :advertised-binding [?\C-/]) +@end smallexample + +@noindent +If the @code{:advertised-binding} property specifies a key binding +that the command does not actually have, it is ignored. + @node Tool Bar @subsection Tool bars @cindex tool bar diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/loading.texi --- a/doc/lispref/loading.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/loading.texi Sat May 08 14:47:07 2010 -0400 @@ -823,7 +823,7 @@ @code{load-history}. @defvar load-history -This value of this variable is an alist that associates the names of +The value of this variable is an alist that associates the names of loaded library files with the names of the functions and variables they defined, as well as the features they provided or required. diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/locals.texi --- a/doc/lispref/locals.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/locals.texi Sat May 08 14:47:07 2010 -0400 @@ -85,6 +85,9 @@ @item case-fold-search @xref{Searching and Case}. +@item comment-column +@xref{Comments,,, emacs, The GNU Emacs Manual}. + @item ctl-arrow @xref{Usual Display}. @@ -94,9 +97,6 @@ @item cursor-type @xref{Cursor Parameters}. -@item comment-column -@xref{Comments,,, emacs, The GNU Emacs Manual}. - @item default-directory @xref{File Name Expansion}. diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/maps.texi --- a/doc/lispref/maps.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/maps.texi Sat May 08 14:47:07 2010 -0400 @@ -163,7 +163,7 @@ @item key-translation-map A keymap for translating keys. This one overrides ordinary key -bindings, unlike @code{local- function-key-map}. @xref{Translation +bindings, unlike @code{local-function-key-map}. @xref{Translation Keymaps}. @item kmacro-map diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/minibuf.texi --- a/doc/lispref/minibuf.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/minibuf.texi Sat May 08 14:47:07 2010 -0400 @@ -511,7 +511,7 @@ @defopt history-length The value of this variable specifies the maximum length for all history lists that don't specify their own maximum lengths. If the -value is @code{t}, that means there no maximum (don't delete old +value is @code{t}, that means there is no maximum (don't delete old elements). The value of @code{history-length} property of the history list variable's symbol, if set, overrides this variable for that particular history list. @@ -626,7 +626,6 @@ @menu * Basic Completion:: Low-level functions for completing strings. - (These are too low level to use the minibuffer.) * Minibuffer Completion:: Invoking the minibuffer with completion. * Completion Commands:: Minibuffer commands that do completion. * High-Level Completion:: Convenient special cases of completion @@ -640,31 +639,23 @@ @node Basic Completion @subsection Basic Completion Functions - The completion functions @code{try-completion}, -@code{all-completions} and @code{test-completion} have nothing in -themselves to do with minibuffers. We describe them in this chapter -so as to keep them near the higher-level completion features that do -use the minibuffer. - - If you store a completion alist in a variable, you should mark the -variable as ``risky'' with a non-@code{nil} -@code{risky-local-variable} property. + The following completion functions have nothing in themselves to do +with minibuffers. We describe them here to keep them near the +higher-level completion features that do use the minibuffer. @defun try-completion string collection &optional predicate This function returns the longest common substring of all possible completions of @var{string} in @var{collection}. The value of @var{collection} must be a list of strings or symbols, an alist, an -obarray, a hash table, or a function that implements a virtual set of -strings (see below). +obarray, a hash table, or a completion function (@pxref{Programmed +Completion}). Completion compares @var{string} against each of the permissible -completions specified by @var{collection}; if the beginning of the -permissible completion equals @var{string}, it matches. If no permissible -completions match, @code{try-completion} returns @code{nil}. If only -one permissible completion matches, and the match is exact, then -@code{try-completion} returns @code{t}. Otherwise, the value is the -longest initial sequence common to all the permissible completions that -match. +completions specified by @var{collection}. If no permissible +completions match, @code{try-completion} returns @code{nil}. If there +is just one matching completion, and the match is exact, it returns +@code{t}. Otherwise, it returns the longest initial sequence common +to all possible matching completions. If @var{collection} is an alist (@pxref{Association Lists}), the permissible completions are the elements of the alist that are either @@ -688,13 +679,13 @@ If @var{collection} is a hash table, then the keys that are strings are the possible completions. Other keys are ignored. -You can also use a symbol that is a function as @var{collection}. Then -the function is solely responsible for performing completion; +You can also use a symbol that is a function as @var{collection}. +Then the function is solely responsible for performing completion; @code{try-completion} returns whatever this function returns. The function is called with three arguments: @var{string}, @var{predicate} -and @code{nil}. (The reason for the third argument is so that the same +and @code{nil} (the reason for the third argument is so that the same function can be used in @code{all-completions} and do the appropriate -thing in either case.) @xref{Programmed Completion}. +thing in either case). @xref{Programmed Completion}. If the argument @var{predicate} is non-@code{nil}, then it must be a function of one argument, unless @var{collection} is a hash table, in @@ -823,6 +814,10 @@ it returns, @code{test-completion} returns in turn. @end defun +If you store a completion alist in a variable, you should mark the +variable as ``risky'' with a non-@code{nil} +@code{risky-local-variable} property. @xref{File Local Variables}. + @defvar completion-ignore-case If the value of this variable is non-@code{nil}, Emacs does not consider case significant in completion. Note, however, that this @@ -855,6 +850,23 @@ @end smallexample @end defmac +The function @code{completion-in-region} provides a convenient way to +perform completion on an arbitrary stretch of text in an Emacs buffer: + +@defun completion-in-region start end collection &optional predicate +This function completes the text in the current buffer between the +positions @var{start} and @var{end}, using @var{collection}. The +argument @var{collection} has the same meaning as in +@code{try-completion} (@pxref{Basic Completion}). + +This function inserts the completion text directly into the current +buffer. Unlike @code{completing-read} (@pxref{Minibuffer +Completion}), it does not activate the minibuffer. + +For this function to work, point must be somewhere between @var{start} +and @var{end}. +@end defun + @node Minibuffer Completion @subsection Completion and the Minibuffer @cindex minibuffer completion @@ -869,12 +881,12 @@ @var{prompt}, which must be a string. The actual completion is done by passing @var{collection} and -@var{predicate} to the function @code{try-completion}. This happens -in certain commands bound in the local keymaps used for completion. -Some of these commands also call @code{test-completion}. Thus, if -@var{predicate} is non-@code{nil}, it should be compatible with -@var{collection} and @code{completion-ignore-case}. @xref{Definition -of test-completion}. +@var{predicate} to the function @code{try-completion} (@pxref{Basic +Completion}). This happens in certain commands bound in the local +keymaps used for completion. Some of these commands also call +@code{test-completion}. Thus, if @var{predicate} is non-@code{nil}, +it should be compatible with @var{collection} and +@code{completion-ignore-case}. @xref{Definition of test-completion}. The value of the optional argument @var{require-match} determines how the user may exit the minibuffer: @@ -1603,8 +1615,10 @@ Sometimes it is not possible to create an alist or an obarray containing all the intended possible completions. In such a case, you -can supply your own function to compute the completion of a given string. -This is called @dfn{programmed completion}. +can supply your own function to compute the completion of a given +string. This is called @dfn{programmed completion}. Emacs uses +programmed completion when completing file names (@pxref{File Name +Completion}). To use this feature, pass a symbol with a function definition as the @var{collection} argument to @code{completing-read}. The function @@ -1659,9 +1673,6 @@ function. So you must arrange for any function you wish to use for completion to be encapsulated in a symbol. - Emacs uses programmed completion when completing file names. -@xref{File Name Completion}. - @defun completion-table-dynamic function This function is a convenient way to write a function that can act as programmed completion function. The argument @var{function} should be @@ -1671,6 +1682,19 @@ and the interface for programmed completion functions. @end defun +@defvar completion-annotate-function +The value of this variable, if non-@code{nil}, should be a function +for ``annotating'' the entries in the @samp{*Completions*} buffer. +The function should accept a single argument, the completion string +for an entry. It should return an additional string to display next +to that entry in the @samp{*Completions*} buffer, or @code{nil} if no +additional string is to be displayed. + +The function can determine the collection used for the current +completion via the variable @code{minibuffer-completion-table} +(@pxref{Completion Commands}). +@end defvar + @node Yes-or-No Queries @section Yes-or-No Queries @cindex asking the user questions diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/tips.texi --- a/doc/lispref/tips.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/tips.texi Sat May 08 14:47:07 2010 -0400 @@ -90,7 +90,7 @@ If a file requires certain other Lisp programs to be loaded beforehand, then the comments at the beginning of the file should say so. Also, use @code{require} to make sure they are loaded. -x@xref{Named Features}. +@xref{Named Features}. @item If a file @var{foo} uses a macro defined in another file @var{bar}, diff -r f043f612f6da -r 973b5bc5fcfe doc/lispref/windows.texi --- a/doc/lispref/windows.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/lispref/windows.texi Sat May 08 14:47:07 2010 -0400 @@ -1661,8 +1661,8 @@ @end defopt @defopt scroll-step -This variable is an older variant of @code{scroll-conservatively}. The -difference is that it if its value is @var{n}, that permits scrolling +This variable is an older variant of @code{scroll-conservatively}. +The difference is that if its value is @var{n}, that permits scrolling only by precisely @var{n} lines, not a smaller number. This feature does not work with @code{scroll-margin}. The default value is zero. @end defopt diff -r f043f612f6da -r 973b5bc5fcfe doc/man/ChangeLog --- a/doc/man/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/doc/man/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,11 +1,15 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-03-10 Chong Yidong * Branch for 23.2. 2010-01-09 Chong Yidong - * emacs.1: Copyedits. Update options -Q, -mm and --daemon. Remove - deprecated --unibyte option. + * emacs.1: Copyedits. Update options -Q, -mm and --daemon. + Remove deprecated --unibyte option. 2009-06-21 Chong Yidong diff -r f043f612f6da -r 973b5bc5fcfe doc/misc/ChangeLog --- a/doc/misc/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/doc/misc/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,11 +1,28 @@ +2010-05-08 Štěpán Němec (tiny change) + + * url.texi (HTTP language/coding, Customization): + * message.texi (Header Commands, Responses): + * cl.texi (Argument Lists): Fix typos. + +2010-05-08 Chong Yidong + + * ede.texi (EDE Mode): Refer to init file rather than `.emacs'. + Note that Development menu is always available. + (Creating a project): Fix terminology. + (Add/Remove files): Fix typo. + +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-01 Daniel E. Doherty (tiny change) * calc.texi (Tutorial): Use "^{\prime}" to indicate primes. 2010-05-01 Michael Albinus - * tramp.texi (Inline methods, Default Method): Mention - `tramp-inline-compress-start-size'. + * tramp.texi (Inline methods, Default Method): + Mention `tramp-inline-compress-start-size'. 2010-04-18 Teodor Zlatanov diff -r f043f612f6da -r 973b5bc5fcfe doc/misc/cl.texi --- a/doc/misc/cl.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/misc/cl.texi Sat May 08 14:47:07 2010 -0400 @@ -356,7 +356,7 @@ calls to it may be expanded into in-line code by the byte compiler. This is analogous to the @code{defsubst} form; @code{defsubst*} uses a different method (compiler macros) which -works in all version of Emacs, and also generates somewhat more +works in all versions of Emacs, and also generates somewhat more efficient inline expansions. In particular, @code{defsubst*} arranges for the processing of keyword arguments, default values, etc., to be done at compile-time whenever possible. diff -r f043f612f6da -r 973b5bc5fcfe doc/misc/ede.texi --- a/doc/misc/ede.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/misc/ede.texi Sat May 08 14:47:07 2010 -0400 @@ -129,27 +129,26 @@ @node EDE Mode, Creating a project, EDE Project Concepts, top @chapter @ede{} Mode -@ede{} is implemented as a minor-mode, which augments other modes such +@ede{} is implemented as a minor mode, which augments other modes such as C mode, and Texinfo mode. You can enable @ede{} for all buffers by running the command @code{global-ede-mode}, or by putting this in your -@file{~/.emacs} file: +init file: @example (global-ede-mode t) @end example -When @ede{} is active for a given buffer, the menu item -``Development'' appears. This menu provides several menu items for -high-level @ede{} commands. These menu items, and their corresponding -keybindings, are independent of the type of project you are actually -working on. +Activating @ede{} adds a menu named @samp{Development} to the menu +bar. This menu provides several menu items for high-level @ede{} +commands. These menu items, and their corresponding keybindings, are +independent of the type of project you are actually working on. @node Creating a project, Modifying your project, EDE Mode, top @chapter Creating a project To create a new project, first visit a file that you want to include -in that project. If you have a hierarchy of directories, choose a -file in the topmost directory first. From this buffer, type @kbd{M-x +in that project. If you have a hierarchy of directories, first visit +a file in the topmost directory. From this buffer, type @kbd{M-x ede-new}, or click on the @samp{Create Project} item in the @samp{Development} menu. @@ -220,8 +219,8 @@ @node Add/Remove target, Add/Remove files, Modifying your project, Modifying your project @section Add/Remove target -To create a new target, type @kbd{C-c . t} (@code{M-x ede-new-target}) -or use the @samp{Add Target} menu item in the @samp{Project Options} +To create a new target, type @kbd{C-c . t} (@code{ede-new-target}) or +use the @samp{Add Target} menu item in the @samp{Project Options} submenu. This prompts for a target name, and adds the current buffer to that target. @@ -237,7 +236,7 @@ @section Add/Remove files To add the current file to an existing target, type @kbd{C-c . a} -(@code{ede-add-file}), or or use the @samp{Add File} menu item in the +(@code{ede-add-file}), or use the @samp{Add File} menu item in the @samp{Target Options} submenu. You can add a file to more than one target; this is OK. diff -r f043f612f6da -r 973b5bc5fcfe doc/misc/message.texi --- a/doc/misc/message.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/misc/message.texi Sat May 08 14:47:07 2010 -0400 @@ -659,7 +659,7 @@ @findex message-insert-disposition-notification-to Insert a request for a disposition notification. (@code{message-insert-disposition-notification-to}). -This means that if the recipient support RFC 2298 she might send you a +This means that if the recipient supports RFC 2298 she might send you a notification that she received the message. @item M-x message-insert-importance-high @@ -2387,7 +2387,7 @@ @item wide reply A @dfn{wide reply} is a mail response that includes @emph{all} entities -mentioned in the message you are responded to. All mailboxes from the +mentioned in the message you are responding to. All mailboxes from the following headers will be concatenated to form the outgoing @code{To}/@code{Cc} headers: diff -r f043f612f6da -r 973b5bc5fcfe doc/misc/url.texi --- a/doc/misc/url.texi Sat May 08 11:42:56 2010 -0700 +++ b/doc/misc/url.texi Sat May 08 14:47:07 2010 -0400 @@ -313,7 +313,7 @@ variables, the value is a string; it can specify a single choice, or it can be a comma-separated list. -Normally this list ordered by descending preference. However, each +Normally, this list is ordered by descending preference. However, each element can be followed by @samp{;q=@var{priority}} to specify its preference level, a decimal number from 0 to 1; e.g., for @code{url-mime-language-string}, @w{@code{"de, en-gb;q=0.8, @@ -1120,11 +1120,11 @@ @defopt url-debug @cindex debugging -Specifies the types of debug messages the library which are logged to +Specifies the types of debug messages which are logged to the @code{*URL-DEBUG*} buffer. @code{t} means log all messages. A number means log all messages and show them with @code{message}. -If may also be a list of the types of messages to be logged. +It may also be a list of the types of messages to be logged. @end defopt @defopt url-personal-mail-address @end defopt diff -r f043f612f6da -r 973b5bc5fcfe etc/AUTHORS --- a/etc/AUTHORS Sat May 08 11:42:56 2010 -0700 +++ b/etc/AUTHORS Sat May 08 14:47:07 2010 -0400 @@ -92,7 +92,7 @@ Alexander Becher: changed vc-annotate.el -Alexander Klimov: changed man.el +Alexander Klimov: changed calc-graph.el man.el Alexander Kreuzer: changed nnrss.el @@ -167,9 +167,9 @@ Andreas Politz: changed editfns.c elp.el ido.el term.el Andreas Schwab: changed Makefile.in configure.in lisp.h xdisp.c files.el - coding.c alloc.c process.c print.c editfns.c fileio.c fns.c dired.el + coding.c alloc.c process.c fileio.c print.c editfns.c fns.c dired.el xterm.c keyboard.c simple.el eval.c info.el buffer.c sysdep.c emacs.c - and 483 other files + and 485 other files Andreas Seltenreich: changed nnweb.el gnus.texi message.el gnus.el nnslashdot.el gnus-util.el mm-url.el mm-uu.el url-http.el xterm.c @@ -435,8 +435,8 @@ and co-wrote longlines.el and changed xdisp.c simple.el files.el display.texi frames.texi files.texi emacs.texi keyboard.c cus-edit.el faces.el xterm.c - Makefile.in xfaces.c font.c startup.el xfns.c misc.texi image.c - compile.el custom.texi text.texi and 633 other files + Makefile.in misc.texi xfaces.c font.c startup.el xfns.c compile.el + image.c custom.texi configure.in and 635 other files Chris Chase: co-wrote idlw-shell.el idlwave.el @@ -868,7 +868,7 @@ and changed msdos.c makefile.w32-in Makefile.in files.el info.el rmail.el fileio.c mainmake.v2 pc-win.el startup.el config.bat simple.el msdos.h dired.c w32.c frame.c internal.el menu-bar.el process.c INSTALL - xfaces.c and 602 other files + xfaces.c and 603 other files Elias Oltmanns: changed tls.el gnus-agent.el gnus-int.el gnus-srvr.el gnus.el @@ -1002,7 +1002,7 @@ Florian Weimer: changed message.el gnus.el coding.c gnus-sum.el gnus.texi mm-decode.el mm-util.el -Francesc Rocher: changed startup.el MORE.STUFF cus-start.el gnus.el +Francesc Rocher: changed MORE.STUFF startup.el cus-start.el gnus.el gnus.png gnus.svg macterm.c splash.png splash.svg splash8.xpm w32term.c xdisp.c xterm.c @@ -1131,9 +1131,9 @@ Glenn Morris: wrote check-declare.el and changed Makefile.in calendar.el diary-lib.el rmail.el f90.el cal-menu.el cal-hebrew.el fortran.el holidays.el configure.in - cal-islam.el bytecomp.el calendar.texi cal-bahai.el files.el appt.el - cal-china.el emacs.texi rmailsum.el simple.el startup.el - and 975 other files + cal-islam.el bytecomp.el calendar.texi cal-bahai.el emacs.texi files.el + appt.el cal-china.el rmailsum.el simple.el startup.el + and 976 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -1346,7 +1346,7 @@ and changed gtkutil.c xterm.c xfns.c configure.in xterm.h xmenu.c x-win.el Makefile.in gtkutil.h keyboard.c frame.c frames.texi config.in emacs.c xselect.c xresources.texi startup.el alloc.c cus-start.el - xlwmenu.c process.c and 203 other files + xlwmenu.c frame.h and 203 other files Jan Moringen: co-wrote cpp.el @@ -1635,7 +1635,7 @@ Juanma Barranquero: changed makefile.w32-in subr.el files.el faces.el bs.el help-fns.el w32fns.c org.el server.el simple.el emacsclient.c desktop.el buffer.c mule-cmds.el ido.el window.c xdisp.c allout.el - keyboard.c replace.el eval.c and 930 other files + keyboard.c replace.el eval.c and 932 other files Juergen Hoetzel: changed url-handlers.el @@ -1657,7 +1657,7 @@ and changed info.el isearch.el simple.el replace.el dired-aux.el startup.el grep.el compile.el dired.el files.el faces.el display.texi menu-bar.el descr-text.el cus-edit.el bindings.el man.el image-mode.el - ispell.el text.texi dired-x.el and 280 other files + ispell.el text.texi dired-x.el and 281 other files Justin Bogner: changed fortune.el @@ -1770,7 +1770,7 @@ and co-wrote ps-def.el ps-mule.el ps-print.el ps-samp.el quail.el and changed coding.c mule-cmds.el mule.el fontset.c charset.c fontset.el xdisp.c xterm.c font.c fileio.c Makefile.in mule-conf.el characters.el - fns.c mule-diag.el ccl.c charset.h ftfont.c xfaces.c coding.h + fns.c mule-diag.el ftfont.c ccl.c charset.h xfaces.c coding.h japanese.el and 377 other files Kenichi Okada: co-wrote sasl-cram.el sasl-digest.el @@ -1969,7 +1969,7 @@ Magnus Henoch: changed url-http.el ispell.el url.el dbusbind.c dns.el url-gw.el url-parse.el url-proxy.el autoinsert.el cl.texi configure.in cyrillic.el dbus.el gnus.texi hashcash.el log-edit.el message.el - org-latex.el org-table.el process.c rcirc.el and 7 other files + org-latex.el org-table.el process.c rcirc.el and 8 other files Malcolm Purvis: changed spam-stat.el @@ -2432,7 +2432,7 @@ eudc-vars.el eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el ldap.el and changed ph.el -Óscar Fuentes: changed emacsclient.c ido.el vc-bzr.el +Óscar Fuentes: changed ido.el emacsclient.c vc-bzr.el P. E. Jareth Hein: changed gnus-util.el @@ -2951,7 +2951,9 @@ Steinar Bang: changed imap.el -Štěpán Němec: changed subr.el vc-git.el +Štěpán Němec: changed INSTALL cl.texi edebug.texi loading.texi maps.texi + mark.texi message.texi mini.texi minibuf.texi misc.texi programs.texi + subr.el tips.texi url.texi vc-git.el windows.texi Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi ediff-mult.el @@ -3080,7 +3082,7 @@ and changed spam.el gnus.el gnus-sum.el gnus.texi nnimap.el netrc.el spam-stat.el gnus-start.el gnus-util.el nnmail.el encrypt.el message.el gnus-encrypt.el mail-source.el assistant.el auth.texi imap.el - nnbabyl.el nnfolder.el nnmbox.el nnmh.el and 48 other files + nnbabyl.el nnfolder.el nnmbox.el nnmh.el and 51 other files Terje Rosten: changed xfns.c version.el xterm.c xterm.h diff -r f043f612f6da -r 973b5bc5fcfe etc/ChangeLog --- a/etc/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/etc/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,15 @@ +2010-05-08 Chong Yidong + + * PROBLEMS: Document gcc-4.5 bug (Bug#6031). + +2010-05-08 Kenichi Handa + + * HELLO: Adjust Burmese for Unicode 5.2 encoding. + +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-07 Eli Zaretskii * HELLO: Reorder Arabic greetings into logical order (they were diff -r f043f612f6da -r 973b5bc5fcfe etc/HELLO --- a/etc/HELLO Sat May 08 11:42:56 2010 -0700 +++ b/etc/HELLO Sat May 08 14:47:07 2010 -0400 @@ -7,7 +7,7 @@ Middle/Near East: ,Hylem(B, ,GGdSqdGe(B ,GYdjce(B South Asia: $,19h9n9x:-9d:'(B, $,15h5n5x6-5d6'(B, $,1?(?.?8?M>u?>?0(B, $,1@H@N@X@m@5@^@P@"(B, $,1;6;A;#;?;,;G(B, $,1AFAzB4AvB=B AqB*(B, $,1-=U=~=p=B(B, $(7"7"!#C!;"E"S"G!;"7"2"[!;"D"["#"G!>(B - South East Asia: $,1\'\f\:\V\4\?\]\:(B, (1JP:R-4U(B, $,1H9H$HYrmH"HH3gGO<6b727>(B) $,17(7.787M6u7>70(B Braille $,2(3(1('('(5(B -Burmese ($,1H9HYH;H4HYrlH9HL(B) $,1H9H$HYrmH"H improvment. + improvement. + Refill after yank. [Refill mode does that.] @@ -272,4 +272,4 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see <. diff -r f043f612f6da -r 973b5bc5fcfe leim/ChangeLog --- a/leim/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/leim/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-04-06 Chong Yidong * quail/vntelex.el: Fix "af" rule (Bug#5836). diff -r f043f612f6da -r 973b5bc5fcfe lib-src/ChangeLog --- a/lib-src/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lib-src/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,7 +1,16 @@ +2010-05-08 Christoph (tiny change) + + * makefile.w32-in (OTHER_PLATFORM_SUPPORT): Use parenthesis + for macros for nmake compatibility. + 2010-05-08 Glenn Morris * Makefile.in (THIS_IS_MAKEFILE): Remove, unused. +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-06 Glenn Morris * Makefile.in: Minimize blessmail-related cpp usage. diff -r f043f612f6da -r 973b5bc5fcfe lisp/ChangeLog --- a/lisp/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lisp/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,95 @@ +2010-05-08 Chong Yidong + + * international/mule.el (auto-coding-alist): Only purecopy + car of each item, not the whole list (Bug#6083). + +2010-05-08 Chong Yidong + + * progmodes/js.el (js-mode): Make paragraph variables local before + calling c-setup-paragraph-variables (Bug#6071). + +2010-05-08 Eli Zaretskii + + * composite.el (compose-region, reference-point-alist): Fix typos + in the doc strings. + +2010-05-08 Alexander Klimov (tiny change) + + * calc/calc-graph.el (calc-graph-plot): Use the proper form for + gnuplot's "set" command. + +2010-05-08 Juanma Barranquero + + * abbrev.el (last-abbrev-text): Doc fix. + (abbrev-prefix-mark): Don't escape parenthesis. + +2010-05-08 Andreas Schwab + + * composite.el (find-composition): Doc fix. + +2010-05-08 Juanma Barranquero + + * progmodes/sql.el (sql-electric-stuff): Fix typo in tag. + (sql-oracle-program, sql-sqlite-options) + (sql-query-placeholders-and-send): Doc fixes. + (sql-set-product, sql-interactive-mode): Reflow docstrings. + (sql-imenu-generic-expression, sql-buffer) + (sql-mode-ansi-font-lock-keywords, sql-mode-oracle-font-lock-keywords) + (sql-mode-postgres-font-lock-keywords, sql-mode-ms-font-lock-keywords) + (sql-mode-sybase-font-lock-keywords) + (sql-mode-informix-font-lock-keywords) + (sql-mode-interbase-font-lock-keywords) + (sql-mode-ingres-font-lock-keywords, sql-mode-solid-font-lock-keywords) + (sql-mode-mysql-font-lock-keywords, sql-mode-sqlite-font-lock-keywords) + (sql-mode-db2-font-lock-keywords, sql-mode-font-lock-keywords) + (sql-product-feature, sql-highlight-product) + (comint-line-beginning-position, sql-rename-buffer) + (sql-toggle-pop-to-buffer-after-send-region sql-oracle) + (sql-sybase, sql-informix, sql-sqlite, sql-mysql, sql-solid) + (sql-ingres, sql-ms, sql-postgres, sql-interbase, sql-db2, sql-linter): + Fix typos in docstrings. + +2010-05-08 Juri Linkov + + * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display' + property instead of `invisible' and `after-string' (bug#5998). + +2010-05-08 Juri Linkov + + * image-mode.el (image-mode-as-text): Fix typo in docstring. + +2010-05-08 Juanma Barranquero + + * filecache.el (file-cache-add-directory-list) + (file-cache-add-directory-recursively): Fix typos in docstrings. + +2010-05-08 Kenichi Handa + + * language/indian.el (gurmukhi-composable-pattern): Fix typo. + (gujarati-composable-pattern): Fix typo. + +2010-05-08 Kenichi Handa + + * language/indian.el (oriya-composable-pattern) + (tamil-composable-pattern, malayalam-composable-pattern): + Add two-part vowels to "v" (vowel sign). + +2010-05-08 Chong Yidong + + * files.el (copy-directory): Handle symlinks (Bug#5982). + +2010-05-08 Dan Nicolaescu + + * vc-hg.el (vc-hg-state): Use HGRCPATH, not HGRC. + (vc-hg-working-revision): Likewise. Use hg parents, not hg parent + (Bug#5846). + +2010-05-08 Glenn Morris + + * emacs-lisp/lisp.el (lisp-completion-at-point): Give it a doc string. + + * minibuffer.el (completion-at-point): Doc fix. + 2010-05-08 Stefan Monnier * electric.el (Electric-command-loop): Minor tweak. @@ -5,6 +97,10 @@ * ebuff-menu.el (electric-buffer-list): Try and make it behave a bit better with dedicated windows. +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-07 Deniz Dogan (tiny change) Stefan Monnier diff -r f043f612f6da -r 973b5bc5fcfe lisp/abbrev.el --- a/lisp/abbrev.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/abbrev.el Sat May 08 14:47:07 2010 -0400 @@ -338,7 +338,7 @@ Abbrev to be expanded starts here rather than at beginning of word. This way, you can expand an abbrev with a prefix: insert the prefix, use this command, then insert the abbrev. This command inserts a -temporary hyphen after the prefix \(until the intended abbrev +temporary hyphen after the prefix (until the intended abbrev expansion occurs). If the prefix is itself an abbrev, this command expands it, unless ARG is non-nil. Interactively, ARG is the prefix argument." @@ -460,7 +460,7 @@ (defvar last-abbrev-text nil "The exact text of the last abbrev expanded. -nil if the abbrev has already been unexpanded.") +It is nil if the abbrev has already been unexpanded.") (defvar last-abbrev-location 0 "The location of the start of the last abbrev expanded.") diff -r f043f612f6da -r 973b5bc5fcfe lisp/calc/calc-graph.el --- a/lisp/calc/calc-graph.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/calc/calc-graph.el Sat May 08 14:47:07 2010 -0400 @@ -345,7 +345,7 @@ "set xlabel\nset ylabel\nset title\n" "set noclip points\nset clip one\nset clip two\n" "set format \"%g\"\nset tics\nset xtics\nset ytics\n" - "set data style linespoints\n" + "set style data linespoints\n" "set nogrid\nset nokey\nset nopolar\n")) (if (>= ver 3) (insert "set surface\nset nocontour\n" diff -r f043f612f6da -r 973b5bc5fcfe lisp/emacs-lisp/lisp.el --- a/lisp/emacs-lisp/lisp.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/emacs-lisp/lisp.el Sat May 08 14:47:07 2010 -0400 @@ -628,11 +628,12 @@ (minibuffer-message "Nothing to complete") (let ((completion-annotate-function (plist-get plist :annotate-function))) - (completion-in-region (nth 0 data) (nth 1 data) (nth 2 data) + (completion-in-region (nth 0 data) (nth 1 data) (nth 2 data) (plist-get plist :predicate)))))) - + (defun lisp-completion-at-point (&optional predicate) + "Function used for `completion-at-point-functions' in `emacs-lisp-mode'." ;; FIXME: the `end' could be after point? (let* ((pos (point)) (beg (with-syntax-table emacs-lisp-mode-syntax-table diff -r f043f612f6da -r 973b5bc5fcfe lisp/erc/ChangeLog --- a/lisp/erc/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lisp/erc/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-03-10 Chong Yidong * Branch for 23.2. @@ -12,8 +16,8 @@ (erc-server-reconnect): Use it to reconnect via old connector (Bug#4958). - * erc.el (erc-determine-parameters): Save - erc-server-connect-function to erc-session-connector. + * erc.el (erc-determine-parameters): + Save erc-server-connect-function to erc-session-connector. 2009-11-03 Stefan Monnier diff -r f043f612f6da -r 973b5bc5fcfe lisp/filecache.el --- a/lisp/filecache.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/filecache.el Sat May 08 14:47:07 2010 -0400 @@ -296,8 +296,8 @@ (defun file-cache-add-directory-list (directory-list &optional regexp) "Add DIRECTORY-LIST (a list of directory names) to the file cache. If the optional REGEXP argument is non-nil, only files which match it -will be added to the cache. Note that the REGEXP is applied to the files -in each directory, not to the directory list itself." +will be added to the cache. Note that the REGEXP is applied to the +files in each directory, not to the directory list itself." (interactive "XAdd files from directory list: ") (mapcar (lambda (dir) (file-cache-add-directory dir regexp)) @@ -370,10 +370,10 @@ ;;;###autoload (defun file-cache-add-directory-recursively (dir &optional regexp) "Adds DIR and any subdirectories to the file-cache. -This function does not use any external programs +This function does not use any external programs. If the optional REGEXP argument is non-nil, only files which match it -will be added to the cache. Note that the REGEXP is applied to the files -in each directory, not to the directory list itself." +will be added to the cache. Note that the REGEXP is applied to the +files in each directory, not to the directory list itself." (interactive "DAdd directory: ") (require 'find-lisp) (mapcar diff -r f043f612f6da -r 973b5bc5fcfe lisp/files.el --- a/lisp/files.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/files.el Sat May 08 14:47:07 2010 -0400 @@ -4753,10 +4753,14 @@ (mapc (lambda (file) (let ((target (expand-file-name - (file-name-nondirectory file) newname))) - (if (file-directory-p file) - (copy-directory file target keep-time parents) - (copy-file file target t keep-time)))) + (file-name-nondirectory file) newname)) + (attrs (file-attributes file))) + (cond ((file-directory-p file) + (copy-directory file target keep-time parents)) + ((stringp (car attrs)) ; Symbolic link + (make-symbolic-link (car attrs) target t)) + (t + (copy-file file target t keep-time))))) ;; We do not want to copy "." and "..". (directory-files directory 'full directory-files-no-dot-files-regexp)) diff -r f043f612f6da -r 973b5bc5fcfe lisp/image-mode.el --- a/lisp/image-mode.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/image-mode.el Sat May 08 14:47:07 2010 -0400 @@ -392,7 +392,7 @@ to display an image file as the actual image. You can use `image-mode-as-text' in `auto-mode-alist' when you want -to display an image file as text inititally. +to display an image file as text initially. See commands `image-mode' and `image-minor-mode' for more information on these modes." diff -r f043f612f6da -r 973b5bc5fcfe lisp/info.el --- a/lisp/info.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/info.el Sat May 08 14:47:07 2010 -0400 @@ -4343,8 +4343,7 @@ (cond ((> Info-breadcrumbs-depth 0) (let ((ov (make-overlay (point-min) (1+ header-end)))) - (overlay-put ov 'invisible t) - (overlay-put ov 'after-string (Info-breadcrumbs)) + (overlay-put ov 'display (Info-breadcrumbs)) (overlay-put ov 'evaporate t))) ((not (bobp)) ;; Hide the punctuation at the end, too. diff -r f043f612f6da -r 973b5bc5fcfe lisp/international/mule.el --- a/lisp/international/mule.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/international/mule.el Sat May 08 14:47:07 2010 -0400 @@ -1690,7 +1690,8 @@ (defcustom auto-coding-alist ;; .exe and .EXE are added to support archive-mode looking at DOS ;; self-extracting exe archives. - (purecopy '(("\\.\\(\ + (mapcar (lambda (arg) (cons (purecopy (car arg)) (cdr arg))) + '(("\\.\\(\ arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|7z\\|\ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . no-conversion-multibyte) diff -r f043f612f6da -r 973b5bc5fcfe lisp/language/indian.el --- a/lisp/language/indian.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/language/indian.el Sat May 08 14:47:07 2010 -0400 @@ -198,15 +198,14 @@ (defconst gurmukhi-composable-pattern (let ((table - '(("a" . "[\u0A01-\u0A02]") ; SIGN ADAK BINDI .. BINDI - ("A" . "\u0A03]") ; SIGN VISARGA + '(("a" . "[\u0A01-\u0A02\u0A70]") ; SIGN ADAK BINDI .. BINDI, TIPPI + ("A" . "\u0A03") ; SIGN VISARGA ("V" . "[\u0A05-\u0A14]") ; independent vowel ("C" . "[\u0A15-\u0A39\u0A59-\u0A5E]") ; consonant - ("Y" . "[\u0A2F\u0A30\u0A35\u0A39]") ; YA, RA, VA, HA + ("Y" . "[\u0A2F-u0A30\u0A35\u0A39]") ; YA, RA, VA, HA ("n" . "\u0A3C") ; NUKTA ("v" . "[\u0A3E-\u0A4C]") ; vowel sign ("H" . "\u0A4D") ; VIRAMA - ("a" . "\u0A70") ; TIPPI ("N" . "\u200C") ; ZWNJ ("J" . "\u200D") ; ZWJ ("X" . "[\u0A00-\u0A7F]")))) ; all coverage @@ -226,7 +225,7 @@ (defconst gujarati-composable-pattern (let ((table '(("a" . "[\u0A81-\u0A82]") ; SIGN CANDRABINDU .. ANUSVARA - ("A" . "\u0A83]") ; SIGN VISARGA + ("A" . "\u0A83") ; SIGN VISARGA ("V" . "[\u0A85-\u0A94\u0AE0-\u0AE1]") ; independent vowel ("C" . "[\u0A95-\u0AB9]") ; consonant ("R" . "\u0AB0") ; RA @@ -258,7 +257,7 @@ ("B" . "[\u0B15-\u0B17\u0B1B-\u0B1D\u0B1F-\u0B21\u0B23-\u0B24\u0B27-\u0B30\u0B32-\u0B35\u0B38-\u0B39]") ; consonant with below form ("R" . "\u0B30") ; RA ("n" . "\u0B3C") ; NUKTA - ("v" . "[\u0B3E-\u0B44\u0B47\u0B56-\u0B57\u0B62-\u0B63]") ; vowel sign + ("v" . "[\u0B3E-\u0B4C\u0B56-\u0B57\u0B62-\u0B63]") ; vowel sign ("H" . "\u0B4D") ; VIRAMA ("N" . "\u200C") ; ZWNJ ("J" . "\u200D") ; ZWJ @@ -281,7 +280,7 @@ '(("a" . "\u0B82") ; SIGN ANUSVARA ("V" . "[\u0B85-\u0B94]") ; independent vowel ("C" . "[\u0B95-\u0BB9]") ; consonant - ("v" . "[\u0BBE-\u0BC8\u0BD7]") ; vowel sign + ("v" . "[\u0BBE-\u0BCC\u0BD7]") ; vowel sign ("H" . "\u0BCD") ; VIRAMA ("N" . "\u200C") ; ZWNJ ("J" . "\u200D") ; ZWJ @@ -351,7 +350,7 @@ ("V" . "[\u0D05-\u0D14\u0D60-\u0D61]") ; independent vowel ("C" . "[\u0D15-\u0D39]") ; consonant ("Y" . "[\u0D2F-\u0D30\u0D32\u0D35]") ; YA, RA, LA, VA - ("v" . "[\u0D3E-\u0D48\u0D57\u0D62-\u0D63]") ; postbase matra + ("v" . "[\u0D3E-\u0D4C\u0D57\u0D62-\u0D63]") ; postbase matra ("H" . "\u0D4D") ; SIGN VIRAMA ("N" . "\u200C") ; ZWNJ ("J" . "\u200D") ; ZWJ diff -r f043f612f6da -r 973b5bc5fcfe lisp/mh-e/ChangeLog --- a/lisp/mh-e/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lisp/mh-e/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-03 Stefan Monnier * mh-show.el (mh-showing-mode): Move function to mh-e.el. diff -r f043f612f6da -r 973b5bc5fcfe lisp/minibuffer.el --- a/lisp/minibuffer.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/minibuffer.el Sat May 08 14:47:07 2010 -0400 @@ -1169,7 +1169,7 @@ `:predicate' a predicate that completion candidates need to satisfy. `:annotation-function' the value to use for `completion-annotate-function'.") -(defun complete-symbol (&optional arg) +(defun completion-at-point (&optional arg) "Perform completion on the text around point. The completion method is determined by `completion-at-point-functions'. @@ -1193,7 +1193,7 @@ (completion-in-region start end (nth 2 res) (plist-get plist :predicate)))))))) -(defalias 'completion-at-point 'complete-symbol) +(define-obsolete-function-alias 'complete-symbol 'completion-at-point "24.1") ;;; Key bindings. diff -r f043f612f6da -r 973b5bc5fcfe lisp/org/ChangeLog --- a/lisp/org/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lisp/org/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-05 Stefan Monnier * org-table.el (orgtbl-setup): @@ -40,8 +44,7 @@ * org-latex.el (org-export-latex-classes): Update docstring. * org.el (org-format-latex-header): Add cookies to the header. - (org-splice-latex-header): Implement placement according to - cookies. + (org-splice-latex-header): Implement placement according to cookies. 2010-04-10 Carsten Dominik @@ -54,8 +57,8 @@ 2010-04-10 Carsten Dominik - * org-latex.el (org-export-latex-make-header): Use - `org-splice-latex-header' to build the header. + * org-latex.el (org-export-latex-make-header): + Use `org-splice-latex-header' to build the header. (org-export-latex-classes): Update docstring. * org.el (org-splice-latex-header): New function. diff -r f043f612f6da -r 973b5bc5fcfe lisp/progmodes/js.el --- a/lisp/progmodes/js.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/progmodes/js.el Sat May 08 14:47:07 2010 -0400 @@ -3327,6 +3327,13 @@ comment-start-skip "\\(//+\\|/\\*+\\)\\s *") (let ((c-buffer-is-cc-mode t)) + ;; FIXME: These are normally set by `c-basic-common-init'. Should + ;; we call it instead? (Bug#6071) + (make-local-variable 'paragraph-start) + (make-local-variable 'paragraph-separate) + (make-local-variable 'paragraph-ignore-fill-prefix) + (make-local-variable 'adaptive-fill-mode) + (make-local-variable 'adaptive-fill-regexp) (c-setup-paragraph-variables)) (set (make-local-variable 'syntax-begin-function) diff -r f043f612f6da -r 973b5bc5fcfe lisp/progmodes/sql.el --- a/lisp/progmodes/sql.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/progmodes/sql.el Sat May 08 14:47:07 2010 -0400 @@ -419,7 +419,7 @@ If set to nil, then you must use \\[comint-send-input] in order to send current input in the SQLi buffer to the process." :type '(choice (const :tag "Nothing" nil) - (const :tag "The semikolon `;'" semicolon) + (const :tag "The semicolon `;'" semicolon) (const :tag "The string `go' by itself" go)) :version "20.8" :group 'SQL) @@ -450,9 +450,9 @@ "Define interesting points in the SQL buffer for `imenu'. This is used to set `imenu-generic-expression' when SQL mode is -entered. Subsequent changes to sql-imenu-generic-expression will not -affect existing SQL buffers because imenu-generic-expression is a -local variable.") +entered. Subsequent changes to `sql-imenu-generic-expression' will +not affect existing SQL buffers because imenu-generic-expression is +a local variable.") ;; history file @@ -516,7 +516,7 @@ Starts `sql-interactive-mode' after doing some setup. -Under NT, \"sqlplus\" usually starts the sqlplus \"GUI\". In order to +On Windows, \"sqlplus\" usually starts the sqlplus \"GUI\". In order to start the sqlplus console, use \"plus33\" or something similar. You will find the file in your Orant\\bin directory. @@ -542,9 +542,7 @@ :group 'SQL) (defcustom sql-sqlite-options nil - "*List of additional options for `sql-sqlite-program'. -The following list of options is reported to make things work -on Windows: \"-C\" \"-t\" \"-f\" \"-n\"." + "*List of additional options for `sql-sqlite-program'." :type '(repeat string) :version "20.8" :group 'SQL) @@ -727,7 +725,7 @@ (defvar sql-buffer nil "Current SQLi buffer. -The global value of sql-buffer is the name of the latest SQLi buffer +The global value of `sql-buffer' is the name of the latest SQLi buffer created. Any SQL buffer created will make a local copy of this value. See `sql-interactive-mode' for more on multiple sessions. If you want to change the SQLi buffer a SQL mode sends its SQL strings to, change @@ -992,8 +990,8 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-ansi-font-lock-keywords. You may want to -add functions and PL/SQL keywords.") +you define your own `sql-mode-ansi-font-lock-keywords'. You may want +to add functions and PL/SQL keywords.") (defvar sql-mode-oracle-font-lock-keywords (let ((oracle-functions (sql-keywords-re @@ -1208,7 +1206,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-oracle-font-lock-keywords. You may want +you define your own `sql-mode-oracle-font-lock-keywords'. You may want to add functions and PL/SQL keywords.") (defvar sql-mode-postgres-font-lock-keywords @@ -1296,7 +1294,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-postgres-font-lock-keywords.") +you define your own `sql-mode-postgres-font-lock-keywords'.") (defvar sql-mode-linter-font-lock-keywords (let ((linter-keywords (sql-keywords-re @@ -1482,7 +1480,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-ms-font-lock-keywords.") +you define your own `sql-mode-ms-font-lock-keywords'.") (defvar sql-mode-sybase-font-lock-keywords nil "Sybase SQL keywords used by font-lock. @@ -1490,7 +1488,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-sybase-font-lock-keywords.") +you define your own `sql-mode-sybase-font-lock-keywords'.") (defvar sql-mode-informix-font-lock-keywords nil "Informix SQL keywords used by font-lock. @@ -1498,7 +1496,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-informix-font-lock-keywords.") +you define your own `sql-mode-informix-font-lock-keywords'.") (defvar sql-mode-interbase-font-lock-keywords nil "Interbase SQL keywords used by font-lock. @@ -1506,7 +1504,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-interbase-font-lock-keywords.") +you define your own `sql-mode-interbase-font-lock-keywords'.") (defvar sql-mode-ingres-font-lock-keywords nil "Ingres SQL keywords used by font-lock. @@ -1514,7 +1512,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-interbase-font-lock-keywords.") +you define your own `sql-mode-interbase-font-lock-keywords'.") (defvar sql-mode-solid-font-lock-keywords nil "Solid SQL keywords used by font-lock. @@ -1522,7 +1520,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-solid-font-lock-keywords.") +you define your own `sql-mode-solid-font-lock-keywords'.") (defvar sql-mode-mysql-font-lock-keywords (let ((mysql-funcs (sql-keywords-re @@ -1599,7 +1597,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-mysql-font-lock-keywords.") +you define your own `sql-mode-mysql-font-lock-keywords'.") (defvar sql-mode-sqlite-font-lock-keywords nil "SQLite SQL keywords used by font-lock. @@ -1607,7 +1605,7 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-sqlite-font-lock-keywords.") +you define your own `sql-mode-sqlite-font-lock-keywords'.") (defvar sql-mode-db2-font-lock-keywords nil "DB2 SQL keywords used by font-lock. @@ -1615,14 +1613,14 @@ This variable is used by `sql-mode' and `sql-interactive-mode'. The regular expressions are created during compilation by calling the function `regexp-opt'. Therefore, take a look at the source before -you define your own sql-mode-db2-font-lock-keywords.") +you define your own `sql-mode-db2-font-lock-keywords'.") (defvar sql-mode-font-lock-keywords nil "SQL keywords used by font-lock. Setting this variable directly no longer has any affect. Use `sql-product' and `sql-add-product-keywords' to control the -highlighting rules in sql-mode.") +highlighting rules in SQL mode.") @@ -1631,7 +1629,7 @@ (defun sql-product-feature (feature &optional product) "Lookup `feature' needed to support the current SQL product. -See \[sql-product-alist] for a list of products and supported features." +See `sql-product-alist' for a list of products and supported features." (plist-get (cdr (assoc (or product sql-product) sql-product-alist)) @@ -1720,8 +1718,7 @@ ;;; Functions to switch highlighting (defun sql-highlight-product () - "Turns on the appropriate font highlighting for the SQL product -selected." + "Turn on the appropriate font highlighting for the SQL product selected." (when (derived-mode-p 'sql-mode) ;; Setup font-lock (sql-product-font-lock nil t) @@ -1730,8 +1727,7 @@ (setq mode-name (concat "SQL[" (prin1-to-string sql-product) "]")))) (defun sql-set-product (product) - "Set `sql-product' to product and enable appropriate -highlighting." + "Set `sql-product' to product and enable appropriate highlighting." (interactive (list (completing-read "Enter SQL product: " (mapcar (lambda (info) (symbol-name (car info))) @@ -1752,7 +1748,7 @@ (if (not (fboundp 'comint-line-beginning-position)) ;; comint-line-beginning-position is defined in Emacs 21 (defun comint-line-beginning-position () - "Returns the buffer position of the beginning of the line, after any prompt. + "Return the buffer position of the beginning of the line, after any prompt. The prompt is assumed to be any text at the beginning of the line matching the regular expression `comint-prompt-regexp', a buffer local variable." (save-excursion (comint-bol nil) (point)))) @@ -1974,7 +1970,7 @@ sql-database))) (defun sql-rename-buffer () - "Renames a SQLi buffer." + "Rename a SQLi buffer." (interactive) (rename-buffer (format "*SQL: %s*" sql-alternate-buffer-name) t)) @@ -2007,8 +2003,8 @@ (insert column) (message "%s" column)))) -;; On NT, SQL*Plus for Oracle turns on full buffering for stdout if it -;; is not attached to a character device; therefore placeholder +;; On Windows, SQL*Plus for Oracle turns on full buffering for stdout +;; if it is not attached to a character device; therefore placeholder ;; replacement by SQL*Plus is fully buffered. The workaround lets ;; Emacs query for the placeholders. @@ -2017,8 +2013,9 @@ (defun sql-query-placeholders-and-send (proc string) "Send to PROC input STRING, maybe replacing placeholders. -Placeholders are words starting with and ampersand like &this. -This function is used for `comint-input-sender' if using `sql-oracle' on NT." +Placeholders are words starting with an ampersand like &this. +This function is used for `comint-input-sender' if using +`sql-oracle' on Windows." (while (string-match "&\\(\\sw+\\)" string) (setq string (replace-match (read-from-minibuffer @@ -2104,7 +2101,7 @@ "Toggle `sql-pop-to-buffer-after-send-region'. If given the optional parameter VALUE, sets -sql-toggle-pop-to-buffer-after-send-region to VALUE." +`sql-toggle-pop-to-buffer-after-send-region' to VALUE." (interactive "P") (if value (setq sql-pop-to-buffer-after-send-region value) @@ -2187,8 +2184,8 @@ "Major mode to use a SQL interpreter interactively. Do not call this function by yourself. The environment must be -initialized by an entry function specific for the SQL interpreter. See -`sql-help' for a list of available entry functions. +initialized by an entry function specific for the SQL interpreter. +See `sql-help' for a list of available entry functions. \\[comint-send-input] after the end of the process' output sends the text from the end of process to the end of the current line. @@ -2360,7 +2357,7 @@ defaults, if set. Additional command line parameters can be stored in the list `sql-oracle-options'. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2392,7 +2389,7 @@ (nconc (list parameter) sql-oracle-options) sql-oracle-options)) (set-buffer (apply 'make-comint "SQL" sql-oracle-program nil parameter)) - ;; SQL*Plus is buffered on WindowsNT; this handles &placeholders. + ;; SQL*Plus is buffered on Windows; this handles &placeholders. (if (eq window-system 'w32) (setq comint-input-sender 'sql-query-placeholders-and-send)))) @@ -2411,7 +2408,7 @@ `sql-database' as defaults, if set. Additional command line parameters can be stored in the list `sql-sybase-options'. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2455,7 +2452,7 @@ Interpreter used comes from variable `sql-informix-program'. Login uses the variable `sql-database' as default, if set. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2494,7 +2491,7 @@ `sql-server' as defaults, if set. Additional command line parameters can be stored in the list `sql-sqlite-options'. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2538,7 +2535,7 @@ `sql-server' as defaults, if set. Additional command line parameters can be stored in the list `sql-mysql-options'. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2585,7 +2582,7 @@ the variables `sql-user', `sql-password', and `sql-server' as defaults, if set. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2627,7 +2624,7 @@ Interpreter used comes from variable `sql-ingres-program'. Login uses the variable `sql-database' as default, if set. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2664,7 +2661,7 @@ as defaults, if set. Additional command line parameters can be stored in the list `sql-ms-options'. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2717,7 +2714,7 @@ Additional command line parameters can be stored in the list `sql-postgres-options'. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2768,7 +2765,7 @@ uses the variables `sql-user', `sql-password', and `sql-database' as defaults, if set. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. To specify a coding system for converting non-ASCII characters @@ -2810,7 +2807,7 @@ Interpreter used comes from variable `sql-db2-program'. There is not automatic login. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. If you use \\[sql-accumulate-and-indent] to send multiline commands to @@ -2859,7 +2856,7 @@ for this to work). If `sql-password' is an empty string, inl will use an empty password. -The buffer is put in sql-interactive-mode, giving commands for sending +The buffer is put in SQL interactive mode, giving commands for sending input. See `sql-interactive-mode'. \(Type \\[describe-mode] in the SQL buffer for a list of commands.)" diff -r f043f612f6da -r 973b5bc5fcfe lisp/url/ChangeLog --- a/lisp/url/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lisp/url/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-03 Stefan Monnier * url-dired.el (url-dired-minor-mode): Use define-minor-mode. @@ -62,8 +66,8 @@ 2009-09-12 Chong Yidong * url-methods.el (url-scheme--registering-proxy): New variable. - (url-scheme-register-proxy, url-scheme-get-property): Avoid - calling url-scheme-register-proxy in an infloop (Bug#4191). + (url-scheme-register-proxy, url-scheme-get-property): + Avoid calling url-scheme-register-proxy in an infloop (Bug#4191). 2009-08-22 Glenn Morris diff -r f043f612f6da -r 973b5bc5fcfe lisp/vc-hg.el --- a/lisp/vc-hg.el Sat May 08 11:42:56 2010 -0700 +++ b/lisp/vc-hg.el Sat May 08 14:47:07 2010 -0400 @@ -168,12 +168,13 @@ (condition-case nil ;; Ignore all errors. (let ((process-environment - ;; Avoid localization of messages so we can parse the output. - (append (list "TERM=dumb" "LANGUAGE=C" "HGRC=") process-environment))) - - (process-file - "hg" nil t nil - "status" "-A" (file-relative-name file))) + ;; Avoid localization of messages so we + ;; can parse the output. + (append (list "TERM=dumb" "LANGUAGE=C" "HGRCPATH=") + process-environment))) + (process-file + "hg" nil t nil + "status" "-A" (file-relative-name file))) ;; Some problem happened. E.g. We can't find an `hg' ;; executable. (error nil))))))) @@ -197,7 +198,7 @@ ((status nil) (default-directory (file-name-directory file)) ;; Avoid localization of messages so we can parse the output. - (avoid-local-env (append (list "TERM=dumb" "LANGUAGE=C" "HGRC=") + (avoid-local-env (append (list "TERM=dumb" "LANGUAGE=C" "HGRCPATH=") process-environment)) (out (with-output-to-string @@ -209,7 +210,7 @@ ;; Ignore all errors. (process-file "hg" nil t nil - "parent" "--template" "{rev}" (file-relative-name file))) + "parents" "--template" "{rev}" (file-relative-name file))) ;; Some problem happened. E.g. We can't find an `hg' ;; executable. (error nil))))))) diff -r f043f612f6da -r 973b5bc5fcfe lwlib/ChangeLog --- a/lwlib/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/lwlib/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -3,6 +3,10 @@ * xlwmenu.c (XlwMenuDestroy): Remove XtDestroyWidget on subwidgets (Bug #6127). +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-06 Glenn Morris * Makefile.in (CPP, LN_S, TOP, LN): Remove unused variables. @@ -28,17 +32,16 @@ XlwMenuRedisplay. (display_menu_item): Replace ws->window with ws->pixmap, remove call to XftDrawRect. - (display_menu): Remove this and that argument. Remove - just_compute_this_one_p. Fill pixmap at start and copy it to window - at end. + (display_menu): Remove this and that argument. + Remove just_compute_this_one_p. Fill pixmap at start and copy it to + window at end. (expose_cb): New function. (make_windows_if_needed): Replace XCreateWindow with XtCreatePopup. - Add eventhandler for expose to expose_cb. Remove creation of - xft_draw. + Add eventhandler for expose to expose_cb. Remove creation of xft_draw. (create_pixmap_for_menu): New function. (remap_menubar): Pop down menus that aren't the same as in old_stack. - Set width, heigh, x, y on widget with XtVaSetValues. Call - create_pixmap_for_menu. + Set width, heigh, x, y on widget with XtVaSetValues. + Call create_pixmap_for_menu. Replace XUnmapWindow with XtPopdown. Remowe two last parameters to display_menu. (map_event_to_widget_value, XlwMenuRedisplay, Key, Select) diff -r f043f612f6da -r 973b5bc5fcfe msdos/ChangeLog --- a/msdos/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/msdos/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-08 Glenn Morris * sed1v2.inp (LIBS_TERMCAP): Edit to empty. diff -r f043f612f6da -r 973b5bc5fcfe nextstep/ChangeLog --- a/nextstep/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/nextstep/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-03-10 Chong Yidong * Branch for 23.2. diff -r f043f612f6da -r 973b5bc5fcfe nt/ChangeLog --- a/nt/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/nt/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-04 Glenn Morris * config.nt (LD_SWITCH_X_SITE_AUX): Remove. @@ -55,8 +59,8 @@ 2009-01-26 Jason Rumney - * emacsclient.rc, emacs.rc: Swap name and description. Remove - Windows versions. + * emacsclient.rc, emacs.rc: Swap name and description. + Remove Windows versions. 2009-01-15 Jason Rumney diff -r f043f612f6da -r 973b5bc5fcfe oldXMenu/ChangeLog --- a/oldXMenu/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/oldXMenu/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,15 +1,19 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-05-06 Glenn Morris * Makefile.in (RANLIB): Let configure set it. - (libXMenu11.a): configure sets RANLIB = : on systems without it. + (libXMenu11.a): Configure sets RANLIB = : on systems without it. * Makefile.in (CPP, LN_S, AS, LD, MV, LS, LINTOPTS, LINTLIBFLAG, MAKE) (STD_DEFINES, CDEBUGFLAGS, RM_CMD): Remove unused variables. 2010-05-04 Glenn Morris - * Makefile.in (C_SWITCH_SYSTEM, C_SWITCH_MACHINE): Use - @C_SWITCH_SYSTEM@, @C_SWITCH_MACHINE@ rather than + * Makefile.in (C_SWITCH_SYSTEM, C_SWITCH_MACHINE): + Use @C_SWITCH_SYSTEM@, @C_SWITCH_MACHINE@ rather than @c_switch_system@, @c_switch_machine@. 2010-04-27 Dan Nicolaescu diff -r f043f612f6da -r 973b5bc5fcfe src/ChangeLog --- a/src/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/src/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,31 @@ +2010-05-08 Chong Yidong + + * Version 23.2 released. + +2010-05-08 Andreas Schwab + + * composite.c (autocmp_chars): Save point as marker before calling + auto-composition-function (Bug#5984). + + * lisp.h (restore_point_unwind): Add prototype. + + * fileio.c (restore_point_unwind): Remove static attribute. + +2010-05-08 Kenichi Handa + + * ftfont.c (M17N_FLT_USE_NEW_FEATURE): Define it if we can use the + new feature of libotf and m17n-flt. + (ftfont_check_otf) [M17N_FLT_USE_NEW_FEATURE]: + Call OTF_check_features even if no specific feature is given. + (PACK_OTF_TAG) [M17N_FLT_USE_NEW_FEATURE]: New macro. + (ftfont_drive_otf) [M17N_FLT_USE_NEW_FEATURE]: Handle the case + that OUT is NULL. Use OTF_drive_gsub_with_log and + OTF_drive_gpos_with_log instead of OTF_drive_gsub and + OTF_drive_gpos. + (ftfont_try_otf) [M17N_FLT_USE_NEW_FEATURE]: New function. + (ftfont_shape_by_flt) [M17N_FLT_USE_NEW_FEATURE]: + Setup mflt_enable_new_feature and mflt_try_otf. + 2010-05-08 Jan Djärv * xsettings.c (Ftool_bar_get_system_style): Correct comment. diff -r f043f612f6da -r 973b5bc5fcfe src/composite.c --- a/src/composite.c Sat May 08 11:42:56 2010 -0700 +++ b/src/composite.c Sat May 08 14:47:07 2010 -0400 @@ -990,6 +990,14 @@ { Lisp_Object args[6]; + /* Save point as marker before calling out to lisp. */ + if (NILP (string)) + { + Lisp_Object m = Fmake_marker (); + set_marker_both (m, Qnil, pt, pt_byte); + record_unwind_protect (restore_point_unwind, m); + } + args[0] = Vauto_composition_function; args[1] = AREF (elt, 2); args[2] = pos; @@ -998,8 +1006,10 @@ args[5] = string; gstring = safe_call (6, args); } - if (NILP (string)) - TEMP_SET_PT_BOTH (pt, pt_byte); + else if (NILP (string)) + { + TEMP_SET_PT_BOTH (pt, pt_byte); + } return unbind_to (count, gstring); } } diff -r f043f612f6da -r 973b5bc5fcfe src/fileio.c --- a/src/fileio.c Sat May 08 11:42:56 2010 -0700 +++ b/src/fileio.c Sat May 08 14:47:07 2010 -0400 @@ -299,7 +299,7 @@ /* Restore point, having saved it as a marker. */ -static Lisp_Object +Lisp_Object restore_point_unwind (location) Lisp_Object location; { diff -r f043f612f6da -r 973b5bc5fcfe src/ftfont.c --- a/src/ftfont.c Sat May 08 11:42:56 2010 -0700 +++ b/src/ftfont.c Sat May 08 14:47:07 2010 -0400 @@ -1578,6 +1578,14 @@ #ifdef HAVE_M17N_FLT +#if ((LIBOTF_MAJOR_VERSION > 1) || (LIBOTF_RELEASE_NUMBER >= 10) \ + && (M17NLIB_MAJOR_VERSION > 1) || (M17NLIB_MINOR_VERSION >= 6)) +/* We can use the new feature of libotf and m17n-flt to handle the + character encoding scheme introduced in Unicode 5.1 and 5.2 for + some Agian scripts. */ +#define M17N_FLT_USE_NEW_FEATURE +#endif + struct MFLTFontFT { MFLTFont flt_font; @@ -1696,10 +1704,16 @@ else tags[n] = spec->features[i][n]; } +#ifdef M17N_FLT_USE_NEW_FEATURE + if (OTF_check_features (otf, i == 0, spec->script, spec->langsys, + tags, n - negative) != 1) + return 0; +#else /* not M17N_FLT_USE_NEW_FEATURE */ if (n - negative > 0 && OTF_check_features (otf, i == 0, spec->script, spec->langsys, tags, n - negative) != 1) return 0; +#endif /* not M17N_FLT_USE_NEW_FEATURE */ } return 1; } @@ -1757,6 +1771,356 @@ memset (otf_gstring.glyphs, 0, sizeof (OTF_Glyph) * size); } +#ifdef M17N_FLT_USE_NEW_FEATURE + +/* Pack 32-bit OTF tag (0x7F7F7F7F) into 28-bit (0x0FFFFFFF). */ +#define PACK_OTF_TAG(TAG) \ + ((((TAG) & 0x7F000000) >> 3) \ + | (((TAG) & 0x7F0000) >> 2) \ + | (((TAG) & 0x7F00) >> 1) \ + | ((TAG) & 0x7F)) + +/* Assuming that FONT is an OpenType font, apply OpenType features + specified in SPEC on glyphs between FROM and TO of IN, and record + the lastly applied feature in each glyph of IN. If OUT is not + NULL, append the resulting glyphs to OUT while storing glyph + position adjustment information in ADJUSTMENT. */ + +static int +ftfont_drive_otf (font, spec, in, from, to, out, adjustment) + MFLTFont *font; + MFLTOtfSpec *spec; + MFLTGlyphString *in; + int from, to; + MFLTGlyphString *out; + MFLTGlyphAdjustment *adjustment; +{ + struct MFLTFontFT *flt_font_ft = (struct MFLTFontFT *) font; + FT_Face ft_face = flt_font_ft->ft_face; + OTF *otf = flt_font_ft->otf; + int len = to - from; + int i, j, gidx; + OTF_Glyph *otfg; + char script[5], *langsys = NULL; + char *gsub_features = NULL, *gpos_features = NULL; + OTF_Feature *features; + + if (len == 0) + return from; + OTF_tag_name (spec->script, script); + if (spec->langsys) + { + langsys = alloca (5); + OTF_tag_name (spec->langsys, langsys); + } + for (i = 0; i < 2; i++) + { + char *p; + + if (spec->features[i] && spec->features[i][1] != 0xFFFFFFFF) + { + for (j = 0; spec->features[i][j]; j++); + if (i == 0) + p = gsub_features = alloca (6 * j); + else + p = gpos_features = alloca (6 * j); + for (j = 0; spec->features[i][j]; j++) + { + if (spec->features[i][j] == 0xFFFFFFFF) + *p++ = '*', *p++ = ','; + else + { + OTF_tag_name (spec->features[i][j], p); + p[4] = ','; + p += 5; + } + } + *--p = '\0'; + } + } + + setup_otf_gstring (len); + for (i = 0; i < len; i++) + { + otf_gstring.glyphs[i].c = in->glyphs[from + i].c; + otf_gstring.glyphs[i].glyph_id = in->glyphs[from + i].code; + } + + OTF_drive_gdef (otf, &otf_gstring); + gidx = out ? out->used : from; + + if (gsub_features && out) + { + if (OTF_drive_gsub_with_log (otf, &otf_gstring, script, langsys, + gsub_features) < 0) + goto simple_copy; + if (out->allocated < out->used + otf_gstring.used) + return -2; + features = otf->gsub->FeatureList.Feature; + for (i = 0, otfg = otf_gstring.glyphs; i < otf_gstring.used; ) + { + MFLTGlyph *g; + int min_from, max_to; + int j; + int feature_idx = otfg->positioning_type >> 4; + + g = out->glyphs + out->used; + *g = in->glyphs[from + otfg->f.index.from]; + if (g->code != otfg->glyph_id) + { + g->c = 0; + g->code = otfg->glyph_id; + g->measured = 0; + } + out->used++; + min_from = g->from; + max_to = g->to; + if (otfg->f.index.from < otfg->f.index.to) + { + /* OTFG substitutes multiple glyphs in IN. */ + for (j = from + otfg->f.index.from + 1; + j <= from + otfg->f.index.to; j++) + { + if (min_from > in->glyphs[j].from) + min_from = in->glyphs[j].from; + if (max_to < in->glyphs[j].to) + max_to = in->glyphs[j].to; + } + g->from = min_from; + g->to = max_to; + } + if (feature_idx) + { + unsigned int tag = features[feature_idx - 1].FeatureTag; + tag = PACK_OTF_TAG (tag); + g->internal = (g->internal & ~0x1FFFFFFF) | tag; + } + for (i++, otfg++; (i < otf_gstring.used + && otfg->f.index.from == otfg[-1].f.index.from); + i++, otfg++) + { + g = out->glyphs + out->used; + *g = in->glyphs[from + otfg->f.index.to]; + if (g->code != otfg->glyph_id) + { + g->c = 0; + g->code = otfg->glyph_id; + g->measured = 0; + } + feature_idx = otfg->positioning_type >> 4; + if (feature_idx) + { + unsigned int tag = features[feature_idx - 1].FeatureTag; + tag = PACK_OTF_TAG (tag); + g->internal = (g->internal & ~0x1FFFFFFF) | tag; + } + out->used++; + } + } + } + else if (gsub_features) + { + /* Just for checking which features will be applied. */ + if (OTF_drive_gsub_with_log (otf, &otf_gstring, script, langsys, + gsub_features) < 0) + goto simple_copy; + features = otf->gsub->FeatureList.Feature; + for (i = 0, otfg = otf_gstring.glyphs; i < otf_gstring.used; i++, + otfg++) + { + int feature_idx = otfg->positioning_type >> 4; + + if (feature_idx) + { + unsigned int tag = features[feature_idx - 1].FeatureTag; + tag = PACK_OTF_TAG (tag); + for (j = otfg->f.index.from; j <= otfg->f.index.to; j++) + { + MFLTGlyph *g = in->glyphs + (from + j); + g->internal = (g->internal & ~0x1FFFFFFF) | tag; + } + } + } + } + else if (out) + { + if (out->allocated < out->used + len) + return -2; + for (i = 0; i < len; i++) + out->glyphs[out->used++] = in->glyphs[from + i]; + } + + if (gpos_features && out) + { + MFLTGlyph *base = NULL, *mark = NULL, *g; + int x_ppem, y_ppem, x_scale, y_scale; + + if (OTF_drive_gpos_with_log (otf, &otf_gstring, script, langsys, + gpos_features) < 0) + return to; + features = otf->gpos->FeatureList.Feature; + x_ppem = ft_face->size->metrics.x_ppem; + y_ppem = ft_face->size->metrics.y_ppem; + x_scale = ft_face->size->metrics.x_scale; + y_scale = ft_face->size->metrics.y_scale; + + for (i = 0, otfg = otf_gstring.glyphs, g = out->glyphs + gidx; + i < otf_gstring.used; i++, otfg++, g++) + { + MFLTGlyph *prev; + int feature_idx = otfg->positioning_type >> 4; + + if (feature_idx) + { + unsigned int tag = features[feature_idx - 1].FeatureTag; + tag = PACK_OTF_TAG (tag); + g->internal = (g->internal & ~0x1FFFFFFF) | tag; + } + + if (! otfg->glyph_id) + continue; + switch (otfg->positioning_type & 0xF) + { + case 0: + break; + case 1: /* Single */ + case 2: /* Pair */ + { + int format = otfg->f.f1.format; + + if (format & OTF_XPlacement) + adjustment[i].xoff + = otfg->f.f1.value->XPlacement * x_scale / 0x10000; + if (format & OTF_XPlaDevice) + adjustment[i].xoff + += DEVICE_DELTA (otfg->f.f1.value->XPlaDevice, x_ppem); + if (format & OTF_YPlacement) + adjustment[i].yoff + = - (otfg->f.f1.value->YPlacement * y_scale / 0x10000); + if (format & OTF_YPlaDevice) + adjustment[i].yoff + -= DEVICE_DELTA (otfg->f.f1.value->YPlaDevice, y_ppem); + if (format & OTF_XAdvance) + adjustment[i].xadv + += otfg->f.f1.value->XAdvance * x_scale / 0x10000; + if (format & OTF_XAdvDevice) + adjustment[i].xadv + += DEVICE_DELTA (otfg->f.f1.value->XAdvDevice, x_ppem); + if (format & OTF_YAdvance) + adjustment[i].yadv + += otfg->f.f1.value->YAdvance * y_scale / 0x10000; + if (format & OTF_YAdvDevice) + adjustment[i].yadv + += DEVICE_DELTA (otfg->f.f1.value->YAdvDevice, y_ppem); + adjustment[i].set = 1; + } + break; + case 3: /* Cursive */ + /* Not yet supported. */ + break; + case 4: /* Mark-to-Base */ + case 5: /* Mark-to-Ligature */ + if (! base) + break; + prev = base; + goto label_adjust_anchor; + default: /* i.e. case 6 Mark-to-Mark */ + if (! mark) + break; + prev = mark; + + label_adjust_anchor: + { + int base_x, base_y, mark_x, mark_y; + int this_from, this_to; + + base_x = otfg->f.f4.base_anchor->XCoordinate * x_scale / 0x10000; + base_y = otfg->f.f4.base_anchor->YCoordinate * y_scale / 0x10000; + mark_x = otfg->f.f4.mark_anchor->XCoordinate * x_scale / 0x10000; + mark_y = otfg->f.f4.mark_anchor->YCoordinate * y_scale / 0x10000; + + if (otfg->f.f4.base_anchor->AnchorFormat != 1) + adjust_anchor (ft_face, otfg->f.f4.base_anchor, + prev->code, x_ppem, y_ppem, &base_x, &base_y); + if (otfg->f.f4.mark_anchor->AnchorFormat != 1) + adjust_anchor (ft_face, otfg->f.f4.mark_anchor, g->code, + x_ppem, y_ppem, &mark_x, &mark_y); + adjustment[i].xoff = (base_x - mark_x); + adjustment[i].yoff = - (base_y - mark_y); + adjustment[i].back = (g - prev); + adjustment[i].xadv = 0; + adjustment[i].advance_is_absolute = 1; + adjustment[i].set = 1; + this_from = g->from; + this_to = g->to; + for (j = 0; prev + j < g; j++) + { + if (this_from > prev[j].from) + this_from = prev[j].from; + if (this_to < prev[j].to) + this_to = prev[j].to; + } + for (; prev <= g; prev++) + { + prev->from = this_from; + prev->to = this_to; + } + } + } + if (otfg->GlyphClass == OTF_GlyphClass0) + base = mark = g; + else if (otfg->GlyphClass == OTF_GlyphClassMark) + mark = g; + else + base = g; + } + } + else if (gpos_features) + { + if (OTF_drive_gpos_with_log (otf, &otf_gstring, script, langsys, + gpos_features) < 0) + return to; + features = otf->gpos->FeatureList.Feature; + for (i = 0, otfg = otf_gstring.glyphs; i < otf_gstring.used; + i++, otfg++) + if (otfg->positioning_type & 0xF) + { + int feature_idx = otfg->positioning_type >> 4; + + if (feature_idx) + { + unsigned int tag = features[feature_idx - 1].FeatureTag; + tag = PACK_OTF_TAG (tag); + for (j = otfg->f.index.from; j <= otfg->f.index.to; j++) + { + MFLTGlyph *g = in->glyphs + (from + j); + g->internal = (g->internal & ~0x1FFFFFFF) | tag; + } + } + } + } + return to; + + simple_copy: + if (! out) + return to; + if (out->allocated < out->used + len) + return -2; + font->get_metrics (font, in, from, to); + memcpy (out->glyphs + out->used, in->glyphs + from, + sizeof (MFLTGlyph) * len); + out->used += len; + return to; +} + +static int +ftfont_try_otf (MFLTFont *font, MFLTOtfSpec *spec, + MFLTGlyphString *in, int from, int to) +{ + return ftfont_drive_otf (font, spec, in, from, to, NULL, NULL); +} + +#else /* not M17N_FLT_USE_NEW_FEATURE */ static int ftfont_drive_otf (font, spec, in, from, to, out, adjustment) @@ -2011,6 +2375,8 @@ return to; } +#endif /* not M17N_FLT_USE_NEW_FEATURE */ + static MFLTGlyphString gstring; static int m17n_flt_initialized; @@ -2034,6 +2400,10 @@ if (! m17n_flt_initialized) { M17N_INIT (); +#ifdef M17N_FLT_USE_NEW_FEATURE + mflt_enable_new_feature = 1; + mflt_try_otf = ftfont_try_otf; +#endif /* M17N_FLT_USE_NEW_FEATURE */ m17n_flt_initialized = 1; } diff -r f043f612f6da -r 973b5bc5fcfe src/lisp.h --- a/src/lisp.h Sat May 08 11:42:56 2010 -0700 +++ b/src/lisp.h Sat May 08 14:47:07 2010 -0400 @@ -3059,6 +3059,7 @@ EXFUN (Ffile_executable_p, 1); EXFUN (Fread_file_name, 6); extern Lisp_Object close_file_unwind P_ ((Lisp_Object)); +extern Lisp_Object restore_point_unwind P_ ((Lisp_Object)); extern void report_file_error P_ ((const char *, Lisp_Object)) NO_RETURN; extern int internal_delete_file P_ ((Lisp_Object, Lisp_Object)); extern void syms_of_fileio P_ ((void)); diff -r f043f612f6da -r 973b5bc5fcfe test/ChangeLog --- a/test/ChangeLog Sat May 08 11:42:56 2010 -0700 +++ b/test/ChangeLog Sat May 08 14:47:07 2010 -0400 @@ -1,3 +1,7 @@ +2010-05-07 Chong Yidong + + * Version 23.2 released. + 2010-03-29 Chong Yidong * cedet/semantic-ia-utest.el