* PLANNED ADDITIONS
-** CEDET (not for 23.1 due to paperwork issues, perhaps for 23.2)
-** js2-mode
** pov-mode (probably not for Emacs-23: waiting for a Free POV-Ray).
** gas-mode ?
+2010-03-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * frames.texi (Mouse Avoidance): Mention make-pointer-invisible.
+
+ * display.texi (Display Custom): Document make-pointer-invisible and
+ underline-minimum-offset. Remove inverse-video.
+
2010-02-21 Chong Yidong <cyd@stupidchicken.com>
* frames.texi (Frame Commands): Note that the last ordinary frame can
@c the reason for that pxref is because an xref early in the
@c ``echo area'' section leads here.
-@vindex inverse-video
- If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
-to invert all the lines of the display from what they normally are.
-
@vindex visible-bell
If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
to make the whole screen blink when it would normally make an audible bell
@vindex baud-rate
The variable @anchor{baud-rate}@code{baud-rate} holds the output
-speed of the terminal, as far as Emacs knows. Setting this variable
-does not change the speed of actual data transmission, but the value
-is used for calculations. On text-only terminals, it affects padding,
-and decisions about whether to scroll part of the screen or redraw it
-instead. It also affects the behavior of incremental search.
-
- On graphical displays, @code{baud-rate} is only used to determine
-how frequently to look for pending input during display updating. A
+speed of the terminal. Setting this variable does not change the
+speed of actual data transmission, but the value is used for
+calculations. On text-only terminals, it affects padding, and
+decisions about whether to scroll part of the screen or redraw it
+instead. It also affects the behavior of incremental search. On
+graphical displays, @code{baud-rate} is only used to determine how
+frequently to look for pending input during display updating. A
higher value of @code{baud-rate} means that check for pending input
will be done less frequently.
+@cindex mouse pointer
@cindex hourglass pointer display
+@vindex display-hourglass
@vindex hourglass-delay
- On graphical displays, Emacs can optionally display the mouse pointer
-in a special shape to say that Emacs is busy. To turn this feature on
-or off, customize the group @code{cursor}. You can also control the
-amount of time Emacs must remain busy before the busy indicator is
-displayed, by setting the variable @code{hourglass-delay}.
+ On graphical displays, Emacs displays the mouse pointer as an
+hourglass if Emacs is busy. To disable this feature, set the variable
+@code{display-hourglass} to @code{nil}. The variable
+@code{hourglass-delay} determines the number of seconds of ``busy
+time'' before the hourglass is shown; the default is 1.
+
+@vindex make-pointer-invisible
+ If the mouse pointer lies inside an Emacs frame, Emacs makes it
+invisible each time you type a character to insert text, to prevent it
+from obscuring the text. (To be precise, the hiding occurs when you
+type a ``self-inserting'' character. @xref{Inserting Text}.) Moving
+the mouse pointer makes it visible again. To disable this feature,
+set the variable @code{make-pointer-invisible} to @code{nil}.
+
+@vindex underline-minimum-offset
+@vindex x-underline-at-descent-line
+ On graphical displays, the variable @code{underline-minimum-offset}
+determines the minimum distance between the baseline and underline, in
+pixels, for underlined text. By default, the value is 1; increasing
+it may improve the legibility of underlined text for certain fonts.
+(However, Emacs will never draw the underline below the current line
+area.) The variable @code{x-underline-at-descent-line} determines how
+to draw underlined text. The default is @code{nil}, which means to
+draw it at the baseline level of the font; if you change it to
+@code{nil}, Emacs draws the underline at the same height as the font's
+descent line.
@vindex overline-margin
- On graphical displays, the variable @code{overline-margin} specifies
-the vertical position of an overline above the text, including the
-height of the overline itself, in pixels. The default value is 2.
-
-@vindex x-underline-at-descent-line
- On graphical displays, Emacs normally draws an underline at the
-baseline level of the font. If @code{x-underline-at-descent-line} is
-non-@code{nil}, Emacs draws the underline at the same height as the
-font's descent line.
+ The variable @code{overline-margin} specifies the vertical position
+of an overline above the text, including the height of the overline
+itself, in pixels; the default is 2.
@findex tty-suppress-bold-inverse-default-colors
On some text-only terminals, bold face and inverse video together
* Tool Bars:: Enabling and disabling the tool bar.
* Dialog Boxes:: Controlling use of dialog boxes.
* Tooltips:: Displaying information at the current mouse position.
-* Mouse Avoidance:: Moving the mouse pointer out of the way.
+* Mouse Avoidance:: Preventing the mouse pointer from obscuring text.
* Non-Window Terminals:: Multiple frames on terminals that show only one.
* Text-Only Mouse:: Using the mouse in text-only terminals.
@end menu
@cindex avoiding mouse in the way of your typing
@cindex mouse avoidance
+ On graphical terminals, the mouse pointer may obscure the text in
+the Emacs frame. Emacs provides two methods to avoid this problem.
+
+@vindex make-pointer-invisible
+ Firstly, Emacs hides the mouse pointer each time you type a
+self-inserting character, if the pointer lies inside an Emacs frame;
+moving the mouse pointer makes it visible again. To disable this
+feature, set the variable @code{make-pointer-invisible} to @code{nil}.
+
@vindex mouse-avoidance-mode
-Mouse Avoidance mode keeps the mouse pointer away from point, to avoid
-obscuring text you want to edit. Whenever it moves the mouse, it also
-raises the frame. To use Mouse Avoidance mode, customize the variable
-@code{mouse-avoidance-mode}. You can set this to various values to
-move the mouse in several ways:
+ Secondly, you can use Mouse Avoidance mode, a minor mode, to keep
+the mouse pointer away from point. To use Mouse Avoidance mode,
+customize the variable @code{mouse-avoidance-mode}. You can set this
+to various values to move the mouse in several ways:
@table @code
@item banish
@findex mouse-avoidance-mode
You can also use the command @kbd{M-x mouse-avoidance-mode} to enable
-the mode.
+the mode. Whenever Mouse Avoidance mode moves the mouse, it also
+raises the frame.
@node Non-Window Terminals
@section Non-Window Terminals
+2010-03-03 Glenn Morris <rgm@gnu.org>
+
+ * numbers.texi (Integer Basics, Bitwise Operations):
+ * objects.texi (Integer Type): Update for integers now being 30-bit.
+
+2010-02-27 Chong Yidong <cyd@stupidchicken.com>
+
+ * display.texi (Low-Level Font): Document :otf font-spec property.
+
2010-02-01 Stefan Monnier <monnier@iro.umontreal.ca>
* display.texi (Line Height): Avoid obsolete special default variables
@item :script
The script that the font must support (a symbol).
+
+@item :otf
+The font must be an OpenType font that supports these OpenType
+features, provided Emacs is compiled with support for @samp{libotf} (a
+library for performing complex text layout in certain scripts). The
+value must be a list of the form
+
+@smallexample
+@code{(@var{script-tag} @var{langsys-tag} @var{gsub} @var{gpos})}
+@end smallexample
+
+where @var{script-tag} is the OpenType script tag symbol;
+@var{langsys-tag} is the OpenType language system tag symbol, or
+@code{nil} to use the default language system; @code{gsub} is a list
+of OpenType GSUB feature tag symbols, or @code{nil} if none is
+required; and @code{gpos} is a list of OpenType GPOS feature tag
+symbols, or @code{nil} if none is required. If @code{gsub} or
+@code{gpos} is a list, a @code{nil} element in that list means that
+the font must not match any of the remaining tag symbols. The
+@code{gpos} element may be omitted.
@end table
@end defun
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/numbers
@node Numbers, Strings and Characters, Lisp Data Types, Top
@section Integer Basics
The range of values for an integer depends on the machine. The
-minimum range is @minus{}268435456 to 268435455 (29 bits; i.e.,
+minimum range is @minus{}536870912 to 536870911 (30 bits; i.e.,
@ifnottex
--2**28
+-2**29
@end ifnottex
@tex
-@math{-2^{28}}
+@math{-2^{29}}
@end tex
to
@ifnottex
-2**28 - 1),
+2**29 - 1),
@end ifnottex
@tex
-@math{2^{28}-1}),
+@math{2^{29}-1}),
@end tex
but some machines may provide a wider range. Many examples in this
-chapter assume an integer has 29 bits.
+chapter assume an integer has 30 bits.
@cindex overflow
The Lisp reader reads an integer as a sequence of digits with optional
1. ; @r{The integer 1.}
+1 ; @r{Also the integer 1.}
-1 ; @r{The integer @minus{}1.}
- 536870913 ; @r{Also the integer 1, due to overflow.}
+ 1073741825 ; @r{Also the integer 1, due to overflow.}
0 ; @r{The integer 0.}
-0 ; @r{The integer 0.}
@end example
bitwise operators (@pxref{Bitwise Operations}), it is often helpful to
view the numbers in their binary form.
- In 29-bit binary, the decimal integer 5 looks like this:
+ In 30-bit binary, the decimal integer 5 looks like this:
@example
-0 0000 0000 0000 0000 0000 0000 0101
+00 0000 0000 0000 0000 0000 0000 0101
@end example
@noindent
The integer @minus{}1 looks like this:
@example
-1 1111 1111 1111 1111 1111 1111 1111
+11 1111 1111 1111 1111 1111 1111 1111
@end example
@noindent
@cindex two's complement
-@minus{}1 is represented as 29 ones. (This is called @dfn{two's
+@minus{}1 is represented as 30 ones. (This is called @dfn{two's
complement} notation.)
The negative integer, @minus{}5, is creating by subtracting 4 from
@minus{}5 looks like this:
@example
-1 1111 1111 1111 1111 1111 1111 1011
+11 1111 1111 1111 1111 1111 1111 1011
@end example
- In this implementation, the largest 29-bit binary integer value is
-268,435,455 in decimal. In binary, it looks like this:
+ In this implementation, the largest 30-bit binary integer value is
+536,870,911 in decimal. In binary, it looks like this:
@example
-0 1111 1111 1111 1111 1111 1111 1111
+01 1111 1111 1111 1111 1111 1111 1111
@end example
Since the arithmetic functions do not check whether integers go
-outside their range, when you add 1 to 268,435,455, the value is the
-negative integer @minus{}268,435,456:
+outside their range, when you add 1 to 536,870,911, the value is the
+negative integer @minus{}536,870,912:
@example
-(+ 1 268435455)
- @result{} -268435456
- @result{} 1 0000 0000 0000 0000 0000 0000 0000
+(+ 1 536870911)
+ @result{} -536870912
+ @result{} 10 0000 0000 0000 0000 0000 0000 0000
@end example
Many of the functions described in this chapter accept markers for
The function @code{lsh}, like all Emacs Lisp arithmetic functions, does
not check for overflow, so shifting left can discard significant bits
and change the sign of the number. For example, left shifting
-268,435,455 produces @minus{}2 on a 29-bit machine:
+536,870,911 produces @minus{}2 on a 30-bit machine:
@example
-(lsh 268435455 1) ; @r{left shift}
+(lsh 536870911 1) ; @r{left shift}
@result{} -2
@end example
-In binary, in the 29-bit implementation, the argument looks like this:
+In binary, in the 30-bit implementation, the argument looks like this:
@example
@group
-;; @r{Decimal 268,435,455}
-0 1111 1111 1111 1111 1111 1111 1111
+;; @r{Decimal 536,870,911}
+01 1111 1111 1111 1111 1111 1111 1111
@end group
@end example
@example
@group
;; @r{Decimal @minus{}2}
-1 1111 1111 1111 1111 1111 1111 1110
+11 1111 1111 1111 1111 1111 1111 1110
@end group
@end example
@end defun
@group
(ash -6 -1) @result{} -3
;; @r{Decimal @minus{}6 becomes decimal @minus{}3.}
-1 1111 1111 1111 1111 1111 1111 1010
+11 1111 1111 1111 1111 1111 1111 1010
@result{}
-1 1111 1111 1111 1111 1111 1111 1101
+11 1111 1111 1111 1111 1111 1111 1101
@end group
@end example
@example
@group
-(lsh -6 -1) @result{} 268435453
-;; @r{Decimal @minus{}6 becomes decimal 268,435,453.}
-1 1111 1111 1111 1111 1111 1111 1010
+(lsh -6 -1) @result{} 536870909
+;; @r{Decimal @minus{}6 becomes decimal 536,870,909.}
+11 1111 1111 1111 1111 1111 1111 1010
@result{}
-0 1111 1111 1111 1111 1111 1111 1101
+01 1111 1111 1111 1111 1111 1111 1101
@end group
@end example
@c with smallbook but not with regular book! --rjc 16mar92
@smallexample
@group
- ; @r{ 29-bit binary values}
+ ; @r{ 30-bit binary values}
-(lsh 5 2) ; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
- @result{} 20 ; = @r{0 0000 0000 0000 0000 0000 0001 0100}
+(lsh 5 2) ; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
+ @result{} 20 ; = @r{00 0000 0000 0000 0000 0000 0001 0100}
@end group
@group
(ash 5 2)
@result{} 20
-(lsh -5 2) ; -5 = @r{1 1111 1111 1111 1111 1111 1111 1011}
- @result{} -20 ; = @r{1 1111 1111 1111 1111 1111 1110 1100}
+(lsh -5 2) ; -5 = @r{11 1111 1111 1111 1111 1111 1111 1011}
+ @result{} -20 ; = @r{11 1111 1111 1111 1111 1111 1110 1100}
(ash -5 2)
@result{} -20
@end group
@group
-(lsh 5 -2) ; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
- @result{} 1 ; = @r{0 0000 0000 0000 0000 0000 0000 0001}
+(lsh 5 -2) ; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
+ @result{} 1 ; = @r{00 0000 0000 0000 0000 0000 0000 0001}
@end group
@group
(ash 5 -2)
@result{} 1
@end group
@group
-(lsh -5 -2) ; -5 = @r{1 1111 1111 1111 1111 1111 1111 1011}
- @result{} 134217726 ; = @r{0 0111 1111 1111 1111 1111 1111 1110}
+(lsh -5 -2) ; -5 = @r{11 1111 1111 1111 1111 1111 1111 1011}
+ @result{} 268435454 ; = @r{00 0111 1111 1111 1111 1111 1111 1110}
@end group
@group
-(ash -5 -2) ; -5 = @r{1 1111 1111 1111 1111 1111 1111 1011}
- @result{} -2 ; = @r{1 1111 1111 1111 1111 1111 1111 1110}
+(ash -5 -2) ; -5 = @r{11 1111 1111 1111 1111 1111 1111 1011}
+ @result{} -2 ; = @r{11 1111 1111 1111 1111 1111 1111 1110}
@end group
@end smallexample
@end defun
@smallexample
@group
- ; @r{ 29-bit binary values}
+ ; @r{ 30-bit binary values}
-(logand 14 13) ; 14 = @r{0 0000 0000 0000 0000 0000 0000 1110}
- ; 13 = @r{0 0000 0000 0000 0000 0000 0000 1101}
- @result{} 12 ; 12 = @r{0 0000 0000 0000 0000 0000 0000 1100}
+(logand 14 13) ; 14 = @r{00 0000 0000 0000 0000 0000 0000 1110}
+ ; 13 = @r{00 0000 0000 0000 0000 0000 0000 1101}
+ @result{} 12 ; 12 = @r{00 0000 0000 0000 0000 0000 0000 1100}
@end group
@group
-(logand 14 13 4) ; 14 = @r{0 0000 0000 0000 0000 0000 0000 1110}
- ; 13 = @r{0 0000 0000 0000 0000 0000 0000 1101}
- ; 4 = @r{0 0000 0000 0000 0000 0000 0000 0100}
- @result{} 4 ; 4 = @r{0 0000 0000 0000 0000 0000 0000 0100}
+(logand 14 13 4) ; 14 = @r{00 0000 0000 0000 0000 0000 0000 1110}
+ ; 13 = @r{00 0000 0000 0000 0000 0000 0000 1101}
+ ; 4 = @r{00 0000 0000 0000 0000 0000 0000 0100}
+ @result{} 4 ; 4 = @r{00 0000 0000 0000 0000 0000 0000 0100}
@end group
@group
(logand)
- @result{} -1 ; -1 = @r{1 1111 1111 1111 1111 1111 1111 1111}
+ @result{} -1 ; -1 = @r{11 1111 1111 1111 1111 1111 1111 1111}
@end group
@end smallexample
@end defun
@smallexample
@group
- ; @r{ 29-bit binary values}
+ ; @r{ 30-bit binary values}
-(logior 12 5) ; 12 = @r{0 0000 0000 0000 0000 0000 0000 1100}
- ; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
- @result{} 13 ; 13 = @r{0 0000 0000 0000 0000 0000 0000 1101}
+(logior 12 5) ; 12 = @r{00 0000 0000 0000 0000 0000 0000 1100}
+ ; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
+ @result{} 13 ; 13 = @r{00 0000 0000 0000 0000 0000 0000 1101}
@end group
@group
-(logior 12 5 7) ; 12 = @r{0 0000 0000 0000 0000 0000 0000 1100}
- ; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
- ; 7 = @r{0 0000 0000 0000 0000 0000 0000 0111}
- @result{} 15 ; 15 = @r{0 0000 0000 0000 0000 0000 0000 1111}
+(logior 12 5 7) ; 12 = @r{00 0000 0000 0000 0000 0000 0000 1100}
+ ; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
+ ; 7 = @r{00 0000 0000 0000 0000 0000 0000 0111}
+ @result{} 15 ; 15 = @r{00 0000 0000 0000 0000 0000 0000 1111}
@end group
@end smallexample
@end defun
@smallexample
@group
- ; @r{ 29-bit binary values}
+ ; @r{ 30-bit binary values}
-(logxor 12 5) ; 12 = @r{0 0000 0000 0000 0000 0000 0000 1100}
- ; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
- @result{} 9 ; 9 = @r{0 0000 0000 0000 0000 0000 0000 1001}
+(logxor 12 5) ; 12 = @r{00 0000 0000 0000 0000 0000 0000 1100}
+ ; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
+ @result{} 9 ; 9 = @r{00 0000 0000 0000 0000 0000 0000 1001}
@end group
@group
-(logxor 12 5 7) ; 12 = @r{0 0000 0000 0000 0000 0000 0000 1100}
- ; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
- ; 7 = @r{0 0000 0000 0000 0000 0000 0000 0111}
- @result{} 14 ; 14 = @r{0 0000 0000 0000 0000 0000 0000 1110}
+(logxor 12 5 7) ; 12 = @r{00 0000 0000 0000 0000 0000 0000 1100}
+ ; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
+ ; 7 = @r{00 0000 0000 0000 0000 0000 0000 0111}
+ @result{} 14 ; 14 = @r{00 0000 0000 0000 0000 0000 0000 1110}
@end group
@end smallexample
@end defun
@example
(lognot 5)
@result{} -6
-;; 5 = @r{0 0000 0000 0000 0000 0000 0000 0101}
+;; 5 = @r{00 0000 0000 0000 0000 0000 0000 0101}
;; @r{becomes}
-;; -6 = @r{1 1111 1111 1111 1111 1111 1111 1010}
+;; -6 = @r{11 1111 1111 1111 1111 1111 1111 1010}
@end example
@end defun
@node Integer Type
@subsection Integer Type
- The range of values for integers in Emacs Lisp is @minus{}268435456 to
-268435455 (29 bits; i.e.,
+ The range of values for integers in Emacs Lisp is @minus{}536870912 to
+536870911 (30 bits; i.e.,
@ifnottex
--2**28
+-2**29
@end ifnottex
@tex
-@math{-2^{28}}
+@math{-2^{29}}
@end tex
to
@ifnottex
-2**28 - 1)
+2**29 - 1)
@end ifnottex
@tex
-@math{2^{28}-1})
+@math{2^{29}-1})
@end tex
on most machines. (Some machines may provide a wider range.) It is
important to note that the Emacs Lisp arithmetic functions do not check
-for overflow. Thus @code{(1+ 268435455)} is @minus{}268435456 on most
+for overflow. Thus @code{(1+ 536870911)} is @minus{}536870912 on most
machines.
The read syntax for integers is a sequence of (base ten) digits with an
1 ; @r{The integer 1.}
1. ; @r{Also the integer 1.}
+1 ; @r{Also the integer 1.}
-536870913 ; @r{Also the integer 1 on a 29-bit implementation.}
+1073741825 ; @r{Also the integer 1 on a 30-bit implementation.}
@end group
@end example
+2010-03-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * faq.texi (Escape sequences in shell output): Note that ansi-color is
+ now enabled by default.
+
+2010-02-28 Michael Albinus <michael.albinus@gmx.de>
+
+ * dbus.texi (Errors and Events): D-Bus messages are retrieved only,
+ when Emacs runs in interactive mode. (Bug#5645)
+
2010-02-16 Glenn Morris <rgm@gnu.org>
* nxml-mode.texi (Commands for locating a schema): Fix keybinding.
@code{t}.
@end defspec
-Incoming D-Bus messages are handled as Emacs events (see @pxref{Misc
-Events, , , elisp}). The generated event has this form:
+Incoming D-Bus messages are handled as Emacs events, see @pxref{Misc
+Events, , , elisp}. They are retrieved only, when Emacs runs in
+interactive mode. The generated event has this form:
@lisp
(dbus-event @var{bus} @var{type} @var{serial} @var{service} @var{path} @var{interface} @var{member} @var{handler}
@cindex Escape sequences in @code{ls} output
@cindex @code{ls} in Shell mode
-This happens because @code{ls} is aliased to @samp{ls --color} in your
-shell init file. You have two alternatives to solve this:
-
-@itemize @bullet
-@item
-Make the alias conditioned on the @code{EMACS} variable in the
-environment. When Emacs runs a subsidiary shell, it exports the
-@code{EMACS} variable to that shell, with value equal to the absolute
-file name of Emacs. You can
-unalias @code{ls} when that happens, thus limiting the alias to your
-interactive sessions.
-
-@item
-Install the @code{ansi-color} package (bundled with Emacs 21.1 and
-later), which converts these ANSI escape sequences into colors.
-@end itemize
+In many systems, @code{ls} is aliased to @samp{ls --color}, which
+prints using ANSI color escape sequences. Emacs version 21.1 and
+later includes the @code{ansi-color} package, which lets Shell mode
+recognize these escape sequences. In Emacs 23.2 and later, the
+package is enabled by default; in earlier versions you can enable it
+by typing @kbd{M-x ansi-color-for-comint-mode} in the Shell buffer, or
+by adding @code{(add-hook 'shell-mode-hook
+'ansi-color-for-comint-mode-on)} to your init file.
+
+In Emacs versions before 21.1, the @code{ansi-color} package is not
+included. In that case, you need to unalias @code{ls} for interactive
+shells running in Emacs; this can be done by checking the @code{EMACS}
+variable in the environment.
@node Fullscreen mode on MS-Windows
@section How can I start Emacs in fullscreen mode on MS-Windows?
+2010-03-06 Glenn Morris <rgm@gnu.org>
+
+ * srecode/default.srt (COPYRIGHT): Update template copyright to GPLv3+.
+
+2010-03-05 Glenn Morris <rgm@gnu.org>
+
+ * refcards/orgcard.tex: Use pdflayout.sty.
+ * refcards/Makefile (orgcard.pdf): Special rule no longer needed.
+
+2010-03-02 Glenn Morris <rgm@gnu.org>
+
+ * refcards/Makefile: For cs- and sk-, use pdfcsplain if available.
+ (pl-refcard.pdf): Let presence of pdfmex be another test for the
+ required TeX files. Pass explicit output-format to tex command.
+ (orgcard.pdf): Use ps2pdf, since pdftex tends to produce a
+ portrait layout rather than the desired landscape.
+
+2010-03-01 Glenn Morris <rgm@gnu.org>
+
+ * refcards/pl-refcard.tex: Double forward-slashes in URL for Mex.
+
+ * refcards/de-refcard.tex: Fix paren typo.
+
+ * refcards/ru-refcard.tex: Rename \year command to \cyear, since
+ the former seems to be already used in some TeX installations.
+
+ * refcards/calccard.tex, refcards/cs-dired-ref.tex:
+ * refcards/cs-refcard.tex, refcards/cs-survival.tex:
+ * refcards/de-refcard.tex, refcards/dired-ref.tex:
+ * refcards/fr-dired-ref.tex, refcards/fr-refcard.tex:
+ * refcards/fr-survival.tex, refcards/orgcard.pdf:
+ * refcards/orgcard.tex, refcards/pl-refcard.tex:
+ * refcards/pt-br-refcard.tex, refcards/refcard.tex:
+ * refcards/ru-refcard.tex, refcards/sk-dired-ref.tex:
+ * refcards/sk-refcard.tex, refcards/sk-survival.tex:
+ * refcards/survival.tex, refcards/vipcard.tex:
+ * refcards/viperCard.tex: Update short copyright year to 2010.
+
2010-02-26 Glenn Morris <rgm@gnu.org>
* tutorials/TUTORIAL.es, tutorials/TUTORIAL.pt_BR:
2010-02-14 Chong Yidong <cyd@stupidchicken.com>
- * etc/images/custom/down-pushed.xpm, etc/images/custom/down.xpm:
- * etc/images/custom/right-pushed.xpm:
- * etc/images/custom/right-pushed.xpm: Increase height by four
+ * images/custom/down-pushed.xpm, images/custom/down.xpm:
+ * images/custom/right-pushed.xpm:
+ * images/custom/right-pushed.xpm: Increase height by four
pixels, to improve text alignment.
2010-01-16 Mario Lang <mlang@delysid.org>
2010-01-14 Nick Roberts <nickrob@snap.net.nz>
- * etc/images/gud/recstart.xpm, etc/images/gud/recstop.xpm:
- * etc/images/gud/rcont.xpm, etc/images/gud/rnext.xpm:
- * etc/images/gud/rfinish.xpm, etc/images/gud/rnexti.xpm:
- * etc/images/gud/rstep.xpm, etc/images/gud/rstepi.xpm:
+ * images/gud/recstart.xpm, images/gud/recstop.xpm:
+ * images/gud/rcont.xpm, images/gud/rnext.xpm:
+ * images/gud/rfinish.xpm, images/gud/rnexti.xpm:
+ * images/gud/rstep.xpm, images/gud/rstepi.xpm:
New icons for reverse debugging.
2010-01-14 Juanma Barranquero <lekktu@gmail.com>
* images/gud/ni.xpm, images/gud/ni.xpm
* images/gud/s.xpm, images/gud/s.xpm
* images/gud/si.xpm, images/gud/si.xpm: Rename to
- next.*, nexti.*, step.*, and stepi.* , respectively, as the
+ next.*, nexti.*, step.*, and stepi.*, respectively, as the
file-name no longer clashes on 8+3 filesystems.
2005-10-14 Bill Wohler <wohler@newt.com>
KDE, and XFCE desktops. (This change has no effect on Windows, which
uses `system-move-file-to-trash' for trashing.)
++++
** The pointer now becomes invisible when typing.
Customize `make-pointer-invisible' to disable this feature.
** Function arguments in *Help* buffers are now shown in upper-case.
Customize `help-downcase-arguments' to t to show them in lower-case.
-** Delete Auto Composition Mode. Now the variable
-`auto-composition-mode' is simply a buffer local variable. The
-commands `auto-composition-mode' and `global-auto-composition-mode'
-still works as before.
-
\f
* Editing Changes in Emacs 23.2
** nXML mode is now the default for editing XML files.
** Shell
-
++++
*** ansi-color is now enabled by default.
To disable it, set ansi-color-for-comint-mode to nil.
*** Customize `elint-ignored-warnings' to suppress some warnings.
** Miscellaneous
-
++++
*** The new command `async-shell-command' bound globally to `M-&' executes
the command asynchronously without the need to manually add ampersand to
the end of the command. Its output appears in the buffer `*Async Shell
\f
* Incompatible Lisp Changes in Emacs 23.2
+---
** Several obsolete functions removed.
The functions have been obsolete since Emacs 19, and are unlikely to
be in use:
cs-refcard.pdf cs-dired-ref.pdf cs-survival.pdf sk-refcard.pdf \
sk-dired-ref.pdf sk-survival.pdf: %.pdf: %.tex
- csplain "\pdfoutput=1\input $<"
+ if pdfcsplain --version > /dev/null 2> /dev/null; then \
+ pdfcsplain $<; \
+ else \
+ csplain "\pdfoutput=1\input $<"; \
+ fi
+## Some versions of pdfmex seem to create dvi by default, hence output-format.
pl-refcard.pdf: %.pdf: %.tex
- if ! kpsewhich -format=fmt mex > /dev/null; then \
+ if ! kpsewhich -format=fmt mex > /dev/null && \
+ ! pdfmex --version > /dev/null 2> /dev/null; then \
echo "No mex format found."; false; \
fi
- pdftex $<
+ pdftex -output-format=pdf $<
ru-refcard.pdf: %.pdf: %.tex
pdflatex $<
pdftex $<
-
## dvi files.
cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi sk-refcard.dvi \
% Typical command to format: tex calccard.tex
% Typical command to print (3 cols): dvips -t landscape calccard.dvi
-% Copyright (C) 1987, 1992, 2001, 2002, 2003, 2004,
-% 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+% 2008, 2009, 2010 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
% Internet: gildea@stop.mail-abuse.org
\def\emacsversionnumber{23}
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
\chyph
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
\mdqoff % deactivates the "-char
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed below this line.
F\"ur Kopien des Handbuchs zu GNU Emacs:
-\tt http://www.gnu.org/software/emacs/\#Manuals}
+{\tt http://www.gnu.org/software/emacs/\#Manuals}
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
\pdflayout=(1)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
\pdflayout=(0l)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed below this line.
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
% Reference Card for Org Mode
\def\orgversionnumber{6.33x}
\def\versionyear{2009} % latest update
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
%**start of header
\newcount\columnsperpage
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here.
-
\columnsperpage=3
% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper. Useful
% only when columnsperpage is 2 or 3.
-
\letterpaper=0
+% PDF output layout. 0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+\input pdflayout.sty
+\pdflayout=(0l)
+
% Nothing else needs to be changed below this line.
% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
For copies of the GNU Emacs manual, see:
-{\tt http://www.gnu.org/software/emacs/\#Manuals}
+{\tt http:////www.gnu.org//software//emacs//\#Manuals}
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
\pdflayout=(0l)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed below this line.
% Nothing else needs to be changed below this line.
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % copyright year
+\def\year{2010} % copyright year
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
\setlength{\ColThreeWidth}{25mm}
\newcommand{\versionemacs}[0]{23} % version of Emacs this is for
-\newcommand{\year}[0]{2009} % copyright year
+\newcommand{\cyear}[0]{2010} % copyright year
\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill
- \centerline{\footnotesize \copyright\ \year\ Free Software Foundation, Inc.
+ \centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc.
Permissions on back.}}
\newcommand\copyrightnotice[0]{
\vskip 1ex plus 2 fill\begingroup\footnotesize
-\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
+\centerline{Copyright \copyright\ \cyear\ Free Software Foundation, Inc.}
\centerline{For GNU Emacs version \versionemacs}
\centerline{Designed by Stephen Gildea}
\centerline{ðÅÒÅ×ÏÄ Alex Ott <alexott@gmail.com>}
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
% Nothing else needs to be changed.
\shyph
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
\pdflayout=(1)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
\pdflayout=(1)
\def\versionemacs{18} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\versionvip{3.5}
% Nothing else needs to be changed.
\pdflayout=(1)
\def\versionemacs{21} % version of Emacs this is for
-\def\year{2009} % latest copyright year
+\def\year{2010} % latest copyright year
\def\versionxemacs{20} % version of XEmacs this is for
\def\versionviper{3.0} % version of Viper this is for
set COPYRIGHT "This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2, or (at
-your option) any later version.
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
General Public License for more details.
You should have received a copy of the GNU General Public License
-along with this program; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA."
+along with this program. If not, see http://www.gnu.org/licenses/."
set DOLLAR "$"
+2010-03-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * vc-git.el: Re-flow to fit into 80 columns.
+ (vc-git-after-dir-status-stage, vc-git-dir-status-goto-stage):
+ Remove spurious `quote' element in each case alternative.
+ (vc-git-show-log-entry): Use prog1.
+ (vc-git-after-dir-status-stage): Remove unused var `remaining'.
+
+2010-03-06 Glenn Morris <rgm@gnu.org>
+
+ * cedet/semantic/grammar.el (semantic-grammar-header-template):
+ Update template copyright to GPLv3+.
+
+2010-03-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * man.el (Man-files-regexp): Tighten up the regexp (bug#5686).
+
+2010-03-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * macros.el (insert-kbd-macro): Look up keyboard macro using the
+ definition, not the name (Bug#5481).
+
+2010-03-03 Štěpán Němec <stepnem@gmail.com> (tiny change)
+
+ * subr.el (momentary-string-display): Don't overwrite the MESSAGE
+ argument with a local variable. (Bug#5670)
+
+2010-03-02 Juri Linkov <juri@jurta.org>
+
+ * info.el (Info-index-next): Decrement line number by 2. (Bug#5652)
+
+2010-03-02 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix an
+ error when FILENAME and NEWNAME are existing remote directories.
+
+ * net/tramp-compat.el (tramp-compat-make-temp-file): Add optional
+ parameter DIR-FLAG.
+
+2010-03-02 Glenn Morris <rgm@gnu.org>
+
+ * calendar/cal-hebrew.el (holiday-hebrew-passover): Fix date
+ of Yom HaAtzma'ut when it falls on a Monday (rule changed in 2004).
+
+2010-03-01 Alan Mackenzie <acm@muc.de>
+
+ * progmodes/cc-engine.el (c-remove-stale-state-cache):
+ Correct previous patch.
+
+2010-03-01 Kenichi Handa <handa@m17n.org>
+
+ * language/burmese.el (burmese-composable-pattern): Rename from
+ myanmar-composable-pattern.
+
+ * international/characters.el (script-list):
+ * international/fontset.el (script-representative-chars):
+ Change myanmar to burmese.
+ (otf-script-alist): Likewise.
+ (setup-default-fontset): Likewise. Re-fix :otf spec.
+
+2010-03-01 Alan Mackenzie <bug-cc-mode@gnu.org>
+
+ * cc-engine.el (c-remove-stale-state-cache): Take account of when
+ `good-pos' is in the same macro as `here'. Fixes bug 5649.
+
+2010-02-28 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * menu-bar.el (menu-bar-manuals-menu): Fix typo.
+
+2010-02-28 Jan Djärv <jan.h.d@swipnet.se>
+
+ * scroll-bar.el (scroll-bar-drag-1): Add save-excursion, bug #5654.
+
+2010-02-28 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-handle-write-region): START can be a string.
+ Take care in the checks. Reported by Dan Davison
+ <davison@stats.ox.ac.uk>.
+
+2010-02-28 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/dbus.el (dbus-introspect, dbus-get-property)
+ (dbus-set-property, dbus-get-all-properties): Use
+ `dbus-call-method' when noninteractive. (Bug#5645)
+
+2010-02-28 Chong Yidong <cyd@stupidchicken.com>
+
+ * textmodes/reftex-toc.el (reftex-toc-promote-prepare):
+ * emacs-lisp/elint.el (elint-add-required-env):
+ * cedet/semantic/db-find.el
+ (semanticdb-find-translate-path-brutish-default):
+ * cedet/ede/make.el (ede-make-check-version):
+ * calendar/icalendar.el (icalendar--add-diary-entry):
+ * calc/calcalg2.el (math-tracing-integral):
+ * files.el (recover-session-finish): Use with-current-buffer
+ instead of save-excursion.
+
+2010-02-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Fix in-buffer completion when after-change-functions modify the buffer.
+ * minibuffer.el (completion--replace): New function.
+ (completion--do-completion): Use it and use relative movement.
+
+2010-02-27 Chong Yidong <cyd@stupidchicken.com>
+
+ * international/fontset.el (setup-default-fontset): Fix :otf spec.
+
2010-02-27 Jeremy Whitlock <jcscoobyrs@gmail.com> (tiny change)
- * progmodes/python.el (python-pdbtrack-stack-entry-regexp): Allow
- the characters _<> in the stack entry (Bug#5653).
+ * progmodes/python.el (python-pdbtrack-stack-entry-regexp):
+ Allow the characters _<> in the stack entry (Bug#5653).
2010-02-26 Kenichi Handa <handa@m17n.org>
(defmacro math-tracing-integral (&rest parts)
(list 'and
'trace-buffer
- (list 'save-excursion
- '(set-buffer trace-buffer)
+ (list 'with-current-buffer
+ 'trace-buffer
'(goto-char (point-max))
(list 'and
'(bolp)
(+ abs-p 18)
(if (= (% abs-p 7) 6)
(+ abs-p 19)
- (+ abs-p 20))))
+ (if (= (% abs-p 7) 2)
+ (+ abs-p 21)
+ (+ abs-p 20)))))
"Yom HaAtzma'ut")
(list (calendar-gregorian-from-absolute (+ abs-p 33))
"Lag BaOmer")
'make-diary-entry)
string non-marking diary-file)))
;; Würgaround to remove the trailing blank char
- (save-excursion
- (set-buffer (find-file diary-file))
+ (with-current-buffer (find-file diary-file)
(goto-char (point-max))
(if (= (char-before) ? )
(delete-char -1)))
(rev nil)
(ans nil)
)
- (save-excursion
+ (with-current-buffer b
;; Setup, and execute make.
- (set-buffer b)
(setq default-directory cd)
(erase-buffer)
(call-process ede-make-command nil b nil
(cond ((null path) semanticdb-current-database)
((semanticdb-table-p path) (oref path parent-db))
(t (let ((tt (semantic-something-to-tag-table path)))
- (save-excursion
- ;; @todo - What does this DO ??!?!
- (set-buffer (semantic-tag-buffer (car tt)))
+ ;; @todo - What does this DO ??!?!
+ (with-current-buffer (semantic-tag-buffer (car tt))
semanticdb-current-database))))))
(apply
#'nconc
;; X-RCS: " vcid "
;; This file is not part of GNU Emacs.
-;;
+
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-;;
+;; published by the Free Software Foundation, either version 3 of
+;; the License, or (at your option) any later version.
+
;; This software is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;
;; (Messes up the "Initializing elint..." message.)
;;; (message nil)
(if lib
- (save-excursion
+ (with-current-buffer (find-file-noselect lib)
;; FIXME this doesn't use a temp buffer, because it
;; stores the result in buffer-local variables so that
;; it can be reused.
- (set-buffer (find-file-noselect lib))
(elint-update-env)
(setq env (elint-env-add-env env elint-buffer-env)))
;;; (with-temp-buffer
(dired-unmark 1)
(dired-do-flagged-delete t)
(unwind-protect
- (save-excursion
+ (with-current-buffer buffer
;; Read in the auto-save-list file.
- (set-buffer buffer)
(erase-buffer)
(insert-file-contents file)
;; Loop thru the text of that file
num (1- num)))
(Info-goto-node (nth 1 (car Info-index-alternatives)))
(if (> (nth 3 (car Info-index-alternatives)) 0)
- (forward-line (1- (nth 3 (car Info-index-alternatives))))
+ ;; Forward 2 lines less because `Info-find-node-2' initially
+ ;; puts point to the 2nd line.
+ (forward-line (- (nth 3 (car Info-index-alternatives)) 2))
(forward-line 3) ; don't search in headers
(let ((name (car (car Info-index-alternatives))))
(Info-find-index-name name)))
(#x0E00 #x0E5F thai)
(#x0E80 #x0EDF lao)
(#x0F00 #x0FFF tibetan)
- (#x1000 #x109F myanmar)
+ (#x1000 #x109F burmese)
(#x10A0 #x10FF georgian)
(#x1100 #x11FF hangul)
(#x1200 #x139F ethiopic)
(#x3400 #x9FAF han)
(#xA000 #xA4CF yi)
(#xAA00 #xAA5F cham)
- (#xAA60 #xAA7B myanmar)
+ (#xAA60 #xAA7B burmese)
(#xAA80 #xAADF tai-viet)
(#xAC00 #xD7AF hangul)
(#xF900 #xFAFF han)
(thai #xE17)
(lao #xEA5)
(tibetan #xF40)
- (myanmar #x1000)
+ (burmese #x1000)
(georgian #x10D3)
(ethiopic #x1208)
(cherokee #x13B6)
(math . mathematical)
(mong . mongolian)
(musc . musical-symbol)
- (mymr . myanmar)
+ (mymr . burmese)
(nko\ . nko)
(ogam . ogham)
(ital . old_italic)
(sinhala ,(font-spec :registry "iso10646-1" :otf '(sinh nil (akhn))))
(malayalam ,(font-spec :registry "iso10646-1" :otf '(mlym nil (akhn))))
- (myanmar ,(font-spec :registry "iso10646-1" :otf '(mymr))
- ,(font-spec :registry "iso10646-1" :script 'myanmar))
+ (burmese ,(font-spec :registry "iso10646-1" :otf '(mymr nil nil))
+ ,(font-spec :registry "iso10646-1" :script 'burmese))
(lao ,(font-spec :registry "iso10646-1" :otf '(lao\ nil nil (mark)))
,(font-spec :registry "iso10646-1" :script 'lao)
(sample-text . "Burmese (မ္ရန္မာ) မင္ဂလာပာ")
(documentation . t)))
-(defvar myanmar-composable-pattern
+(defvar burmese-composable-pattern
(let ((table
'(("K" . "[\u1004\u105A]\u103A\u1039") ; KINZI sequence
("C" . "[\u1000-\u102A\u103F\u1041-\u1049\u104E\u105A-\u105D\u1061\u1065-\u1066\u106E\u1071\u1075\u1081\u108E\uAA60-\uAA6F\uAA71-\uAA76]") ; consonant and vowel letter
regexp t t))))
regexp))
-(let ((elt (list (vector myanmar-composable-pattern 0 'font-shape-gstring)
+(let ((elt (list (vector burmese-composable-pattern 0 'font-shape-gstring)
(vector "." 0 'font-shape-gstring))))
(set-char-table-range composition-function-table '(#x1000 . #x107F) elt)
(set-char-table-range composition-function-table '(#xAA60 . #xAA7B) elt))
(prin1 definition (current-buffer))))
(insert ")\n")
(if keys
- (let ((keys (where-is-internal macroname '(keymap))))
+ (let ((keys (where-is-internal (symbol-function macroname)
+ '(keymap))))
(while keys
(insert "(global-set-key ")
(prin1 (car keys) (current-buffer))
"Regular expression for SYNOPSIS heading (or your equivalent).
This regexp should not start with a `^' character.")
-(defvar Man-files-regexp "FILES"
+(defvar Man-files-regexp "FILES\\>"
+ ;; Add \> so as not to match mount(8)'s FILESYSTEM INDEPENDENT MOUNT OPTIONS.
"Regular expression for FILES heading (or your equivalent).
This regexp should not start with a `^' character.")
(define-key menu-bar-manuals-menu [emacs-lisp-reference]
`(menu-item ,(purecopy "Emacs Lisp Reference") menu-bar-read-lispref
:help ,(purecopy "Read the Emacs Lisp Reference manual")))
-(define-key menu-bar-manuals-menu [emac-lisp-intro]
+(define-key menu-bar-manuals-menu [emacs-lisp-intro]
`(menu-item ,(purecopy "Introduction to Emacs Lisp") menu-bar-read-lispintro
:help ,(purecopy "Read the Introduction to Emacs Lisp Programming")))
;; - extend `boundaries' to provide various other meta-data about the
;; output of `all-completions':
+;; - preferred sorting order when displayed in *Completions*.
+;; - annotations/text-properties to add when displayed in *Completions*.
;; - quoting/unquoting (so we can complete files names with envvars
;; and backslashes, and all-completion can list names without
;; quoting backslashes and dollars).
(if completions 2 0)
(if exact 1 0)))
+(defun completion--replace (beg end newtext)
+ "Replace the buffer text between BEG and END with NEWTEXT.
+Moves point to the end of the new text."
+ ;; This should be in subr.el.
+ ;; You'd think this is trivial to do, but details matter if you want
+ ;; to keep markers "at the right place" and be robust in the face of
+ ;; after-change-functions that may themselves modify the buffer.
+ (goto-char beg)
+ (insert newtext)
+ (delete-region (point) (+ (point) (- end beg))))
+
(defun completion--do-completion (&optional try-completion-function)
"Do the completion and return a summary of what happened.
M = completion was performed, the text was Modified.
string nil nil t))))
(unchanged (eq t (compare-strings completion nil nil
string nil nil nil))))
- (unless unchanged
-
- ;; Insert in minibuffer the chars we got.
+ (if unchanged
(goto-char end)
- (insert completion)
- (delete-region beg end))
- ;; Move point.
- (goto-char (+ beg comp-pos))
+ ;; Insert in minibuffer the chars we got.
+ (completion--replace beg end completion))
+ ;; Move point to its completion-mandated destination.
+ (forward-char (- comp-pos (length completion)))
(if (not (or unchanged completed))
;; The case of the string changed, but that's all. We're not sure
(when completions
(let* ((re (completion-pcm--pattern->regex pattern '(point)))
(case-fold-search completion-ignore-case))
- ;; Remove base-size during mapcar, and add it back later.
(mapcar
(lambda (str)
;; Don't modify the string itself.
;; is used, because the handler can be registered in our Emacs
;; instance; caller an callee would block each other.
(dbus-ignore-errors
- (dbus-call-method-non-blocking
+ (funcall
+ (if noninteractive 'dbus-call-method 'dbus-call-method-non-blocking)
bus service path dbus-interface-introspectable "Introspect")))
(defun dbus-introspect-xml (bus service path)
(dbus-ignore-errors
;; "Get" returns a variant, so we must use the `car'.
(car
- (dbus-call-method-non-blocking
+ (funcall
+ (if noninteractive 'dbus-call-method 'dbus-call-method-non-blocking)
bus service path dbus-interface-properties
"Get" :timeout 500 interface property))))
returned."
(dbus-ignore-errors
;; "Set" requires a variant.
- (dbus-call-method-non-blocking
+ (funcall
+ (if noninteractive 'dbus-call-method 'dbus-call-method-non-blocking)
bus service path dbus-interface-properties
"Set" :timeout 500 interface property (list :variant value))
;; Return VALUE.
;; "GetAll" returns "a{sv}".
(let (result)
(dolist (dict
- (dbus-call-method-non-blocking
+ (funcall
+ (if noninteractive
+ 'dbus-call-method
+ 'dbus-call-method-non-blocking)
bus service path dbus-interface-properties
"GetAll" :timeout 500 interface)
result)
;; has been introduced with Emacs 22. We try it, if it fails, we fall
;; back to `make-temp-name', creating the temporary file immediately
;; in order to avoid a security hole.
-(defsubst tramp-compat-make-temp-file (filename)
+(defsubst tramp-compat-make-temp-file (filename &optional dir-flag)
"Create a temporary file (compat function).
Add the extension of FILENAME, if existing."
(let* (file-name-handler-alist
result)
(condition-case nil
(setq result
- (funcall (symbol-function 'make-temp-file) prefix nil extension))
+ (funcall
+ (symbol-function 'make-temp-file) prefix dir-flag extension))
(error
;; We use our own implementation, taken from files.el.
(while
(condition-case ()
(progn
(setq result (concat (make-temp-name prefix) extension))
- (write-region
- "" nil result nil 'silent nil
- ;; 7th parameter is MUSTBENEW in Emacs, and
- ;; CODING-SYSTEM in XEmacs. It is not a security
- ;; hole in XEmacs if we cannot use this parameter,
- ;; because XEmacs uses a user-specific subdirectory
- ;; with 0700 permissions.
- (when (not (featurep 'xemacs)) 'excl))
+ (if dir-flag
+ (make-directory result)
+ (write-region
+ "" nil result nil 'silent nil
+ ;; 7th parameter is MUSTBENEW in Emacs, and
+ ;; CODING-SYSTEM in XEmacs. It is not a security
+ ;; hole in XEmacs if we cannot use this parameter,
+ ;; because XEmacs uses a user-specific
+ ;; subdirectory with 0700 permissions.
+ (when (not (featurep 'xemacs)) 'excl)))
nil)
(file-already-exists t))
;; The file was somehow created by someone else between
;; Both are Tramp files. We shall optimize it, when the
;; methods for filename and newname are the same.
- (let ((tmpfile
- (if (file-regular-p filename)
- (tramp-compat-make-temp-file localname)
- (make-temp-name
- (expand-file-name
- tramp-temp-name-prefix
- (tramp-compat-temporary-file-directory))))))
+ (let* ((dir-flag (file-directory-p filename))
+ (tmpfile (tramp-compat-make-temp-file localname dir-flag)))
+ (if dir-flag
+ (setq tmpfile
+ (expand-file-name
+ (file-name-nondirectory newname) tmpfile)))
(unwind-protect
(progn
(tramp-do-copy-or-rename-file-out-of-band
'rename tmpfile newname keep-date))
;; Save exit.
(condition-case nil
- (if (file-regular-p tmpfile)
- (delete-file tmpfile)
- (delete-directory tmpfile 'recursive))
+ (if dir-flag
+ (delete-directory
+ (expand-file-name ".." tmpfile) 'recursive)
+ (delete-file tmpfile))
(error))))
;; Expand hops. Might be necessary for gateway methods.
;; encoding function, then that is used for encoding the
;; contents of the tmp file.
(cond
- ;; `rename-file' handles direct copy and out-of-band methods.
+ ;; `copy-file' handles direct copy and out-of-band methods.
((or (tramp-local-host-p v)
(tramp-method-out-of-band-p
- v (- (or end (point-max)) (or start (point-min)))))
- (if (and (= (or end (point-max)) (point-max))
+ v (nth 7 (file-attributes tmpfile))))
+ (if (and (not (stringp start))
+ (= (or end (point-max)) (point-max))
(= (or start (point-min)) (point-min))
(tramp-get-method-parameter
method 'tramp-copy-keep-tmpfile))
(save-restriction
(narrow-to-region 1 (point-max))
(save-excursion
- (let* ((in-macro-start ; point-max or beginning of macro containing it
+ (let* ((in-macro-start ; start of macro containing (point-max) or nil.
(save-excursion
(goto-char (point-max))
(and (c-beginning-of-macro)
;; (car c-state-cache). There can be no open parens/braces/brackets
;; between `good-pos'/`good-pos-actual-macro-start' and (point-max),
;; due to the interface spec to this function.
- (setq pos (if good-pos-actual-macro-end
+ (setq pos (if (and good-pos-actual-macro-end
+ (not (eq good-pos-actual-macro-start
+ in-macro-start)))
(1+ good-pos-actual-macro-end) ; get outside the macro as
; marked by a `category' text property.
good-pos))
"Variables controlling indentation in shell scripts.
Note: customizing these variables will not affect existing buffers if
-`sh-make-vars-local' is no-nil. See the documentation for
+`sh-make-vars-local' is non-nil. See the documentation for
variable `sh-make-vars-local', command `sh-make-vars-local'
and command `sh-reset-indent-vars-to-global-values'."
:group 'sh-script)
(let* ((start-position (event-start event))
(window (nth 0 start-position))
(portion-whole (nth 2 start-position)))
- (with-current-buffer (window-buffer window)
- ;; Calculate position relative to the accessible part of the buffer.
- (goto-char (+ (point-min)
- (scroll-bar-scale portion-whole
- (- (point-max) (point-min)))))
- (vertical-motion 0 window)
- (set-window-start window (point)))))
+ (save-excursion
+ (with-current-buffer (window-buffer window)
+ ;; Calculate position relative to the accessible part of the buffer.
+ (goto-char (+ (point-min)
+ (scroll-bar-scale portion-whole
+ (- (point-max) (point-min)))))
+ (vertical-motion 0 window)
+ (set-window-start window (point))))))
(defun scroll-bar-drag (event)
"Scroll the window by dragging the scroll bar slider.
If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there."
(or exit-char (setq exit-char ?\s))
(let ((ol (make-overlay pos pos))
- (message (copy-sequence string)))
+ (str (copy-sequence string)))
(unwind-protect
(progn
(save-excursion
- (overlay-put ol 'after-string message)
+ (overlay-put ol 'after-string str)
(goto-char pos)
;; To avoid trouble with out-of-bounds position
(setq pos (point))
- ;; If the message end is off screen, recenter now.
+ ;; If the string end is off screen, recenter now.
(if (<= (window-end nil t) pos)
(recenter (/ (window-height) 2))))
(message (or message "Type %s to continue editing.")
(if (and (markerp marker) (marker-buffer marker))
;; Buffer is still live and we have the marker.
(progn
- (save-excursion
+ (with-current-buffer (marker-buffer marker)
;; Goto the buffer and check of section is unchanged
- (set-buffer (marker-buffer marker))
(goto-char (marker-position marker))
(if (looking-at (regexp-quote literal))
;; OK, get the makro name
;; * revert (file &optional contents-done) OK
;; - rollback (files) COULD BE SUPPORTED
;; - merge (file rev1 rev2) It would be possible to merge
-;; changes into a single file, but when
-;; committing they wouldn't
+;; changes into a single file, but
+;; when committing they wouldn't
;; be identified as a merge
;; by git, so it's probably
;; not a good idea.
;;;###autoload (defun vc-git-registered (file)
;;;###autoload "Return non-nil if FILE is registered with git."
-;;;###autoload (if (vc-find-root file ".git") ; short cut
+;;;###autoload (if (vc-find-root file ".git") ; Short cut.
;;;###autoload (progn
;;;###autoload (load "vc-git")
;;;###autoload (vc-git-registered file))))
(str (ignore-errors
(cd dir)
(vc-git--out-ok "ls-files" "-c" "-z" "--" name)
- ;; if result is empty, use ls-tree to check for deleted file
+ ;; If result is empty, use ls-tree to check for deleted
+ ;; file.
(when (eq (point-min) (point-max))
- (vc-git--out-ok "ls-tree" "--name-only" "-z" "HEAD" "--" name))
+ (vc-git--out-ok "ls-tree" "--name-only" "-z" "HEAD"
+ "--" name))
(buffer-string))))
(and str
(> (length str) (length name))
(if (not (vc-git-registered file))
'unregistered
(vc-git--call nil "add" "--refresh" "--" (file-relative-name file))
- (let ((diff (vc-git--run-command-string file "diff-index" "-z" "HEAD" "--")))
+ (let ((diff (vc-git--run-command-string
+ file "diff-index" "-z" "HEAD" "--")))
(if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0"
diff))
(vc-git--state-code (match-string 1 diff))
(defstruct (vc-git-extra-fileinfo
(:copier nil)
- (:constructor vc-git-create-extra-fileinfo (old-perm new-perm &optional rename-state orig-name))
+ (:constructor vc-git-create-extra-fileinfo
+ (old-perm new-perm &optional rename-state orig-name))
(:conc-name vc-git-extra-fileinfo->))
- old-perm new-perm ;; permission flags
- rename-state ;; rename or copy state
- orig-name) ;; original name for renames or copies
+ old-perm new-perm ;; Permission flags.
+ rename-state ;; Rename or copy state.
+ orig-name) ;; Original name for renames or copies.
(defun vc-git-escape-file-name (name)
"Escape a file name if necessary."
(let* ((old-type (lsh (or old-perm 0) -9))
(new-type (lsh (or new-perm 0) -9))
(str (case new-type
- (?\100 ;; file
+ (?\100 ;; File.
(case old-type
(?\100 nil)
(?\120 " (type change symlink -> file)")
(?\160 " (type change subproject -> file)")))
- (?\120 ;; symlink
+ (?\120 ;; Symlink.
(case old-type
(?\100 " (type change file -> symlink)")
(?\160 " (type change subproject -> symlink)")
(t " (symlink)")))
- (?\160 ;; subproject
+ (?\160 ;; Subproject.
(case old-type
(?\100 " (type change file -> subproject)")
(?\120 " (type change symlink -> subproject)")
(t " (subproject)")))
- (?\110 nil) ;; directory (internal, not a real git state)
- (?\000 ;; deleted or unknown
+ (?\110 nil) ;; Directory (internal, not a real git state).
+ (?\000 ;; Deleted or unknown.
(case old-type
(?\120 " (symlink)")
(?\160 " (subproject)")))
(t ""))))
(defun vc-git-rename-as-string (state extra)
- "Return a string describing the copy or rename associated with INFO, or an empty string if none."
+ "Return a string describing the copy or rename associated with INFO,
+or an empty string if none."
(let ((rename-state (when extra
(vc-git-extra-fileinfo->rename-state extra))))
(if rename-state
(if (eq rename-state 'copy) "copied from "
(if (eq state 'added) "renamed from "
"renamed to "))
- (vc-git-escape-file-name (vc-git-extra-fileinfo->orig-name extra))
- ")") 'face 'font-lock-comment-face)
+ (vc-git-escape-file-name
+ (vc-git-extra-fileinfo->orig-name extra))
+ ")")
+ 'face 'font-lock-comment-face)
"")))
(defun vc-git-permissions-as-string (old-perm new-perm)
" " (vc-git-permissions-as-string old-perm new-perm)
" "
(propertize (vc-git-escape-file-name (vc-dir-fileinfo->name info))
- 'face (if isdir 'font-lock-comment-delimiter-face 'font-lock-function-name-face)
+ 'face (if isdir 'font-lock-comment-delimiter-face
+ 'font-lock-function-name-face)
'help-echo
(if isdir
"Directory\nVC operations can be applied to it\nmouse-3: Pop-up menu"
(defun vc-git-after-dir-status-stage (stage files update-function)
"Process sentinel for the various dir-status stages."
- (let (remaining next-stage result)
+ (let (next-stage result)
(goto-char (point-min))
(case stage
- ('update-index
+ (update-index
(setq next-stage (if (vc-git--empty-db-p) 'ls-files-added
(if files 'ls-files-up-to-date 'diff-index))))
- ('ls-files-added
+ (ls-files-added
(setq next-stage 'ls-files-unknown)
(while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
(let ((new-perm (string-to-number (match-string 1) 8))
(name (match-string 2)))
- (push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm)) result))))
- ('ls-files-up-to-date
+ (push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm))
+ result))))
+ (ls-files-up-to-date
(setq next-stage 'diff-index)
(while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
(let ((perm (string-to-number (match-string 1) 8))
(name (match-string 2)))
- (push (list name 'up-to-date (vc-git-create-extra-fileinfo perm perm)) result))))
- ('ls-files-unknown
+ (push (list name 'up-to-date
+ (vc-git-create-extra-fileinfo perm perm))
+ result))))
+ (ls-files-unknown
(when files (setq next-stage 'ls-files-ignored))
(while (re-search-forward "\\([^\0]*?\\)\0" nil t 1)
- (push (list (match-string 1) 'unregistered (vc-git-create-extra-fileinfo 0 0)) result)))
- ('ls-files-ignored
+ (push (list (match-string 1) 'unregistered
+ (vc-git-create-extra-fileinfo 0 0))
+ result)))
+ (ls-files-ignored
(while (re-search-forward "\\([^\0]*?\\)\0" nil t 1)
- (push (list (match-string 1) 'ignored (vc-git-create-extra-fileinfo 0 0)) result)))
- ('diff-index
+ (push (list (match-string 1) 'ignored
+ (vc-git-create-extra-fileinfo 0 0))
+ result)))
+ (diff-index
(setq next-stage 'ls-files-unknown)
(while (re-search-forward
":\\([0-7]\\{6\\}\\) \\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\(\\([ADMUT]\\)\0\\([^\0]+\\)\\|\\([CR]\\)[0-9]*\0\\([^\0]+\\)\0\\([^\0]+\\)\\)\0"
(state (or (match-string 4) (match-string 6)))
(name (or (match-string 5) (match-string 7)))
(new-name (match-string 8)))
- (if new-name ; copy or rename
+ (if new-name ; Copy or rename.
(if (eq ?C (string-to-char state))
- (push (list new-name 'added (vc-git-create-extra-fileinfo old-perm new-perm 'copy name)) result)
- (push (list name 'removed (vc-git-create-extra-fileinfo 0 0 'rename new-name)) result)
- (push (list new-name 'added (vc-git-create-extra-fileinfo old-perm new-perm 'rename name)) result))
- (push (list name (vc-git--state-code state) (vc-git-create-extra-fileinfo old-perm new-perm)) result))))))
+ (push (list new-name 'added
+ (vc-git-create-extra-fileinfo old-perm new-perm
+ 'copy name))
+ result)
+ (push (list name 'removed
+ (vc-git-create-extra-fileinfo 0 0
+ 'rename new-name))
+ result)
+ (push (list new-name 'added
+ (vc-git-create-extra-fileinfo old-perm new-perm
+ 'rename name))
+ result))
+ (push (list name (vc-git--state-code state)
+ (vc-git-create-extra-fileinfo old-perm new-perm))
+ result))))))
(when result
(setq result (nreverse result))
(when files
(dolist (entry result) (setq files (delete (car entry) files)))
(unless files (setq next-stage nil))))
- (when (or result (not next-stage)) (funcall update-function result next-stage))
- (when next-stage (vc-git-dir-status-goto-stage next-stage files update-function))))
+ (when (or result (not next-stage))
+ (funcall update-function result next-stage))
+ (when next-stage
+ (vc-git-dir-status-goto-stage next-stage files update-function))))
(defun vc-git-dir-status-goto-stage (stage files update-function)
(erase-buffer)
(case stage
- ('update-index
+ (update-index
(if files
(vc-git-command (current-buffer) 'async files "add" "--refresh" "--")
- (vc-git-command (current-buffer) 'async nil "update-index" "--refresh")))
- ('ls-files-added
- (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-c" "-s" "--"))
- ('ls-files-up-to-date
- (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-c" "-s" "--"))
- ('ls-files-unknown
- (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-o"
- "--directory" "--no-empty-directory" "--exclude-standard" "--"))
- ('ls-files-ignored
- (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-o" "-i"
- "--directory" "--no-empty-directory" "--exclude-standard" "--"))
- ('diff-index
- (vc-git-command (current-buffer) 'async files "diff-index" "--relative" "-z" "-M" "HEAD" "--")))
+ (vc-git-command (current-buffer) 'async nil
+ "update-index" "--refresh")))
+ (ls-files-added
+ (vc-git-command (current-buffer) 'async files
+ "ls-files" "-z" "-c" "-s" "--"))
+ (ls-files-up-to-date
+ (vc-git-command (current-buffer) 'async files
+ "ls-files" "-z" "-c" "-s" "--"))
+ (ls-files-unknown
+ (vc-git-command (current-buffer) 'async files
+ "ls-files" "-z" "-o" "--directory"
+ "--no-empty-directory" "--exclude-standard" "--"))
+ (ls-files-ignored
+ (vc-git-command (current-buffer) 'async files
+ "ls-files" "-z" "-o" "-i" "--directory"
+ "--no-empty-directory" "--exclude-standard" "--"))
+ (diff-index
+ (vc-git-command (current-buffer) 'async files
+ "diff-index" "--relative" "-z" "-M" "HEAD" "--")))
(vc-exec-after
- `(vc-git-after-dir-status-stage (quote ,stage) (quote ,files) (quote ,update-function))))
+ `(vc-git-after-dir-status-stage ',stage ',files ',update-function)))
(defun vc-git-dir-status (dir update-function)
"Return a list of (FILE STATE EXTRA) entries for DIR."
(setq remote
(with-output-to-string
(with-current-buffer standard-output
- (vc-git--out-ok "config" (concat "branch." branch ".remote")))))
+ (vc-git--out-ok "config"
+ (concat "branch." branch ".remote")))))
(when (string-match "\\([^\n]+\\)" remote)
(setq remote (match-string 1 remote)))
(when remote
(setq remote-url
(with-output-to-string
(with-current-buffer standard-output
- (vc-git--out-ok "config" (concat "remote." remote ".url"))))))
+ (vc-git--out-ok "config"
+ (concat "remote." remote ".url"))))))
(when (string-match "\\([^\n]+\\)" remote-url)
(setq remote-url (match-string 1 remote-url))))
(setq branch "not (detached HEAD)"))
(append
'("log" "--no-color")
(when shortlog
- '("--graph" "--decorate"
- "--date=short" "--pretty=format:%d%h %ad %s" "--abbrev-commit"))
+ '("--graph" "--decorate" "--date=short"
+ "--pretty=format:%d%h %ad %s" "--abbrev-commit"))
(when limit (list "-n" (format "%s" limit)))
(when start-revision (list start-revision))
'("--")))))))
(defvar vc-short-log)
(define-derived-mode vc-git-log-view-mode log-view-mode "Git-Log-View"
- (require 'add-log) ;; we need the faces add-log
+ (require 'add-log) ;; We need the faces add-log.
;; Don't have file markers, so use impossible regexp.
(set (make-local-variable 'log-view-file-re) "\\`a\\`")
(set (make-local-variable 'log-view-per-file-logs) nil)
REVISION may have the form BRANCH, BRANCH~N,
or BRANCH^ (where \"^\" can be repeated)."
(goto-char (point-min))
- (let (found)
- (when revision
- (setq found
- (search-forward (format "\ncommit %s" revision) nil t
- (cond ((string-match "~\\([0-9]\\)$" revision)
- (1+ (string-to-number (match-string 1 revision))))
- ((string-match "\\^+$" revision)
- (1+ (length (match-string 0 revision))))
- (t nil)))))
- (beginning-of-line)
- found))
+ (prog1
+ (when revision
+ (search-forward
+ (format "\ncommit %s" revision) nil t
+ (cond ((string-match "~\\([0-9]\\)\\'" revision)
+ (1+ (string-to-number (match-string 1 revision))))
+ ((string-match "\\^+\\'" revision)
+ (1+ (length (match-string 0 revision))))
+ (t nil))))
+ (beginning-of-line)))
(defun vc-git-diff (files &optional rev1 rev2 buffer)
"Get a difference report using Git between two revisions of FILES."
(goto-char (point-min))
(= (forward-line 2) 1)
(bolp)
- (buffer-substring-no-properties (point-min) (1- (point-max)))))))
+ (buffer-substring-no-properties (point-min)
+ (1- (point-max)))))))
(and name (not (string= name "undefined")) name))))
(provide 'vc-git)
+2010-03-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Make it possible to C-g in a tight bytecode loop again (bug#5680).
+ * lisp.h (ELSE_PENDING_SIGNALS): New macro.
+ (QUIT): Use it to consolidate code and remove redundancy.
+ * bytecode.c (BYTE_CODE_QUIT): Use it as well.
+
+ * regex.c (regex_compile): Setup gl_state as well.
+
+ * syntax.c (skip_chars): Setup gl_state (bug#3823).
+ (in_classes): Use CONSP before XCAR/XCDR.
+
+2010-03-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * keymap.c (Fwhere_is_internal): Use Fequal to compare
+ definitions, so that keyboard macros are correctly handled
+ (Bug#5481).
+
+2010-03-02 Eli Zaretskii <eliz@gnu.org>
+
+ * coding.c (decode_coding_emacs_mule): Fixup pointers to buffer
+ text that could be relocated inside the call to emacs_mule_char.
+ (emacs_mule_char): Use CODING_DECODE_CHAR instead of DECODE_CHAR.
+ (CODING_DECODE_CHAR): Add a comment describing its purpose.
+
+2010-03-02 Kenichi Handa <handa@m17n.org>
+
+ * character.c (parse_str_as_multibyte): Fix handling of the
+ multibyte form of raw-bytes.
+ (str_as_multibyte): Likewise.
+
+ * buffer.c (Fset_buffer_multibyte): Fix handling of the multibyte
+ form of raw-bytes.
+
+2010-02-28 Chong Yidong <cyd@stupidchicken.com>
+
+ * charset.c (load_charset_map_from_file)
+ (load_charset_map_from_vector): Zero out allocated
+ charset_map_entries before using them.
+
+2010-02-27 Andreas Schwab <schwab@linux-m68k.org>
+
+ * w32uniscribe.c (uniscribe_check_otf): Fix length check.
+
2010-02-27 Chong Yidong <cyd@stupidchicken.com>
* font.c (font_parse_fcname): Recognize "Book", "Condensed",
if (ASCII_BYTE_P (*p))
p++, pos++;
- else if (EQ (flag, Qt) && (bytes = MULTIBYTE_LENGTH (p, pend)) > 0)
+ else if (EQ (flag, Qt)
+ && ! CHAR_BYTE8_HEAD_P (*p)
+ && (bytes = MULTIBYTE_LENGTH (p, pend)) > 0)
p += bytes, pos += bytes;
else
{
Fsignal (Qquit, Qnil); \
AFTER_POTENTIAL_GC (); \
} \
+ ELSE_PENDING_SIGNALS \
} while (0)
const unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH;
while (str < adjusted_endp)
{
- if ((n = MULTIBYTE_LENGTH_NO_CHECK (str)) > 0)
+ if (! CHAR_BYTE8_HEAD_P (*str)
+ && (n = MULTIBYTE_LENGTH_NO_CHECK (str)) > 0)
str += n, bytes += n;
else
str++, bytes += 2;
}
while (str < endp)
{
- if ((n = MULTIBYTE_LENGTH (str, endp)) > 0)
+ if (! CHAR_BYTE8_HEAD_P (*str)
+ && (n = MULTIBYTE_LENGTH (str, endp)) > 0)
str += n, bytes += n;
else
str++, bytes += 2;
{
unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH;
while (p < adjusted_endp
+ && ! CHAR_BYTE8_HEAD_P (*p)
&& (n = MULTIBYTE_LENGTH_NO_CHECK (p)) > 0)
p += n, chars++;
}
- while ((n = MULTIBYTE_LENGTH (p, endp)) > 0)
+ while (p < endp
+ && ! CHAR_BYTE8_HEAD_P (*p)
+ && (n = MULTIBYTE_LENGTH (p, endp)) > 0)
p += n, chars++;
if (nchars)
*nchars = chars;
unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH;
while (p < adjusted_endp)
{
- if ((n = MULTIBYTE_LENGTH_NO_CHECK (p)) > 0)
+ if (! CHAR_BYTE8_HEAD_P (*p)
+ && (n = MULTIBYTE_LENGTH_NO_CHECK (p)) > 0)
{
while (n--)
*to++ = *p++;
}
while (p < endp)
{
- if ((n = MULTIBYTE_LENGTH (p, endp)) > 0)
+ if (! CHAR_BYTE8_HEAD_P (*p)
+ && (n = MULTIBYTE_LENGTH (p, endp)) > 0)
{
while (n--)
*to++ = *p++;
SAFE_ALLOCA (head, struct charset_map_entries *,
sizeof (struct charset_map_entries));
entries = head;
+ bzero (entries, sizeof (struct charset_map_entries));
n_entries = 0;
eof = 0;
SAFE_ALLOCA (entries->next, struct charset_map_entries *,
sizeof (struct charset_map_entries));
entries = entries->next;
+ bzero (entries, sizeof (struct charset_map_entries));
}
idx = n_entries % 0x10000;
entries->entry[idx].from = from;
SAFE_ALLOCA (head, struct charset_map_entries *,
sizeof (struct charset_map_entries));
entries = head;
+ bzero (entries, sizeof (struct charset_map_entries));
n_entries = 0;
for (i = 0; i < len; i += 2)
SAFE_ALLOCA (entries->next, struct charset_map_entries *,
sizeof (struct charset_map_entries));
entries = entries->next;
+ bzero (entries, sizeof (struct charset_map_entries));
}
idx = n_entries % 0x10000;
entries->entry[idx].from = from;
}
}
+/* This wrapper macro is used to preserve validity of pointers into
+ buffer text across calls to decode_char, which could cause
+ relocation of buffers if it loads a charset map, because loading a
+ charset map allocates large structures. */
#define CODING_DECODE_CHAR(coding, src, src_base, src_end, charset, code, c) \
do { \
charset_map_loaded = 0; \
/* Parse emacs-mule multibyte sequence at SRC and return the decoded
character. If CMP_STATUS indicates that we must expect MSEQ or
RULE described above, decode it and return the negative value of
- the deocded character or rule. If an invalid byte is found, return
+ the decoded character or rule. If an invalid byte is found, return
-1. If SRC is too short, return -2. */
int
default:
abort ();
}
- c = DECODE_CHAR (charset, code);
+ CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c);
if (c < 0)
goto invalid_code;
}
else
{
int nchars, nbytes;
+ /* emacs_mule_char can load a charset map from a file, which
+ allocates a large structure and might cause buffer text
+ to be relocated as result. Thus, we need to remember the
+ original pointer to buffer text, and fixup all related
+ pointers after the call. */
+ const unsigned char *orig = coding->source;
+ EMACS_INT offset;
c = emacs_mule_char (coding, src_base, &nbytes, &nchars, &id,
cmp_status);
+ offset = coding->source - orig;
+ if (offset)
+ {
+ src += offset;
+ src_base += offset;
+ src_end += offset;
+ }
if (c < 0)
{
if (c == -1)
/* If a mouse click position is given, our variables are based on
the buffer clicked on, not the current buffer. So we may have to
switch the buffer here. */
-
+
if (CONSP (position))
{
Lisp_Object window;
-
+
window = POSN_WINDOW (position);
-
+
if (WINDOWP (window)
&& BUFFERP (XWINDOW (window)->buffer)
&& XBUFFER (XWINDOW (window)->buffer) != current_buffer)
would not be a problem here, but it is easier to keep
things the same.
*/
-
+
record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
-
+
set_buffer_internal (XBUFFER (XWINDOW (window)->buffer));
}
}
- keymaps = Fcons (current_global_map, Qnil);
+ keymaps = Fcons (current_global_map, Qnil);
if (!NILP (olp))
{
/* Get the buffer local maps, possibly overriden by text or
overlay properties */
- local_map = get_local_map (pt, current_buffer, Qlocal_map);
- keymap = get_local_map (pt, current_buffer, Qkeymap);
+ local_map = get_local_map (pt, current_buffer, Qlocal_map);
+ keymap = get_local_map (pt, current_buffer, Qkeymap);
if (CONSP (position))
{
/* For a mouse click, get the local text-property keymap
of the place clicked on, rather than point. */
-
+
if (POSN_INBUFFER_P (position))
{
Lisp_Object pos;
{
local_map = get_local_map (XINT (pos),
current_buffer, Qlocal_map);
-
+
keymap = get_local_map (XINT (pos),
current_buffer, Qkeymap);
}
string displayed via the `display' property,
consider `local-map' and `keymap' properties of
that string. */
-
+
if (string = POSN_STRING (position),
(CONSP (string) && STRINGP (XCAR (string))))
{
Lisp_Object pos, map;
-
+
pos = XCDR (string);
string = XCAR (string);
if (INTEGERP (pos)
keymap = map;
}
}
-
+
}
if (!NILP (local_map))
CONSP (sequences)))
{
Lisp_Object sequence, function;
-
+
sequence = XCAR (sequences);
sequences = XCDR (sequences);
Either nil or number as value from Flookup_key
means undefined. */
- if (!EQ (shadow_lookup (keymaps, sequence, Qnil, remapped),
- definition))
+ if (NILP (Fequal (shadow_lookup (keymaps, sequence, Qnil, remapped),
+ definition)))
continue;
/* If the current sequence is a command remapping with
Faset (sequence, make_number (ASIZE (sequence) - 1),
build_string ("(any string)"));
}
-
+
/* It is a true unshadowed match. Record it, unless it's already
been seen (as could happen when inheriting keymaps). */
if (NILP (Fmember (sequence, found)))
found = Fcons (sequence, found);
-
+
/* If firstonly is Qnon_ascii, then we can return the first
binding we find. If firstonly is not Qnon_ascii but not
nil, then we should return the first ascii-only binding
#ifdef SYNC_INPUT
extern void process_pending_signals P_ ((void));
extern int pending_signals;
-
-#define QUIT \
- do { \
- if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
- { \
- Lisp_Object flag = Vquit_flag; \
- Vquit_flag = Qnil; \
- if (EQ (Vthrow_on_input, flag)) \
- Fthrow (Vthrow_on_input, Qt); \
- Fsignal (Qquit, Qnil); \
- } \
- else if (pending_signals) \
- process_pending_signals (); \
- } while (0)
-
+#define ELSE_PENDING_SIGNALS \
+ else if (pending_signals) \
+ process_pending_signals ();
#else /* not SYNC_INPUT */
+#define ELSE_PENDING_SIGNALS
+#endif /* not SYNC_INPUT */
#define QUIT \
do { \
Fthrow (Vthrow_on_input, Qt); \
Fsignal (Qquit, Qnil); \
} \
+ ELSE_PENDING_SIGNALS \
} while (0)
-#endif /* not SYNC_INPUT */
-
/* Nonzero if ought to quit now. */
don't need to handle them for multibyte.
They are distinguished by a negative wctype. */
+ /* Setup the gl_state object to its buffer-defined
+ value. This hardcodes the buffer-global
+ syntax-table for ASCII chars, while the other chars
+ will obey syntax-table properties. It's not ideal,
+ but it's the way it's been done until now. */
+ SETUP_SYNTAX_TABLE (BEGV, 0);
+
for (ch = 0; ch < 256; ++ch)
{
c = RE_CHAR_TO_MULTIBYTE (ch);
}
immediate_quit = 1;
+ /* This code may look up syntax tables using macros that rely on the
+ gl_state object. To make sure this object is not out of date,
+ let's initialize it manually.
+ We ignore syntax-table text-properties for now, since that's
+ what we've done in the past. */
+ SETUP_SYNTAX_TABLE (BEGV, 0);
if (forwardp)
{
if (multibyte)
{
int fits_class = 0;
- while (! NILP (iso_classes))
+ while (CONSP (iso_classes))
{
Lisp_Object elt;
elt = XCAR (iso_classes);
struct gcpro gcpro1;
/* Check the spec is in the right format. */
- if (!CONSP (otf_spec) || Flength (otf_spec) < 3)
+ if (!CONSP (otf_spec) || XINT (Flength (otf_spec)) < 3)
return 0;
/* Break otf_spec into its components. */
+;;; ede-tests.el --- Some tests for the Emacs Development Environment
+
+;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+
+;; Author: Eric M. Ludlam <eric@siege-engine.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Extracted from ede-locate.el in the CEDET distribution.
+
+;;; Code:
+
;;; From ede-locate:
(require 'ede/locate)
)
;; arch-tag: 79fae12e-652f-4544-a20e-b24d87b4917d
+;;; ede-test.el ends here
+;;; srecode-tests.el --- Some tests for CEDET's srecode
+
+;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+
+;; Author: Eric M. Ludlam <eric@siege-engine.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Extracted from srecode-fields.el and srecode-document.el in the
+;; CEDET distribution.
+
+;;; Code:
+
;;; From srecode-fields:
(require 'srecode/fields)
(srecode-dump extract))))))
;; arch-tag: 7a467849-b415-4bdc-ba2a-284ace156a65
+;;; srecode-tests.el ends here