diff options
58 files changed, 1079 insertions, 800 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index f5ccba1005f..56a63b1a0eb 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2012-03-22 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * dired.texi (Operating on Files): Fix dired-recursive-copies default. | ||
| 4 | |||
| 1 | 2012-03-17 Chong Yidong <cyd@gnu.org> | 5 | 2012-03-17 Chong Yidong <cyd@gnu.org> |
| 2 | 6 | ||
| 3 | * package.texi (Package Installation): Document use of | 7 | * package.texi (Package Installation): Document use of |
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 7dd290939fe..301f8a76477 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi | |||
| @@ -610,7 +610,7 @@ the copy, like @samp{cp -p}. | |||
| 610 | @cindex recursive copying | 610 | @cindex recursive copying |
| 611 | The variable @code{dired-recursive-copies} controls whether to copy | 611 | The variable @code{dired-recursive-copies} controls whether to copy |
| 612 | directories recursively (like @samp{cp -r}). The default is | 612 | directories recursively (like @samp{cp -r}). The default is |
| 613 | @code{nil}, which means that directories cannot be copied. | 613 | @code{top}, which means to ask before recursively copying a directory. |
| 614 | 614 | ||
| 615 | @item D | 615 | @item D |
| 616 | @findex dired-do-delete | 616 | @findex dired-do-delete |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 43ae349cb4c..5477da38abe 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,35 @@ | |||
| 1 | 2012-03-25 Chong Yidong <cyd@gnu.org> | ||
| 2 | |||
| 3 | * display.texi (Fringes): Note that fringes are shown on graphical | ||
| 4 | displays only. | ||
| 5 | (Fringe Size/Pos, Fringe Bitmaps, Making Buttons): Clarifications. | ||
| 6 | (Replacing Specs): Clarify example. | ||
| 7 | (Manipulating Buttons): Note that button-at can return a marker. | ||
| 8 | (Buttons): Minor rewrite. | ||
| 9 | (Character Display): New node. Consolidate all character display | ||
| 10 | related nodes into its subsections. | ||
| 11 | (Usual Display): Character 127 is also affected by ctl-arrow. | ||
| 12 | (Display Tables): Improve example. | ||
| 13 | |||
| 14 | 2012-03-22 Glenn Morris <rgm@gnu.org> | ||
| 15 | |||
| 16 | * strings.texi (Text Comparison): Mention string-prefix-p. | ||
| 17 | |||
| 18 | 2012-03-21 Chong Yidong <cyd@gnu.org> | ||
| 19 | |||
| 20 | * display.texi (The Echo Area): Add xref to Output Streams. | ||
| 21 | (Displaying Messages): Improve doc of message. | ||
| 22 | (Echo Area Customization, Invisible Text): Copyedits. | ||
| 23 | (Invisible Text): Mention that spec comparison is done with eq. | ||
| 24 | (Width): Improve doc of char-width. | ||
| 25 | (Faces): Recommend using symbol instead of string for face name. | ||
| 26 | Minor clarifications. | ||
| 27 | (Defining Faces): Copyedits. Update face example. | ||
| 28 | (Attribute Functions): Mark set-face-foreground etc as commands. | ||
| 29 | (Face Remapping): Mention text-scale-adjust. Clarify | ||
| 30 | face-remapping-alist and related docs. | ||
| 31 | (Face Functions): Don't document make-face or copy-face. | ||
| 32 | |||
| 1 | 2012-03-20 Chong Yidong <cyd@gnu.org> | 33 | 2012-03-20 Chong Yidong <cyd@gnu.org> |
| 2 | 34 | ||
| 3 | * display.texi (Forcing Redisplay): Various rewrites to reflect | 35 | * display.texi (Forcing Redisplay): Various rewrites to reflect |
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index b68b0697936..b3bf78c4799 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi | |||
| @@ -30,13 +30,11 @@ that Emacs presents to the user. | |||
| 30 | * Buttons:: Adding clickable buttons to Emacs buffers. | 30 | * Buttons:: Adding clickable buttons to Emacs buffers. |
| 31 | * Abstract Display:: Emacs's Widget for Object Collections. | 31 | * Abstract Display:: Emacs's Widget for Object Collections. |
| 32 | * Blinking:: How Emacs shows the matching open parenthesis. | 32 | * Blinking:: How Emacs shows the matching open parenthesis. |
| 33 | * Usual Display:: The usual conventions for displaying nonprinting chars. | 33 | * Character Display:: How Emacs displays individual characters. |
| 34 | * Display Tables:: How to specify other conventions. | ||
| 35 | * Beeping:: Audible signal to the user. | 34 | * Beeping:: Audible signal to the user. |
| 36 | * Window Systems:: Which window system is being used. | 35 | * Window Systems:: Which window system is being used. |
| 37 | * Bidirectional Display:: Display of bidirectional scripts, such as | 36 | * Bidirectional Display:: Display of bidirectional scripts, such as |
| 38 | Arabic and Farsi. | 37 | Arabic and Farsi. |
| 39 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 40 | @end menu | 38 | @end menu |
| 41 | 39 | ||
| 42 | @node Refresh Screen | 40 | @node Refresh Screen |
| @@ -46,7 +44,6 @@ that Emacs presents to the user. | |||
| 46 | contents of a given frame (@pxref{Frames}). This is useful if the | 44 | contents of a given frame (@pxref{Frames}). This is useful if the |
| 47 | screen is corrupted. | 45 | screen is corrupted. |
| 48 | 46 | ||
| 49 | @c Emacs 19 feature | ||
| 50 | @defun redraw-frame frame | 47 | @defun redraw-frame frame |
| 51 | This function clears and redisplays frame @var{frame}. | 48 | This function clears and redisplays frame @var{frame}. |
| 52 | @end defun | 49 | @end defun |
| @@ -243,14 +240,12 @@ This variable is automatically buffer-local in every buffer. | |||
| 243 | (@pxref{Errors}), for messages made with the @code{message} primitive, | 240 | (@pxref{Errors}), for messages made with the @code{message} primitive, |
| 244 | and for echoing keystrokes. It is not the same as the minibuffer, | 241 | and for echoing keystrokes. It is not the same as the minibuffer, |
| 245 | despite the fact that the minibuffer appears (when active) in the same | 242 | despite the fact that the minibuffer appears (when active) in the same |
| 246 | place on the screen as the echo area. The @cite{GNU Emacs Manual} | 243 | place on the screen as the echo area. @xref{Minibuffer,, The |
| 247 | specifies the rules for resolving conflicts between the echo area and | 244 | Minibuffer, emacs, The GNU Emacs Manual}. |
| 248 | the minibuffer for use of that screen space (@pxref{Minibuffer,, The | ||
| 249 | Minibuffer, emacs, The GNU Emacs Manual}). | ||
| 250 | 245 | ||
| 251 | You can write output in the echo area by using the Lisp printing | 246 | Apart from the functions documented in this section, you can print |
| 252 | functions with @code{t} as the stream (@pxref{Output Functions}), or | 247 | Lisp objects to the echo area by specifying @code{t} as the output |
| 253 | explicitly. | 248 | stream. @xref{Output Streams}. |
| 254 | 249 | ||
| 255 | @menu | 250 | @menu |
| 256 | * Displaying Messages:: Explicitly displaying text in the echo area. | 251 | * Displaying Messages:: Explicitly displaying text in the echo area. |
| @@ -263,27 +258,26 @@ explicitly. | |||
| 263 | @subsection Displaying Messages in the Echo Area | 258 | @subsection Displaying Messages in the Echo Area |
| 264 | @cindex display message in echo area | 259 | @cindex display message in echo area |
| 265 | 260 | ||
| 266 | This section describes the functions for explicitly producing echo | 261 | This section describes the standard functions for displaying |
| 267 | area messages. Many other Emacs features display messages there, too. | 262 | messages in the echo area. |
| 268 | 263 | ||
| 269 | @defun message format-string &rest arguments | 264 | @defun message format-string &rest arguments |
| 270 | This function displays a message in the echo area. The argument | 265 | This function displays a message in the echo area. |
| 271 | @var{format-string} is similar to a C language @code{printf} format | 266 | @var{format-string} is a format string, and @var{arguments} are the |
| 272 | string. See @code{format} in @ref{Formatting Strings}, for the details | 267 | objects for its format specifications, like in the @code{format} |
| 273 | on the conversion specifications. @code{message} returns the | 268 | function (@pxref{Formatting Strings}). The resulting formatted string |
| 274 | constructed string. | 269 | is displayed in the echo area; if it contains @code{face} text |
| 275 | 270 | properties, it is displayed with the specified faces (@pxref{Faces}). | |
| 276 | In batch mode, @code{message} prints the message text on the standard | 271 | The string is also added to the @samp{*Messages*} buffer, but without |
| 277 | error stream, followed by a newline. | 272 | text properties (@pxref{Logging Messages}). |
| 278 | 273 | ||
| 279 | If @var{format-string}, or strings among the @var{arguments}, have | 274 | In batch mode, the message is printed to the standard error stream, |
| 280 | @code{face} text properties, these affect the way the message is displayed. | 275 | followed by a newline. |
| 281 | 276 | ||
| 282 | @c Emacs 19 feature | ||
| 283 | If @var{format-string} is @code{nil} or the empty string, | 277 | If @var{format-string} is @code{nil} or the empty string, |
| 284 | @code{message} clears the echo area; if the echo area has been | 278 | @code{message} clears the echo area; if the echo area has been |
| 285 | expanded automatically, this brings it back to its normal size. | 279 | expanded automatically, this brings it back to its normal size. If |
| 286 | If the minibuffer is active, this brings the minibuffer contents back | 280 | the minibuffer is active, this brings the minibuffer contents back |
| 287 | onto the screen immediately. | 281 | onto the screen immediately. |
| 288 | 282 | ||
| 289 | @example | 283 | @example |
| @@ -559,13 +553,13 @@ If the value is zero, then command input is not echoed. | |||
| 559 | Normally, displaying a long message resizes the echo area to display | 553 | Normally, displaying a long message resizes the echo area to display |
| 560 | the entire message. But if the variable @code{message-truncate-lines} | 554 | the entire message. But if the variable @code{message-truncate-lines} |
| 561 | is non-@code{nil}, the echo area does not resize, and the message is | 555 | is non-@code{nil}, the echo area does not resize, and the message is |
| 562 | truncated to fit it, as in Emacs 20 and before. | 556 | truncated to fit it. |
| 563 | @end defvar | 557 | @end defvar |
| 564 | 558 | ||
| 565 | The variable @code{max-mini-window-height}, which specifies the | 559 | The variable @code{max-mini-window-height}, which specifies the |
| 566 | maximum height for resizing minibuffer windows, also applies to the | 560 | maximum height for resizing minibuffer windows, also applies to the |
| 567 | echo area (which is really a special use of the minibuffer window. | 561 | echo area (which is really a special use of the minibuffer window; |
| 568 | @xref{Minibuffer Misc}.). | 562 | @pxref{Minibuffer Misc}). |
| 569 | 563 | ||
| 570 | @node Warnings | 564 | @node Warnings |
| 571 | @section Reporting Warnings | 565 | @section Reporting Warnings |
| @@ -762,10 +756,11 @@ that warning is not logged. | |||
| 762 | @cindex invisible text | 756 | @cindex invisible text |
| 763 | You can make characters @dfn{invisible}, so that they do not appear on | 757 | You can make characters @dfn{invisible}, so that they do not appear on |
| 764 | the screen, with the @code{invisible} property. This can be either a | 758 | the screen, with the @code{invisible} property. This can be either a |
| 765 | text property (@pxref{Text Properties}) or a property of an overlay | 759 | text property (@pxref{Text Properties}) or an overlay property |
| 766 | (@pxref{Overlays}). Cursor motion also partly ignores these | 760 | (@pxref{Overlays}). Cursor motion also partly ignores these |
| 767 | characters; if the command loop finds point within them, it moves | 761 | characters; if the command loop finds that point is inside a range of |
| 768 | point to the other side of them. | 762 | invisible text after a command, it relocates point to the other side |
| 763 | of the text. | ||
| 769 | 764 | ||
| 770 | In the simplest case, any non-@code{nil} @code{invisible} property makes | 765 | In the simplest case, any non-@code{nil} @code{invisible} property makes |
| 771 | a character invisible. This is the default case---if you don't alter | 766 | a character invisible. This is the default case---if you don't alter |
| @@ -805,13 +800,15 @@ the character is invisible. The list can have two kinds of elements: | |||
| 805 | 800 | ||
| 806 | @table @code | 801 | @table @code |
| 807 | @item @var{atom} | 802 | @item @var{atom} |
| 808 | A character is invisible if its @code{invisible} property value | 803 | A character is invisible if its @code{invisible} property value is |
| 809 | is @var{atom} or if it is a list with @var{atom} as a member. | 804 | @var{atom} or if it is a list with @var{atom} as a member; comparison |
| 805 | is done with @code{eq}. | ||
| 810 | 806 | ||
| 811 | @item (@var{atom} . t) | 807 | @item (@var{atom} . t) |
| 812 | A character is invisible if its @code{invisible} property value is | 808 | A character is invisible if its @code{invisible} property value is |
| 813 | @var{atom} or if it is a list with @var{atom} as a member. Moreover, | 809 | @var{atom} or if it is a list with @var{atom} as a member; comparison |
| 814 | a sequence of such characters displays as an ellipsis. | 810 | is done with @code{eq}. Moreover, a sequence of such characters |
| 811 | displays as an ellipsis. | ||
| 815 | @end table | 812 | @end table |
| 816 | @end table | 813 | @end table |
| 817 | @end defvar | 814 | @end defvar |
| @@ -846,7 +843,7 @@ major mode should use the mode's own name as an element of | |||
| 846 | (overlay-put (make-overlay beginning end) | 843 | (overlay-put (make-overlay beginning end) |
| 847 | 'invisible 'my-symbol) | 844 | 'invisible 'my-symbol) |
| 848 | 845 | ||
| 849 | ;; @r{When done with the overlays:} | 846 | ;; @r{When done with the invisibility:} |
| 850 | (remove-from-invisibility-spec '(my-symbol . t)) | 847 | (remove-from-invisibility-spec '(my-symbol . t)) |
| 851 | ;; @r{Or respectively:} | 848 | ;; @r{Or respectively:} |
| 852 | (remove-from-invisibility-spec 'my-symbol) | 849 | (remove-from-invisibility-spec 'my-symbol) |
| @@ -872,15 +869,16 @@ ignore invisible newlines if @code{line-move-ignore-invisible} is | |||
| 872 | non-@code{nil} (the default), but only because they are explicitly | 869 | non-@code{nil} (the default), but only because they are explicitly |
| 873 | programmed to do so. | 870 | programmed to do so. |
| 874 | 871 | ||
| 875 | However, if a command ends with point inside or at the boundary of invisible | 872 | However, if a command ends with point inside or at the boundary of |
| 876 | text, the main editing loop moves point to one of the two ends of the invisible | 873 | invisible text, the main editing loop relocates point to one of the |
| 877 | text. Which end to move to is chosen based on the following factors: make sure | 874 | two ends of the invisible text. Emacs chooses the direction of |
| 878 | that the overall movement of the command is still in the same direction, and | 875 | relocation so that it is the same as the overall movement direction of |
| 879 | prefer a position where an inserted char would not inherit the @code{invisible} | 876 | the command; if in doubt, it prefers a position where an inserted char |
| 880 | property. Additionally, if the text is not replaced by an ellipsis and the | 877 | would not inherit the @code{invisible} property. Additionally, if the |
| 881 | command only moved within the invisible text, then point is moved one extra | 878 | text is not replaced by an ellipsis and the command only moved within |
| 882 | character so as to try and reflect the command's movement by a visible movement | 879 | the invisible text, then point is moved one extra character so as to |
| 883 | of the cursor. | 880 | try and reflect the command's movement by a visible movement of the |
| 881 | cursor. | ||
| 884 | 882 | ||
| 885 | Thus, if the command moved point back to an invisible range (with the usual | 883 | Thus, if the command moved point back to an invisible range (with the usual |
| 886 | stickiness), Emacs moves point back to the beginning of that range. If the | 884 | stickiness), Emacs moves point back to the beginning of that range. If the |
| @@ -1666,8 +1664,11 @@ check the width of a character. @xref{Primitive Indent}, and | |||
| 1666 | @ref{Screen Lines}, for related functions. | 1664 | @ref{Screen Lines}, for related functions. |
| 1667 | 1665 | ||
| 1668 | @defun char-width char | 1666 | @defun char-width char |
| 1669 | This function returns the width in columns of the character @var{char}, | 1667 | This function returns the width in columns of the character |
| 1670 | if it were displayed in the current buffer and the selected window. | 1668 | @var{char}, if it were displayed in the current buffer (i.e.@: taking |
| 1669 | into account the buffer's display table, if any; @pxref{Display | ||
| 1670 | Tables}). The width of a tab character is usually @code{tab-width} | ||
| 1671 | (@pxref{Usual Display}). | ||
| 1671 | @end defun | 1672 | @end defun |
| 1672 | 1673 | ||
| 1673 | @defun string-width string | 1674 | @defun string-width string |
| @@ -1813,26 +1814,27 @@ height. | |||
| 1813 | @section Faces | 1814 | @section Faces |
| 1814 | @cindex faces | 1815 | @cindex faces |
| 1815 | 1816 | ||
| 1816 | A @dfn{face} is a collection of graphical attributes for displaying | 1817 | A @dfn{face} is a collection of graphical @dfn{attributes} for |
| 1817 | text: font, foreground color, background color, optional underlining, | 1818 | displaying text: font, foreground color, background color, optional |
| 1818 | and so on. Faces control how buffer text is displayed, and how some | 1819 | underlining, and so on. Faces control how Emacs displays text in |
| 1819 | parts of the frame, such as the mode-line, are displayed. | 1820 | buffers, as well as other parts of the frame such as the mode line. |
| 1820 | @xref{Standard Faces,,, emacs, The GNU Emacs Manual}, for the list of | 1821 | @xref{Standard Faces,,, emacs, The GNU Emacs Manual}, for the list of |
| 1821 | faces Emacs normally comes with. | 1822 | faces Emacs normally comes with. |
| 1822 | 1823 | ||
| 1823 | @cindex face id | 1824 | @cindex face id |
| 1824 | For most purposes, you refer to a face in Lisp programs using its | 1825 | For most purposes, you refer to a face in Lisp programs using its |
| 1825 | @dfn{face name}. This is either a string or (equivalently) a Lisp | 1826 | @dfn{face name}, which is usually a Lisp symbol. For backward |
| 1826 | symbol whose name is equal to that string. | 1827 | compatibility, a face name can also be a string, which is equivalent |
| 1828 | to a Lisp symbol of the same name. | ||
| 1827 | 1829 | ||
| 1828 | @defun facep object | 1830 | @defun facep object |
| 1829 | This function returns a non-@code{nil} value if @var{object} is a Lisp | 1831 | This function returns a non-@code{nil} value if @var{object} is a Lisp |
| 1830 | symbol or string that names a face. Otherwise, it returns @code{nil}. | 1832 | symbol or string that names a face. Otherwise, it returns @code{nil}. |
| 1831 | @end defun | 1833 | @end defun |
| 1832 | 1834 | ||
| 1833 | Each face name is meaningful for all frames, and by default it has | 1835 | By default, each face name corresponds to the same set of attributes |
| 1834 | the same meaning in all frames. But you can arrange to give a | 1836 | in all frames. But you can also assign a face name a special set of |
| 1835 | particular face name a special meaning in one frame if you wish. | 1837 | attributes in one frame (@pxref{Attribute Functions}). |
| 1836 | 1838 | ||
| 1837 | @menu | 1839 | @menu |
| 1838 | * Defining Faces:: How to define a face with @code{defface}. | 1840 | * Defining Faces:: How to define a face with @code{defface}. |
| @@ -1855,9 +1857,8 @@ particular face name a special meaning in one frame if you wish. | |||
| 1855 | @subsection Defining Faces | 1857 | @subsection Defining Faces |
| 1856 | 1858 | ||
| 1857 | The way to define a new face is with @code{defface}. This creates a | 1859 | The way to define a new face is with @code{defface}. This creates a |
| 1858 | kind of customization item (@pxref{Customization}) which the user can | 1860 | kind of customization item which the user can customize using the |
| 1859 | customize using the Customization buffer (@pxref{Easy Customization,,, | 1861 | Customization buffer (@pxref{Customization}). |
| 1860 | emacs, The GNU Emacs Manual}). | ||
| 1861 | 1862 | ||
| 1862 | People are sometimes tempted to create variables whose values specify | 1863 | People are sometimes tempted to create variables whose values specify |
| 1863 | which faces to use (for example, Font-Lock does this). In the vast | 1864 | which faces to use (for example, Font-Lock does this). In the vast |
| @@ -1883,14 +1884,16 @@ exactly what the @code{defface} says. | |||
| 1883 | 1884 | ||
| 1884 | The purpose of @var{spec} is to specify how the face should appear on | 1885 | The purpose of @var{spec} is to specify how the face should appear on |
| 1885 | different kinds of terminals. It should be an alist whose elements | 1886 | different kinds of terminals. It should be an alist whose elements |
| 1886 | have the form @code{(@var{display} @var{atts})}. Each element's | 1887 | have the form @code{(@var{display} @var{atts})}. @var{display} |
| 1887 | @sc{car}, @var{display}, specifies a class of terminals. (The first | 1888 | specifies a class of terminals (see below), while @var{atts} is a |
| 1888 | element, if its @sc{car} is @code{default}, is special---it specifies | 1889 | property list of face attributes and their values, specifying the |
| 1889 | defaults for the remaining elements). The element's @sc{cadr}, | 1890 | appearance of the face on matching terminals |
| 1890 | @var{atts}, is a list of face attributes and their values; it | 1891 | @iftex |
| 1891 | specifies what the face should look like on that kind of terminal. | 1892 | (see the next section for details about face attributes). |
| 1892 | The possible attributes are defined in the value of | 1893 | @end iftex |
| 1893 | @code{custom-face-attributes}. | 1894 | @ifnottex |
| 1895 | (@pxref{Face Attributes}, for details about face attributes). | ||
| 1896 | @end ifnottex | ||
| 1894 | 1897 | ||
| 1895 | The @var{display} part of an element of @var{spec} determines which | 1898 | The @var{display} part of an element of @var{spec} determines which |
| 1896 | frames the element matches. If more than one element of @var{spec} | 1899 | frames the element matches. If more than one element of @var{spec} |
| @@ -1952,29 +1955,23 @@ frame must match one of the @var{value}s specified for it in | |||
| 1952 | @end table | 1955 | @end table |
| 1953 | @end defmac | 1956 | @end defmac |
| 1954 | 1957 | ||
| 1955 | Here's how the standard face @code{region} is defined: | 1958 | Here's how the standard face @code{highlight} is defined: |
| 1956 | 1959 | ||
| 1957 | @example | 1960 | @example |
| 1958 | @group | 1961 | (defface highlight |
| 1959 | (defface region | 1962 | '((((class color) (min-colors 88) (background light)) |
| 1960 | '((((class color) (min-colors 88) (background dark)) | 1963 | :background "darkseagreen2") |
| 1961 | :background "blue3") | 1964 | (((class color) (min-colors 88) (background dark)) |
| 1962 | @end group | 1965 | :background "darkolivegreen") |
| 1963 | (((class color) (min-colors 88) (background light)) | ||
| 1964 | :background "lightgoldenrod2") | ||
| 1965 | (((class color) (min-colors 16) (background dark)) | ||
| 1966 | :background "blue3") | ||
| 1967 | (((class color) (min-colors 16) (background light)) | 1966 | (((class color) (min-colors 16) (background light)) |
| 1968 | :background "lightgoldenrod2") | 1967 | :background "darkseagreen2") |
| 1968 | (((class color) (min-colors 16) (background dark)) | ||
| 1969 | :background "darkolivegreen") | ||
| 1969 | (((class color) (min-colors 8)) | 1970 | (((class color) (min-colors 8)) |
| 1970 | :background "blue" :foreground "white") | 1971 | :background "green" :foreground "black") |
| 1971 | (((type tty) (class mono)) | 1972 | (t :inverse-video t)) |
| 1972 | :inverse-video t) | 1973 | "Basic face for highlighting." |
| 1973 | (t :background "gray")) | ||
| 1974 | @group | ||
| 1975 | "Basic face for highlighting the region." | ||
| 1976 | :group 'basic-faces) | 1974 | :group 'basic-faces) |
| 1977 | @end group | ||
| 1978 | @end example | 1975 | @end example |
| 1979 | 1976 | ||
| 1980 | Internally, @code{defface} uses the symbol property | 1977 | Internally, @code{defface} uses the symbol property |
| @@ -2010,8 +2007,8 @@ doesn't specify that attribute. In face merging, when the first face | |||
| 2010 | fails to specify a particular attribute, the next face gets a chance. | 2007 | fails to specify a particular attribute, the next face gets a chance. |
| 2011 | However, the @code{default} face must specify all attributes. | 2008 | However, the @code{default} face must specify all attributes. |
| 2012 | 2009 | ||
| 2013 | Some of these font attributes are meaningful only on certain kinds | 2010 | Some of these attributes are meaningful only on certain kinds of |
| 2014 | of displays. If your display cannot handle a certain attribute, the | 2011 | displays. If your display cannot handle a certain attribute, the |
| 2015 | attribute is ignored. | 2012 | attribute is ignored. |
| 2016 | 2013 | ||
| 2017 | @table @code | 2014 | @table @code |
| @@ -2216,20 +2213,18 @@ This function sets one or more attributes of @var{face} for | |||
| 2216 | the @code{defface} says. | 2213 | the @code{defface} says. |
| 2217 | 2214 | ||
| 2218 | The extra arguments @var{arguments} specify the attributes to set, and | 2215 | The extra arguments @var{arguments} specify the attributes to set, and |
| 2219 | the values for them. They should consist of alternating attribute names | 2216 | the values for them. They should consist of alternating attribute |
| 2220 | (such as @code{:family} or @code{:underline}) and corresponding values. | 2217 | names (such as @code{:family} or @code{:underline}) and values. Thus, |
| 2221 | Thus, | ||
| 2222 | 2218 | ||
| 2223 | @example | 2219 | @example |
| 2224 | (set-face-attribute 'foo nil | 2220 | (set-face-attribute 'foo nil |
| 2225 | :width 'extended | 2221 | :width 'extended |
| 2226 | :weight 'bold | 2222 | :weight 'bold) |
| 2227 | :underline "red") | ||
| 2228 | @end example | 2223 | @end example |
| 2229 | 2224 | ||
| 2230 | @noindent | 2225 | @noindent |
| 2231 | sets the attributes @code{:width}, @code{:weight} and @code{:underline} | 2226 | sets the attribute @code{:width} to @code{extended} and the attribute |
| 2232 | to the corresponding values. | 2227 | @code{:weight} to @code{bold}. |
| 2233 | 2228 | ||
| 2234 | If @var{frame} is @code{t}, this function sets the default attributes | 2229 | If @var{frame} is @code{t}, this function sets the default attributes |
| 2235 | for new frames. Default attribute values specified this way override | 2230 | for new frames. Default attribute values specified this way override |
| @@ -2306,54 +2301,51 @@ If @var{value1} is a relative value for the face attribute | |||
| 2306 | face attribute @var{attribute}, returns @var{value1} unchanged. | 2301 | face attribute @var{attribute}, returns @var{value1} unchanged. |
| 2307 | @end defun | 2302 | @end defun |
| 2308 | 2303 | ||
| 2309 | The following functions provide compatibility with Emacs 20 and | 2304 | The following commands and functions mostly provide compatibility |
| 2310 | below. They work by calling @code{set-face-attribute}. Values of | 2305 | with old versions of Emacs. They work by calling |
| 2311 | @code{t} and @code{nil} for their @var{frame} argument are handled | 2306 | @code{set-face-attribute}. Values of @code{t} and @code{nil} for |
| 2312 | just like @code{set-face-attribute} and @code{face-attribute}. | 2307 | their @var{frame} argument are handled just like |
| 2308 | @code{set-face-attribute} and @code{face-attribute}. The commands | ||
| 2309 | read their arguments using the minibuffer, if called interactively. | ||
| 2313 | 2310 | ||
| 2314 | @defun set-face-foreground face color &optional frame | 2311 | @deffn Command set-face-foreground face color &optional frame |
| 2315 | @defunx set-face-background face color &optional frame | 2312 | @deffnx Command set-face-background face color &optional frame |
| 2316 | These functions set the @code{:foreground} attribute (or | 2313 | These set the @code{:foreground} attribute (or @code{:background} |
| 2317 | @code{:background} attribute, respectively) of @var{face} to | 2314 | attribute, respectively) of @var{face} to @var{color}. |
| 2318 | @var{color}. | 2315 | @end deffn |
| 2319 | @end defun | ||
| 2320 | 2316 | ||
| 2321 | @defun set-face-stipple face pattern &optional frame | 2317 | @deffn Command set-face-stipple face pattern &optional frame |
| 2322 | This function sets the @code{:stipple} attribute of @var{face} to | 2318 | This sets the @code{:stipple} attribute of @var{face} to |
| 2323 | @var{pattern}. | 2319 | @var{pattern}. |
| 2324 | @end defun | 2320 | @end deffn |
| 2325 | 2321 | ||
| 2326 | @defun set-face-font face font &optional frame | 2322 | @deffn Command set-face-font face font &optional frame |
| 2327 | This function sets the @code{:font} attribute of @var{face} to | 2323 | This sets the @code{:font} attribute of @var{face} to @var{font}. |
| 2328 | @var{font}. | 2324 | @end deffn |
| 2329 | @end defun | ||
| 2330 | 2325 | ||
| 2331 | @defun set-face-bold-p face bold-p &optional frame | 2326 | @defun set-face-bold-p face bold-p &optional frame |
| 2332 | This function sets the @code{:weight} attribute of @var{face} to | 2327 | This sets the @code{:weight} attribute of @var{face} to @var{normal} |
| 2333 | @var{normal} if @var{bold-p} is @code{nil}, and to @var{bold} | 2328 | if @var{bold-p} is @code{nil}, and to @var{bold} otherwise. |
| 2334 | otherwise. | ||
| 2335 | @end defun | 2329 | @end defun |
| 2336 | 2330 | ||
| 2337 | @defun set-face-italic-p face italic-p &optional frame | 2331 | @defun set-face-italic-p face italic-p &optional frame |
| 2338 | This function sets the @code{:slant} attribute of @var{face} to | 2332 | This sets the @code{:slant} attribute of @var{face} to @var{normal} if |
| 2339 | @var{normal} if @var{italic-p} is @code{nil}, and to @var{italic} | 2333 | @var{italic-p} is @code{nil}, and to @var{italic} otherwise. |
| 2340 | otherwise. | ||
| 2341 | @end defun | 2334 | @end defun |
| 2342 | 2335 | ||
| 2343 | @defun set-face-underline-p face underline &optional frame | 2336 | @defun set-face-underline-p face underline &optional frame |
| 2344 | This function sets the @code{:underline} attribute of @var{face} to | 2337 | This sets the @code{:underline} attribute of @var{face} to |
| 2345 | @var{underline}. | 2338 | @var{underline}. |
| 2346 | @end defun | 2339 | @end defun |
| 2347 | 2340 | ||
| 2348 | @defun set-face-inverse-video-p face inverse-video-p &optional frame | 2341 | @defun set-face-inverse-video-p face inverse-video-p &optional frame |
| 2349 | This function sets the @code{:inverse-video} attribute of @var{face} | 2342 | This sets the @code{:inverse-video} attribute of @var{face} to |
| 2350 | to @var{inverse-video-p}. | 2343 | @var{inverse-video-p}. |
| 2351 | @end defun | 2344 | @end defun |
| 2352 | 2345 | ||
| 2353 | @defun invert-face face &optional frame | 2346 | @deffn Command invert-face face &optional frame |
| 2354 | This function swaps the foreground and background colors of face | 2347 | This swaps the foreground and background colors of face @var{face}. |
| 2355 | @var{face}. | 2348 | @end deffn |
| 2356 | @end defun | ||
| 2357 | 2349 | ||
| 2358 | The following functions examine the attributes of a face. If you | 2350 | The following functions examine the attributes of a face. If you |
| 2359 | don't specify @var{frame}, they refer to the selected frame; @code{t} | 2351 | don't specify @var{frame}, they refer to the selected frame; @code{t} |
| @@ -2459,27 +2451,26 @@ steps, Emacs applies the attribute of the @code{default} face. | |||
| 2459 | If these various sources together specify more than one face for a | 2451 | If these various sources together specify more than one face for a |
| 2460 | particular character, Emacs merges the attributes of the various faces | 2452 | particular character, Emacs merges the attributes of the various faces |
| 2461 | specified. For each attribute, Emacs tries using the above order | 2453 | specified. For each attribute, Emacs tries using the above order |
| 2462 | (i.e., first the face of any special glyph; then the face for region | 2454 | (i.e.@: first the face of any special glyph; then the face for region |
| 2463 | highlighting, if appropriate; then faces specified by overlays, then | 2455 | highlighting, if appropriate; and so on). |
| 2464 | faces specified by text properties, then the @code{mode-line} or | ||
| 2465 | @code{mode-line-inactive} or @code{header-line} face, if appropriate, | ||
| 2466 | and finally the @code{default} face). | ||
| 2467 | 2456 | ||
| 2468 | @node Face Remapping | 2457 | @node Face Remapping |
| 2469 | @subsection Face Remapping | 2458 | @subsection Face Remapping |
| 2470 | 2459 | ||
| 2471 | The variable @code{face-remapping-alist} is used for buffer-local or | 2460 | The variable @code{face-remapping-alist} is used for buffer-local or |
| 2472 | global changes in the appearance of a face. For instance, it can be | 2461 | global changes in the appearance of a face. For instance, it is used |
| 2473 | used to make the @code{default} face a variable-pitch face within a | 2462 | to implement the @code{text-scale-adjust} command (@pxref{Text |
| 2474 | particular buffer. | 2463 | Scale,,, emacs, The GNU Emacs Manual}). |
| 2475 | 2464 | ||
| 2476 | @defvar face-remapping-alist | 2465 | @defvar face-remapping-alist |
| 2477 | An alist whose elements have the form @code{(@var{face} | 2466 | The value of this variable is an alist whose elements have the form |
| 2478 | @var{remapping...})}. This causes Emacs to display text using the | 2467 | @code{(@var{face} . @var{remapping})}. This causes Emacs to display |
| 2479 | face @var{face} using @var{remapping...} instead of @var{face}'s | 2468 | any text having the face @var{face} with @var{remapping}, rather than |
| 2480 | ordinary definition. @var{remapping...} may be any face specification | 2469 | the ordinary definition of @var{face}. @var{remapping} may be any |
| 2481 | suitable for a @code{face} text property: either a face name, or a | 2470 | face specification suitable for a @code{face} text property: either a |
| 2482 | property list of attribute/value pairs. @xref{Special Properties}. | 2471 | face name, or a property list of attribute/value pairs, or a list in |
| 2472 | which each element is either a face name or a property list | ||
| 2473 | (@pxref{Special Properties}). | ||
| 2483 | 2474 | ||
| 2484 | If @code{face-remapping-alist} is buffer-local, its local value takes | 2475 | If @code{face-remapping-alist} is buffer-local, its local value takes |
| 2485 | effect only within that buffer. | 2476 | effect only within that buffer. |
| @@ -2488,17 +2479,15 @@ Two points bear emphasizing: | |||
| 2488 | 2479 | ||
| 2489 | @enumerate | 2480 | @enumerate |
| 2490 | @item | 2481 | @item |
| 2491 | The new definition @var{remapping...} is the complete | 2482 | @var{remapping} serves as the complete specification for the remapped |
| 2492 | specification of how to display @var{face}---it entirely replaces, | 2483 | face---it replaces the normal definition of @var{face}, instead of |
| 2493 | rather than augmenting or modifying, the normal definition of that | 2484 | modifying it. |
| 2494 | face. | ||
| 2495 | 2485 | ||
| 2496 | @item | 2486 | @item |
| 2497 | If @var{remapping...} recursively references the same face name | 2487 | If @var{remapping} references the same face name @var{face}, either |
| 2498 | @var{face}, either directly remapping entry, or via the | 2488 | directly or via the @code{:inherit} attribute of some other face in |
| 2499 | @code{:inherit} attribute of some other face in @var{remapping...}, | 2489 | @var{remapping}, that reference uses the normal definition of |
| 2500 | then that reference uses the normal definition of @var{face} in the | 2490 | @var{face}. In other words, the remapping cannot be recursive. |
| 2501 | selected frame, instead of the ``remapped'' definition. | ||
| 2502 | 2491 | ||
| 2503 | For instance, if the @code{mode-line} face is remapped using this | 2492 | For instance, if the @code{mode-line} face is remapped using this |
| 2504 | entry in @code{face-remapping-alist}: | 2493 | entry in @code{face-remapping-alist}: |
| @@ -2512,82 +2501,72 @@ then the new definition of the @code{mode-line} face inherits from the | |||
| 2512 | @end enumerate | 2501 | @end enumerate |
| 2513 | @end defvar | 2502 | @end defvar |
| 2514 | 2503 | ||
| 2515 | A typical use of the @code{face-remapping-alist} is to change a | ||
| 2516 | buffer's @code{default} face; for example, the following changes a | ||
| 2517 | buffer's @code{default} face to use the @code{variable-pitch} face, | ||
| 2518 | with the height doubled: | ||
| 2519 | |||
| 2520 | @example | ||
| 2521 | (set (make-local-variable 'face-remapping-alist) | ||
| 2522 | '((default variable-pitch :height 2.0))) | ||
| 2523 | @end example | ||
| 2524 | |||
| 2525 | The following functions implement a higher-level interface to | 2504 | The following functions implement a higher-level interface to |
| 2526 | @code{face-remapping-alist}, making it easier to use | 2505 | @code{face-remapping-alist}. Most Lisp code should use these |
| 2527 | ``cooperatively''. They are mainly intended for buffer-local use, and | 2506 | functions instead of setting @code{face-remapping-alist} directly, to |
| 2528 | so all make @code{face-remapping-alist} variable buffer-local as a | 2507 | avoid trampling on remappings applied elsewhere. These functions are |
| 2529 | side-effect. They use entries in @code{face-remapping-alist} which | 2508 | intended for buffer-local remappings, so they all make |
| 2530 | have the general form: | 2509 | @code{face-remapping-alist} buffer-local as a side-effect. They manage |
| 2510 | @code{face-remapping-alist} entries of the form | ||
| 2531 | 2511 | ||
| 2532 | @example | 2512 | @example |
| 2533 | (@var{face} @var{relative_specs_1} @var{relative_specs_2} @var{...} @var{base_specs}) | 2513 | (@var{face} @var{relative-spec-1} @var{relative-spec-2} @var{...} @var{base-spec}) |
| 2534 | @end example | 2514 | @end example |
| 2535 | 2515 | ||
| 2536 | Everything except @var{face} is a ``face spec'': a list of face names | 2516 | @noindent |
| 2537 | or face attribute-value pairs. All face specs are merged together, | 2517 | where, as explained above, each of the @var{relative-spec-N} and |
| 2538 | with earlier values taking precedence. | 2518 | @var{base-spec} is either a face name, or a property list of |
| 2539 | 2519 | attribute/value pairs. Each of the @dfn{relative remapping} entries, | |
| 2540 | The @var{relative_specs_}n values are ``relative specs'', and are | 2520 | @var{relative-spec-N}, is managed by the |
| 2541 | added by @code{face-remap-add-relative} (and removed by | 2521 | @code{face-remap-add-relative} and @code{face-remap-remove-relative} |
| 2542 | @code{face-remap-remove-relative}. These are intended for face | 2522 | functions; these are intended for simple modifications like changing |
| 2543 | modifications (such as increasing the size). Typical users of these | 2523 | the text size. The @dfn{base remapping} entry, @var{base-spec}, has |
| 2544 | relative specs would be minor modes. | 2524 | the lowest priority and is managed by the @code{face-remap-set-base} |
| 2545 | 2525 | and @code{face-remap-reset-base} functions; it is intended for major | |
| 2546 | @var{base_specs} is the lowest-priority value, and by default is just the | 2526 | modes to remap faces in the buffers they control. |
| 2547 | face name, which causes the global definition of that face to be used. | ||
| 2548 | |||
| 2549 | A non-default value of @var{base_specs} may also be set using | ||
| 2550 | @code{face-remap-set-base}. Because this @emph{overwrites} the | ||
| 2551 | default base-spec value (which inherits the global face definition), | ||
| 2552 | it is up to the caller of @code{face-remap-set-base} to add such | ||
| 2553 | inheritance if it is desired. A typical use of | ||
| 2554 | @code{face-remap-set-base} would be a major mode adding a face | ||
| 2555 | remappings, e.g., of the default face. | ||
| 2556 | |||
| 2557 | 2527 | ||
| 2558 | @defun face-remap-add-relative face &rest specs | 2528 | @defun face-remap-add-relative face &rest specs |
| 2559 | This functions adds a face remapping entry of @var{face} to @var{specs} | 2529 | This functions adds the face specifications in @var{specs} as relative |
| 2560 | in the current buffer. | 2530 | remappings for face @var{face} in the current buffer. The remaining |
| 2531 | arguments, @var{specs}, should form either a list of face names, or a | ||
| 2532 | property list of attribute/value pairs. | ||
| 2561 | 2533 | ||
| 2562 | It returns a ``cookie'' which can be used to later delete the remapping with | 2534 | The return value is a Lisp object that serves as a ``cookie''; you can |
| 2563 | @code{face-remap-remove-relative}. | 2535 | pass this object as an argument to @code{face-remap-remove-relative} |
| 2536 | if you need to remove the remapping later. | ||
| 2564 | 2537 | ||
| 2565 | @var{specs} can be any value suitable for the @code{face} text | 2538 | @example |
| 2566 | property, including a face name, a list of face names, or a | 2539 | ;; Remap the `escape-glyph' face into a combination |
| 2567 | face-attribute property list. The attributes given by @var{specs} | 2540 | ;; of the `highlight' and `italic' faces: |
| 2568 | will be merged with any other currently active face remappings of | 2541 | (face-remap-add-relative 'escape-glyph 'highlight 'italic) |
| 2569 | @var{face}, and with the global definition of @var{face} (by default; | 2542 | |
| 2570 | this may be changed using @code{face-remap-set-base}), with the most | 2543 | ;; Increase the size of the `default' face by 50%: |
| 2571 | recently added relative remapping taking precedence. | 2544 | (face-remap-add-relative 'default :height 1.5) |
| 2545 | @end example | ||
| 2572 | @end defun | 2546 | @end defun |
| 2573 | 2547 | ||
| 2574 | @defun face-remap-remove-relative cookie | 2548 | @defun face-remap-remove-relative cookie |
| 2575 | This function removes a face remapping previously added by | 2549 | This function removes a relative remapping previously added by |
| 2576 | @code{face-remap-add-relative}. @var{cookie} should be a return value | 2550 | @code{face-remap-add-relative}. @var{cookie} should be the Lisp |
| 2577 | from that function. | 2551 | object returned by @code{face-remap-add-relative} when the remapping |
| 2552 | was added. | ||
| 2578 | @end defun | 2553 | @end defun |
| 2579 | 2554 | ||
| 2580 | @defun face-remap-set-base face &rest specs | 2555 | @defun face-remap-set-base face &rest specs |
| 2581 | This function sets the ``base remapping'' of @var{face} in the current | 2556 | This function sets the base remapping of @var{face} in the current |
| 2582 | buffer to @var{specs}. If @var{specs} is empty, the default base | 2557 | buffer to @var{specs}. If @var{specs} is empty, the default base |
| 2583 | remapping is restored, which inherits from the global definition of | 2558 | remapping is restored, similar to calling @code{face-remap-reset-base} |
| 2584 | @var{face}; note that this is different from @var{specs} containing a | 2559 | (see below); note that this is different from @var{specs} containing a |
| 2585 | single value @code{nil}, which has the opposite result (the global | 2560 | single value @code{nil}, which has the opposite result (the global |
| 2586 | definition of @var{face} is ignored). | 2561 | definition of @var{face} is ignored). |
| 2562 | |||
| 2563 | This overwrites the default @var{base-spec}, which inherits the global | ||
| 2564 | face definition, so it is up to the caller to add such inheritance if | ||
| 2565 | so desired. | ||
| 2587 | @end defun | 2566 | @end defun |
| 2588 | 2567 | ||
| 2589 | @defun face-remap-reset-base face | 2568 | @defun face-remap-reset-base face |
| 2590 | This function sets the ``base remapping'' of @var{face} to its default | 2569 | This function sets the base remapping of @var{face} to its default |
| 2591 | value, which inherits from @var{face}'s global definition. | 2570 | value, which inherits from @var{face}'s global definition. |
| 2592 | @end defun | 2571 | @end defun |
| 2593 | 2572 | ||
| @@ -2596,29 +2575,8 @@ value, which inherits from @var{face}'s global definition. | |||
| 2596 | 2575 | ||
| 2597 | Here are additional functions for creating and working with faces. | 2576 | Here are additional functions for creating and working with faces. |
| 2598 | 2577 | ||
| 2599 | @defun make-face name | ||
| 2600 | This function defines a new face named @var{name}, initially with all | ||
| 2601 | attributes @code{nil}. It does nothing if there is already a face named | ||
| 2602 | @var{name}. | ||
| 2603 | @end defun | ||
| 2604 | |||
| 2605 | @defun face-list | 2578 | @defun face-list |
| 2606 | This function returns a list of all defined faces. | 2579 | This function returns a list of all defined face names. |
| 2607 | @end defun | ||
| 2608 | |||
| 2609 | @defun copy-face old-face new-name &optional frame new-frame | ||
| 2610 | This function defines a face named @var{new-name} as a copy of the existing | ||
| 2611 | face named @var{old-face}. It creates the face @var{new-name} if that | ||
| 2612 | doesn't already exist. | ||
| 2613 | |||
| 2614 | If the optional argument @var{frame} is given, this function applies | ||
| 2615 | only to that frame. Otherwise it applies to each frame individually, | ||
| 2616 | copying attributes from @var{old-face} in each frame to @var{new-face} | ||
| 2617 | in the same frame. | ||
| 2618 | |||
| 2619 | If the optional argument @var{new-frame} is given, then @code{copy-face} | ||
| 2620 | copies the attributes of @var{old-face} in @var{frame} to @var{new-name} | ||
| 2621 | in @var{new-frame}. | ||
| 2622 | @end defun | 2580 | @end defun |
| 2623 | 2581 | ||
| 2624 | @defun face-id face | 2582 | @defun face-id face |
| @@ -2752,7 +2710,7 @@ these are used for messages in @samp{*Compilation*} buffers. | |||
| 2752 | @node Font Selection | 2710 | @node Font Selection |
| 2753 | @subsection Font Selection | 2711 | @subsection Font Selection |
| 2754 | 2712 | ||
| 2755 | Before Emacs can draw a character on a particular display, it must | 2713 | Before Emacs can draw a character on a graphical display, it must |
| 2756 | select a @dfn{font} for that character@footnote{In this context, the | 2714 | select a @dfn{font} for that character@footnote{In this context, the |
| 2757 | term @dfn{font} has nothing to do with Font Lock (@pxref{Font Lock | 2715 | term @dfn{font} has nothing to do with Font Lock (@pxref{Font Lock |
| 2758 | Mode}).}. @xref{Fonts,,, emacs, The GNU Emacs Manual}. Normally, | 2716 | Mode}).}. @xref{Fonts,,, emacs, The GNU Emacs Manual}. Normally, |
| @@ -3245,9 +3203,9 @@ consecutive wildcards in the XLFD are folded into one. | |||
| 3245 | @section Fringes | 3203 | @section Fringes |
| 3246 | @cindex fringes | 3204 | @cindex fringes |
| 3247 | 3205 | ||
| 3248 | The @dfn{fringes} of a window are thin vertical strips down the | 3206 | On graphical displays, Emacs draws @dfn{fringes} next to each |
| 3249 | sides that are used for displaying bitmaps that indicate truncation, | 3207 | window: thin vertical strips down the sides which can display bitmaps |
| 3250 | continuation, horizontal scrolling, and the overlay arrow. | 3208 | indicating truncation, continuation, horizontal scrolling, and so on. |
| 3251 | 3209 | ||
| 3252 | @menu | 3210 | @menu |
| 3253 | * Fringe Size/Pos:: Specifying where to put the window fringes. | 3211 | * Fringe Size/Pos:: Specifying where to put the window fringes. |
| @@ -3262,7 +3220,7 @@ continuation, horizontal scrolling, and the overlay arrow. | |||
| 3262 | @subsection Fringe Size and Position | 3220 | @subsection Fringe Size and Position |
| 3263 | 3221 | ||
| 3264 | The following buffer-local variables control the position and width | 3222 | The following buffer-local variables control the position and width |
| 3265 | of the window fringes. | 3223 | of fringes in windows showing that buffer. |
| 3266 | 3224 | ||
| 3267 | @defvar fringes-outside-margins | 3225 | @defvar fringes-outside-margins |
| 3268 | The fringes normally appear between the display margins and the window | 3226 | The fringes normally appear between the display margins and the window |
| @@ -3282,12 +3240,17 @@ fringe in pixels. A value of @code{nil} means to use the right fringe | |||
| 3282 | width from the window's frame. | 3240 | width from the window's frame. |
| 3283 | @end defvar | 3241 | @end defvar |
| 3284 | 3242 | ||
| 3285 | The values of these variables take effect when you display the | 3243 | Any buffer which does not specify values for these variables uses |
| 3286 | buffer in a window. If you change them while the buffer is visible, | 3244 | the values specified by the @code{left-fringe} and @code{right-fringe} |
| 3287 | you can call @code{set-window-buffer} to display it once again in the | 3245 | frame parameters (@pxref{Layout Parameters}). |
| 3288 | same window, to make the changes take effect. A buffer that does not | 3246 | |
| 3289 | specify values for these variables will use the default values | 3247 | The above variables actually take effect via the function |
| 3290 | specified for the frame; see @ref{Layout Parameters}. | 3248 | @code{set-window-buffer} (@pxref{Buffers and Windows}), which calls |
| 3249 | @code{set-window-fringes} as a subroutine. If you change one of these | ||
| 3250 | variables, the fringe display is not updated in existing windows | ||
| 3251 | showing the buffer, unless you call @code{set-window-buffer} again in | ||
| 3252 | each affected window. You can also use @code{set-window-fringes} to | ||
| 3253 | control the fringe display in individual windows. | ||
| 3291 | 3254 | ||
| 3292 | @defun set-window-fringes window left &optional right outside-margins | 3255 | @defun set-window-fringes window left &optional right outside-margins |
| 3293 | This function sets the fringe widths of window @var{window}. | 3256 | This function sets the fringe widths of window @var{window}. |
| @@ -3313,9 +3276,9 @@ window is used. The value has the form @code{(@var{left-width} | |||
| 3313 | @cindex fringe indicators | 3276 | @cindex fringe indicators |
| 3314 | @cindex indicators, fringe | 3277 | @cindex indicators, fringe |
| 3315 | 3278 | ||
| 3316 | The @dfn{fringe indicators} are tiny icons Emacs displays in the | 3279 | @dfn{Fringe indicators} are tiny icons displayed in the window |
| 3317 | window fringe (on a graphic display) to indicate truncated or | 3280 | fringe to indicate truncated or continued lines, buffer boundaries, |
| 3318 | continued lines, buffer boundaries, overlay arrow, etc. | 3281 | etc. |
| 3319 | 3282 | ||
| 3320 | @defopt indicate-empty-lines | 3283 | @defopt indicate-empty-lines |
| 3321 | @cindex fringes, and empty line indication | 3284 | @cindex fringes, and empty line indication |
| @@ -3487,21 +3450,15 @@ characters appearing in the line (@pxref{Other Display Specs}). Such | |||
| 3487 | a display specification has the form | 3450 | a display specification has the form |
| 3488 | 3451 | ||
| 3489 | @example | 3452 | @example |
| 3490 | (left-fringe @var{bitmap} [@var{face}]) | 3453 | (@var{fringe} @var{bitmap} [@var{face}]) |
| 3491 | @end example | ||
| 3492 | |||
| 3493 | @noindent | ||
| 3494 | or | ||
| 3495 | |||
| 3496 | @example | ||
| 3497 | (right-fringe @var{bitmap} [@var{face}]) | ||
| 3498 | @end example | 3454 | @end example |
| 3499 | 3455 | ||
| 3500 | @noindent | 3456 | @noindent |
| 3501 | The symbol @var{bitmap} identifies the bitmap to display. The | 3457 | @var{fringe} is either the symbol @code{left-fringe} or |
| 3502 | optional @var{face} names a face whose foreground color is used to | 3458 | @code{right-fringe}. @var{bitmap} is a symbol identifying the bitmap |
| 3503 | display the bitmap; this face is automatically merged with the | 3459 | to display. The optional @var{face} names a face whose foreground |
| 3504 | @code{fringe} face. | 3460 | color is used to display the bitmap; this face is automatically merged |
| 3461 | with the @code{fringe} face. | ||
| 3505 | 3462 | ||
| 3506 | Here is a list of the standard fringe bitmaps defined in Emacs, and | 3463 | Here is a list of the standard fringe bitmaps defined in Emacs, and |
| 3507 | how they are currently used in Emacs (via | 3464 | how they are currently used in Emacs (via |
| @@ -3749,7 +3706,7 @@ to use the value specified by the frame. | |||
| 3749 | @kindex display @r{(text property)} | 3706 | @kindex display @r{(text property)} |
| 3750 | 3707 | ||
| 3751 | The @code{display} text property (or overlay property) is used to | 3708 | The @code{display} text property (or overlay property) is used to |
| 3752 | insert images into text, and also control other aspects of how text | 3709 | insert images into text, and to control other aspects of how text |
| 3753 | displays. The value of the @code{display} property should be a | 3710 | displays. The value of the @code{display} property should be a |
| 3754 | display specification, or a list or vector containing several display | 3711 | display specification, or a list or vector containing several display |
| 3755 | specifications. Display specifications in the same @code{display} | 3712 | specifications. Display specifications in the same @code{display} |
| @@ -3775,8 +3732,8 @@ display specifications and what they mean. | |||
| 3775 | @node Replacing Specs | 3732 | @node Replacing Specs |
| 3776 | @subsection Display Specs That Replace The Text | 3733 | @subsection Display Specs That Replace The Text |
| 3777 | 3734 | ||
| 3778 | Some kinds of @code{display} specifications specify something to | 3735 | Some kinds of display specifications specify something to display |
| 3779 | display instead of the text that has the property. These are called | 3736 | instead of the text that has the property. These are called |
| 3780 | @dfn{replacing} display specifications. Emacs does not allow the user | 3737 | @dfn{replacing} display specifications. Emacs does not allow the user |
| 3781 | to interactively move point into the middle of buffer text that is | 3738 | to interactively move point into the middle of buffer text that is |
| 3782 | replaced in this way. | 3739 | replaced in this way. |
| @@ -3789,47 +3746,34 @@ irrelevant, since those don't apply to the replacement. | |||
| 3789 | For replacing display specifications, ``the text that has the | 3746 | For replacing display specifications, ``the text that has the |
| 3790 | property'' means all the consecutive characters that have the same | 3747 | property'' means all the consecutive characters that have the same |
| 3791 | Lisp object as their @code{display} property; these characters are | 3748 | Lisp object as their @code{display} property; these characters are |
| 3792 | replaced as a single unit. By contrast, characters that have similar | 3749 | replaced as a single unit. If two characters have different Lisp |
| 3793 | but distinct Lisp objects as their @code{display} properties are | 3750 | objects as their @code{display} properties (i.e.@: objects which are |
| 3794 | handled separately. Here's a function that illustrates this point: | 3751 | not @code{eq}), they are handled separately. |
| 3795 | |||
| 3796 | @smallexample | ||
| 3797 | (defun foo () | ||
| 3798 | (goto-char (point-min)) | ||
| 3799 | (dotimes (i 5) | ||
| 3800 | (let ((string (concat "A"))) | ||
| 3801 | (put-text-property (point) (1+ (point)) 'display string) | ||
| 3802 | (forward-char 1) | ||
| 3803 | (put-text-property (point) (1+ (point)) 'display string) | ||
| 3804 | (forward-char 1)))) | ||
| 3805 | @end smallexample | ||
| 3806 | 3752 | ||
| 3807 | @noindent | 3753 | Here is an example which illustrates this point. A string serves as |
| 3808 | It gives each of the first ten characters in the buffer string | 3754 | a replacing display specification, which replaces the text that has |
| 3809 | @code{"A"} as the @code{display} property, but they don't all get the | 3755 | the property with the specified string (@pxref{Other Display Specs}). |
| 3810 | same string. The first two characters get the same string, so they | 3756 | Consider the following function: |
| 3811 | together are replaced with one @samp{A}. The next two characters get | ||
| 3812 | a second string, so they together are replaced with one @samp{A}. | ||
| 3813 | Likewise for each following pair of characters. Thus, the ten | ||
| 3814 | characters appear as five A's. This function would have the same | ||
| 3815 | results: | ||
| 3816 | 3757 | ||
| 3817 | @smallexample | 3758 | @smallexample |
| 3818 | (defun foo () | 3759 | (defun foo () |
| 3819 | (goto-char (point-min)) | ||
| 3820 | (dotimes (i 5) | 3760 | (dotimes (i 5) |
| 3821 | (let ((string (concat "A"))) | 3761 | (let ((string (concat "A")) |
| 3822 | (put-text-property (point) (+ 2 (point)) 'display string) | 3762 | (start (+ i i (point-min)))) |
| 3823 | (put-text-property (point) (1+ (point)) 'display string) | 3763 | (put-text-property start (1+ start) 'display string) |
| 3824 | (forward-char 2)))) | 3764 | (put-text-property start (+ 2 start) 'display string)))) |
| 3825 | @end smallexample | 3765 | @end smallexample |
| 3826 | 3766 | ||
| 3827 | @noindent | 3767 | @noindent |
| 3828 | This illustrates that what matters is the property value for | 3768 | This function gives each of the first ten characters in the buffer a |
| 3829 | each character. If two consecutive characters have the same | 3769 | @code{display} property which is a string @code{"A"}, but they don't |
| 3830 | object as the @code{display} property value, it's irrelevant | 3770 | all get the same string object. The first two characters get the same |
| 3831 | whether they got this property from a single call to | 3771 | string object, so they are replaced with one @samp{A}; the fact that |
| 3832 | @code{put-text-property} or from two different calls. | 3772 | the display property was assigned in two separate calls to |
| 3773 | @code{put-text-property} is irrelevant. Similarly, the next two | ||
| 3774 | characters get a second string (@code{concat} creates a new string | ||
| 3775 | object), so they are replaced with one @samp{A}; and so on. Thus, the | ||
| 3776 | ten characters appear as five A's. | ||
| 3833 | 3777 | ||
| 3834 | @node Specified Space | 3778 | @node Specified Space |
| 3835 | @subsection Specified Spaces | 3779 | @subsection Specified Spaces |
| @@ -4991,29 +4935,24 @@ debugging. | |||
| 4991 | @cindex buttons in buffers | 4935 | @cindex buttons in buffers |
| 4992 | @cindex clickable buttons in buffers | 4936 | @cindex clickable buttons in buffers |
| 4993 | 4937 | ||
| 4994 | The @emph{button} package defines functions for inserting and | 4938 | The Button package defines functions for inserting and manipulating |
| 4995 | manipulating clickable (with the mouse, or via keyboard commands) | 4939 | @dfn{buttons} that can be activated with the mouse or via keyboard |
| 4996 | buttons in Emacs buffers, such as might be used for help hyper-links, | 4940 | commands. These buttons are typically used for various kinds of |
| 4997 | etc. Emacs uses buttons for the hyper-links in help text and the like. | 4941 | hyperlinks. |
| 4998 | 4942 | ||
| 4999 | A button is essentially a set of properties attached (via text | 4943 | A button is essentially a set of text or overlay properties, |
| 5000 | properties or overlays) to a region of text in an Emacs buffer. These | 4944 | attached to a stretch of text in a buffer. These properties are |
| 5001 | properties are called @dfn{button properties}. | 4945 | called @dfn{button properties}. One of these properties, the |
| 5002 | 4946 | @dfn{action property}, specifies a function which is called when the | |
| 5003 | One of these properties (@code{action}) is a function, which will | 4947 | user invokes the button using the keyboard or the mouse. The action |
| 5004 | be called when the user invokes it using the keyboard or the mouse. | 4948 | function may examine the button and use its other properties as |
| 5005 | The invoked function may then examine the button and use its other | 4949 | desired. |
| 5006 | properties as desired. | 4950 | |
| 5007 | 4951 | In some ways, the Button package duplicates the functionality in the | |
| 5008 | In some ways the Emacs button package duplicates functionality offered | 4952 | Widget package. @xref{Top, , Introduction, widget, The Emacs Widget |
| 5009 | by the widget package (@pxref{Top, , Introduction, widget, The Emacs | 4953 | Library}. The advantage of the Button package is that it is faster, |
| 5010 | Widget Library}), but the button package has the advantage that it is | 4954 | smaller, and simpler to program. From the point of view of the user, |
| 5011 | much faster, much smaller, and much simpler to use (for elisp | 4955 | the interfaces produced by the two packages are very similar. |
| 5012 | programmers---for users, the result is about the same). The extra | ||
| 5013 | speed and space savings are useful mainly if you need to create many | ||
| 5014 | buttons in a buffer (for instance an @code{*Apropos*} buffer uses | ||
| 5015 | buttons to make entries clickable, and may contain many thousands of | ||
| 5016 | entries). | ||
| 5017 | 4956 | ||
| 5018 | @menu | 4957 | @menu |
| 5019 | * Button Properties:: Button properties with special meanings. | 4958 | * Button Properties:: Button properties with special meanings. |
| @@ -5027,10 +4966,10 @@ entries). | |||
| 5027 | @subsection Button Properties | 4966 | @subsection Button Properties |
| 5028 | @cindex button properties | 4967 | @cindex button properties |
| 5029 | 4968 | ||
| 5030 | Buttons have an associated list of properties defining their | 4969 | Each button has an associated list of properties defining its |
| 5031 | appearance and behavior, and other arbitrary properties may be used | 4970 | appearance and behavior, and other arbitrary properties may be used |
| 5032 | for application specific purposes. Some properties that have special | 4971 | for application specific purposes. The following properties have |
| 5033 | meaning to the button package include: | 4972 | special meaning to the Button package: |
| 5034 | 4973 | ||
| 5035 | @table @code | 4974 | @table @code |
| 5036 | @item action | 4975 | @item action |
| @@ -5066,9 +5005,7 @@ in the variable @code{button-map}, which defines @key{RET} and | |||
| 5066 | 5005 | ||
| 5067 | @item type | 5006 | @item type |
| 5068 | @kindex type @r{(button property)} | 5007 | @kindex type @r{(button property)} |
| 5069 | The button-type of the button. When creating a button, this is | 5008 | The button type. @xref{Button Types}. |
| 5070 | usually specified using the @code{:type} keyword argument. | ||
| 5071 | @xref{Button Types}. | ||
| 5072 | 5009 | ||
| 5073 | @item help-echo | 5010 | @item help-echo |
| 5074 | @kindex help-index @r{(button property)} | 5011 | @kindex help-index @r{(button property)} |
| @@ -5094,7 +5031,7 @@ button, but these are not generally interesting for typical uses. | |||
| 5094 | @subsection Button Types | 5031 | @subsection Button Types |
| 5095 | @cindex button types | 5032 | @cindex button types |
| 5096 | 5033 | ||
| 5097 | Every button has a button @emph{type}, which defines default values | 5034 | Every button has a @dfn{button type}, which defines default values |
| 5098 | for the button's properties. Button types are arranged in a | 5035 | for the button's properties. Button types are arranged in a |
| 5099 | hierarchy, with specialized types inheriting from more general types, | 5036 | hierarchy, with specialized types inheriting from more general types, |
| 5100 | so that it's easy to define special-purpose types of buttons for | 5037 | so that it's easy to define special-purpose types of buttons for |
| @@ -5159,18 +5096,17 @@ This insert a button with the label @var{label} at point, | |||
| 5159 | and returns it. | 5096 | and returns it. |
| 5160 | @end defun | 5097 | @end defun |
| 5161 | 5098 | ||
| 5162 | The following functions are similar, but use Emacs text properties | 5099 | The following functions are similar, but using text properties |
| 5163 | (@pxref{Text Properties}) to hold the button properties, making the | 5100 | (@pxref{Text Properties}) to hold the button properties. Such buttons |
| 5164 | button actually part of the text instead of being a property of the | 5101 | do not add markers to the buffer, so editing in the buffer does not |
| 5165 | buffer. Buttons using text properties do not create markers into the | 5102 | slow down if there is an extremely large numbers of buttons. However, |
| 5166 | buffer, which is important for speed when you use extremely large | 5103 | if there is an existing face text property on the text (e.g.@: a face |
| 5167 | numbers of buttons. (However, if there is an existing face text | 5104 | assigned by Font Lock mode), the button face may not be visible. Both |
| 5168 | property at the site of the button, the button face may not be visible.) | 5105 | of these functions return the starting position of the new button. |
| 5169 | Both functions return the position of the start of the new button: | ||
| 5170 | 5106 | ||
| 5171 | @defun make-text-button beg end &rest properties | 5107 | @defun make-text-button beg end &rest properties |
| 5172 | This makes a button from @var{beg} to @var{end} in the current buffer, using | 5108 | This makes a button from @var{beg} to @var{end} in the current buffer, |
| 5173 | text properties. | 5109 | using text properties. |
| 5174 | @end defun | 5110 | @end defun |
| 5175 | 5111 | ||
| 5176 | @defun insert-text-button label &rest properties | 5112 | @defun insert-text-button label &rest properties |
| @@ -5229,7 +5165,9 @@ Return @code{t} if @var{button} has button-type @var{type}, or one of | |||
| 5229 | @end defun | 5165 | @end defun |
| 5230 | 5166 | ||
| 5231 | @defun button-at pos | 5167 | @defun button-at pos |
| 5232 | Return the button at position @var{pos} in the current buffer, or @code{nil}. | 5168 | Return the button at position @var{pos} in the current buffer, or |
| 5169 | @code{nil}. If the button at @var{pos} is a text property button, the | ||
| 5170 | return value is a marker pointing to @var{pos}. | ||
| 5233 | @end defun | 5171 | @end defun |
| 5234 | 5172 | ||
| 5235 | @defun button-type-put type prop val | 5173 | @defun button-type-put type prop val |
| @@ -5253,12 +5191,12 @@ buttons in an Emacs buffer. | |||
| 5253 | 5191 | ||
| 5254 | @code{push-button} is the command that a user uses to actually `push' | 5192 | @code{push-button} is the command that a user uses to actually `push' |
| 5255 | a button, and is bound by default in the button itself to @key{RET} | 5193 | a button, and is bound by default in the button itself to @key{RET} |
| 5256 | and to @key{mouse-2} using a region-specific keymap. Commands | 5194 | and to @key{mouse-2} using a local keymap in the button's overlay or |
| 5257 | that are useful outside the buttons itself, such as | 5195 | text properties. Commands that are useful outside the buttons itself, |
| 5258 | @code{forward-button} and @code{backward-button} are additionally | 5196 | such as @code{forward-button} and @code{backward-button} are |
| 5259 | available in the keymap stored in @code{button-buffer-map}; a mode | 5197 | additionally available in the keymap stored in |
| 5260 | which uses buttons may want to use @code{button-buffer-map} as a | 5198 | @code{button-buffer-map}; a mode which uses buttons may want to use |
| 5261 | parent keymap for its keymap. | 5199 | @code{button-buffer-map} as a parent keymap for its keymap. |
| 5262 | 5200 | ||
| 5263 | If the button has a non-@code{nil} @code{follow-link} property, and | 5201 | If the button has a non-@code{nil} @code{follow-link} property, and |
| 5264 | @var{mouse-1-click-follows-link} is set, a quick @key{Mouse-1} click | 5202 | @var{mouse-1-click-follows-link} is set, a quick @key{Mouse-1} click |
| @@ -5701,70 +5639,111 @@ Here is an example of calling this function explicitly. | |||
| 5701 | @end smallexample | 5639 | @end smallexample |
| 5702 | @end deffn | 5640 | @end deffn |
| 5703 | 5641 | ||
| 5642 | @node Character Display | ||
| 5643 | @section Character Display | ||
| 5644 | |||
| 5645 | @cindex glyph | ||
| 5646 | This section describes how characters are actually displayed by Emacs. | ||
| 5647 | Typically, a character is displayed as a @dfn{glyph} (a graphical | ||
| 5648 | symbol which occupies one character position on the screen), whose | ||
| 5649 | appearance corresponds to the character itself. For example, the | ||
| 5650 | character @samp{a} (character code 97) is displayed as @samp{a}. Some | ||
| 5651 | characters, however, are displayed specially. For example, the | ||
| 5652 | formfeed character (character code 12) is usually displayed as a | ||
| 5653 | sequence of two glyphs, @samp{^L}, while the newline character | ||
| 5654 | (character code 10) starts a new screen line. | ||
| 5655 | |||
| 5656 | You can modify how each character is displayed by defining a | ||
| 5657 | @dfn{display table}, which maps each character code into a sequence of | ||
| 5658 | glyphs. @xref{Display Tables}. A related feature, called the | ||
| 5659 | @dfn{glyph table}, allows you to control how each character is | ||
| 5660 | displayed on a text terminal. @xref{Glyphs}. | ||
| 5661 | |||
| 5662 | |||
| 5663 | @menu | ||
| 5664 | * Usual Display:: The usual conventions for displaying characters. | ||
| 5665 | * Display Tables:: What a display table consists of. | ||
| 5666 | * Active Display Table:: How Emacs selects a display table to use. | ||
| 5667 | * Glyphs:: How to define a glyph, and what glyphs mean. | ||
| 5668 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 5669 | @end menu | ||
| 5670 | |||
| 5704 | @node Usual Display | 5671 | @node Usual Display |
| 5705 | @section Usual Display Conventions | 5672 | @subsection Usual Display Conventions |
| 5706 | 5673 | ||
| 5707 | The usual display conventions define how to display each character | 5674 | Here are the usual conventions for display each character code (in |
| 5708 | code. You can override these conventions by setting up a display table | 5675 | the absence of a display table, which can override these |
| 5709 | (@pxref{Display Tables}). Here are the usual display conventions: | 5676 | @iftex |
| 5677 | conventions). | ||
| 5678 | @end iftex | ||
| 5679 | @ifnottex | ||
| 5680 | conventions; @pxref{Display Tables}). | ||
| 5681 | @end ifnottex | ||
| 5710 | 5682 | ||
| 5683 | @cindex printable ASCII characters | ||
| 5711 | @itemize @bullet | 5684 | @itemize @bullet |
| 5712 | @item | 5685 | @item |
| 5713 | Character codes 32 through 126 map to glyph codes 32 through 126. | 5686 | The @dfn{printable @acronym{ASCII} characters}, character codes 32 |
| 5714 | Normally this means they display as themselves, but a display table | 5687 | through 126 (consisting of numerals, English letters, and symbols like |
| 5715 | can change that. | 5688 | @samp{#}) are displayed literally, i.e.@: they map onto glyph codes 32 |
| 5689 | through 126. | ||
| 5716 | 5690 | ||
| 5717 | @item | 5691 | @item |
| 5718 | Character code 9 is a horizontal tab. It displays as whitespace | 5692 | The tab character (character code 9) displays as whitespace stretching |
| 5719 | up to a position determined by @code{tab-width}. | 5693 | up to the next tab stop column. @xref{Text Display,,, emacs, The GNU |
| 5694 | Emacs Manual}. The variable @code{tab-width} controls the number of | ||
| 5695 | spaces per tab stop (see below). | ||
| 5720 | 5696 | ||
| 5721 | @item | 5697 | @item |
| 5722 | Character code 10 is a newline. It is normally invisible on display, | 5698 | The newline character (character code 10) has the effect of ending the |
| 5723 | and has the effect of ending the preceding line and starting a new | 5699 | preceding line and starting a new line. |
| 5724 | line. | ||
| 5725 | 5700 | ||
| 5701 | @cindex ASCII control characters | ||
| 5726 | @item | 5702 | @item |
| 5727 | All other codes in the range 0 through 31 display in one of two ways | 5703 | The non-printable @dfn{@acronym{ASCII} control characters}---character |
| 5728 | according to the value of @code{ctl-arrow}. If it is non-@code{nil}, | 5704 | codes 0 through 31, as well as the @key{DEL} character (character code |
| 5729 | these codes map to sequences of two glyphs, where the first glyph is | 5705 | 127)---display in one of two ways according to the variable |
| 5730 | the @acronym{ASCII} code for @samp{^}. (A display table can specify a | 5706 | @code{ctl-arrow}. If this variable is non-@code{nil} (the default), |
| 5731 | glyph to use instead of @samp{^}.) Otherwise, these codes map just | 5707 | these characters are displayed as sequences of two glyphs, where the |
| 5732 | like the raw bytes in the range 128 to 255 (described below). | 5708 | first glyph is @samp{^} (a display table can specify a glyph to use |
| 5709 | instead of @samp{^}); e.g.@: the @key{DEL} character is displayed as | ||
| 5710 | @samp{^?}. | ||
| 5711 | |||
| 5712 | If @code{ctl-arrow} is @code{nil}, these characters are displayed as | ||
| 5713 | octal escapes (see below). | ||
| 5714 | |||
| 5715 | This rule also applies to carriage return (character code 13), if that | ||
| 5716 | character appears in the buffer. But carriage returns usually do not | ||
| 5717 | appear in buffer text; they are eliminated as part of end-of-line | ||
| 5718 | conversion (@pxref{Coding System Basics}). | ||
| 5733 | 5719 | ||
| 5734 | @cindex octal escapes | 5720 | @cindex octal escapes |
| 5735 | @item | 5721 | @item |
| 5736 | Raw bytes (@pxref{Text Representations}) with codes 128 through 255, | 5722 | @dfn{Raw bytes} are non-@acronym{ASCII} characters with codes 128 |
| 5737 | and the @acronym{ASCII} control character with code 127, display as | 5723 | through 255 (@pxref{Text Representations}). These characters display |
| 5738 | sequences of four glyphs, where the first glyph is the @acronym{ASCII} | 5724 | as @dfn{octal escapes}: sequences of four glyphs, where the first |
| 5739 | code for @samp{\}, and the others are digit characters representing | 5725 | glyph is the @acronym{ASCII} code for @samp{\}, and the others are |
| 5740 | the character code in octal. (A display table can specify a glyph to | 5726 | digit characters representing the character code in octal. (A display |
| 5741 | use instead of @samp{\}.) This is known as the @dfn{octal escape} | 5727 | table can specify a glyph to use instead of @samp{\}.) |
| 5742 | display. | ||
| 5743 | 5728 | ||
| 5744 | @item | 5729 | @item |
| 5745 | Non-@acronym{ASCII} character codes above 127 are displayed as | 5730 | Each non-@acronym{ASCII} character with code above 255 is displayed |
| 5746 | themselves, if the terminal and the available fonts support them. | 5731 | literally, if the terminal supports it. If the terminal does not |
| 5747 | Characters that are not supported by the terminal, or (on window | 5732 | support it, the character is said to be @dfn{glyphless}, and it is |
| 5748 | systems) have no fonts available for them, are displayed as a question | 5733 | usually displayed using a placeholder glyph. For example, if a |
| 5749 | mark or a hex code or an empty box. @xref{Glyphless Chars}, for how | 5734 | graphical terminal has no font for a character, Emacs usually displays |
| 5750 | to control display of the characters not supported by the terminal or | 5735 | a box containing the character code in hexadecimal. @xref{Glyphless |
| 5751 | fonts. Display tables can change how a character is displayed, even | 5736 | Chars}. |
| 5752 | if it is supported. | ||
| 5753 | @end itemize | 5737 | @end itemize |
| 5754 | 5738 | ||
| 5755 | The usual display conventions apply even when there is a display | 5739 | The above display conventions apply even when there is a display |
| 5756 | table, for any character whose entry in the active display table is | 5740 | table, for any character whose entry in the active display table is |
| 5757 | @code{nil}. Thus, when you set up a display table, you need only | 5741 | @code{nil}. Thus, when you set up a display table, you need only |
| 5758 | specify the characters for which you want special behavior. | 5742 | specify the characters for which you want special behavior. |
| 5759 | 5743 | ||
| 5760 | These display rules apply to carriage return (character code 13), when | 5744 | The following variables affect how certain characters are displayed |
| 5761 | it appears in the buffer. But that character may not appear in the | 5745 | on the screen. Since they change the number of columns the characters |
| 5762 | buffer where you expect it, if it was eliminated as part of end-of-line | 5746 | occupy, they also affect the indentation functions. They also affect |
| 5763 | conversion (@pxref{Coding System Basics}). | ||
| 5764 | |||
| 5765 | These variables affect the way certain characters are displayed on the | ||
| 5766 | screen. Since they change the number of columns the characters occupy, | ||
| 5767 | they also affect the indentation functions. These variables also affect | ||
| 5768 | how the mode line is displayed; if you want to force redisplay of the | 5747 | how the mode line is displayed; if you want to force redisplay of the |
| 5769 | mode line using the new values, call the function | 5748 | mode line using the new values, call the function |
| 5770 | @code{force-mode-line-update} (@pxref{Mode Line Format}). | 5749 | @code{force-mode-line-update} (@pxref{Mode Line Format}). |
| @@ -5787,34 +5766,14 @@ command @code{tab-to-tab-stop}. @xref{Indent Tabs}. | |||
| 5787 | @end defopt | 5766 | @end defopt |
| 5788 | 5767 | ||
| 5789 | @node Display Tables | 5768 | @node Display Tables |
| 5790 | @section Display Tables | 5769 | @subsection Display Tables |
| 5791 | 5770 | ||
| 5792 | @cindex display table | 5771 | @cindex display table |
| 5793 | You can use the @dfn{display table} feature to control how all possible | 5772 | A display table is a special-purpose char-table |
| 5794 | character codes display on the screen. This is useful for displaying | 5773 | (@pxref{Char-Tables}), with @code{display-table} as its subtype, which |
| 5795 | European languages that have letters not in the @acronym{ASCII} character | 5774 | is used to override the usual character display conventions. This |
| 5796 | set. | 5775 | section describes how to make, inspect, and assign elements to a |
| 5797 | 5776 | display table object. | |
| 5798 | The display table maps each character code into a sequence of | ||
| 5799 | @dfn{glyphs}, each glyph being a graphic that takes up one character | ||
| 5800 | position on the screen. You can also define how to display each glyph | ||
| 5801 | on your terminal, using the @dfn{glyph table}. | ||
| 5802 | |||
| 5803 | Display tables affect how the mode line is displayed; if you want to | ||
| 5804 | force redisplay of the mode line using a new display table, call | ||
| 5805 | @code{force-mode-line-update} (@pxref{Mode Line Format}). | ||
| 5806 | |||
| 5807 | @menu | ||
| 5808 | * Display Table Format:: What a display table consists of. | ||
| 5809 | * Active Display Table:: How Emacs selects a display table to use. | ||
| 5810 | * Glyphs:: How to define a glyph, and what glyphs mean. | ||
| 5811 | @end menu | ||
| 5812 | |||
| 5813 | @node Display Table Format | ||
| 5814 | @subsection Display Table Format | ||
| 5815 | |||
| 5816 | A display table is actually a char-table (@pxref{Char-Tables}) with | ||
| 5817 | @code{display-table} as its subtype. | ||
| 5818 | 5777 | ||
| 5819 | @defun make-display-table | 5778 | @defun make-display-table |
| 5820 | This creates and returns a display table. The table initially has | 5779 | This creates and returns a display table. The table initially has |
| @@ -5823,10 +5782,10 @@ This creates and returns a display table. The table initially has | |||
| 5823 | 5782 | ||
| 5824 | The ordinary elements of the display table are indexed by character | 5783 | The ordinary elements of the display table are indexed by character |
| 5825 | codes; the element at index @var{c} says how to display the character | 5784 | codes; the element at index @var{c} says how to display the character |
| 5826 | code @var{c}. The value should be @code{nil} or a vector of the | 5785 | code @var{c}. The value should be @code{nil} (which means to display |
| 5827 | glyphs to be output (@pxref{Glyphs}). @code{nil} says to display the | 5786 | the character @var{c} according to the usual display conventions; |
| 5828 | character @var{c} according to the usual display conventions | 5787 | @pxref{Usual Display}), or a vector of glyph codes (which means to |
| 5829 | (@pxref{Usual Display}). | 5788 | display the character @var{c} as those glyphs; @pxref{Glyphs}). |
| 5830 | 5789 | ||
| 5831 | @strong{Warning:} if you use the display table to change the display | 5790 | @strong{Warning:} if you use the display table to change the display |
| 5832 | of newline characters, the whole buffer will be displayed as one long | 5791 | of newline characters, the whole buffer will be displayed as one long |
| @@ -5871,12 +5830,11 @@ effect of setting @code{ctl-arrow} to a non-@code{nil} value: | |||
| 5871 | 5830 | ||
| 5872 | @example | 5831 | @example |
| 5873 | (setq disptab (make-display-table)) | 5832 | (setq disptab (make-display-table)) |
| 5874 | (let ((i 0)) | 5833 | (dotimes (i 32) |
| 5875 | (while (< i 32) | 5834 | (or (= i ?\t) |
| 5876 | (or (= i ?\t) (= i ?\n) | 5835 | (= i ?\n) |
| 5877 | (aset disptab i (vector ?^ (+ i 64)))) | 5836 | (aset disptab i (vector ?^ (+ i 64))))) |
| 5878 | (setq i (1+ i))) | 5837 | (aset disptab 127 (vector ?^ ??)) |
| 5879 | (aset disptab 127 (vector ?^ ??))) | ||
| 5880 | @end example | 5838 | @end example |
| 5881 | 5839 | ||
| 5882 | @defun display-table-slot display-table slot | 5840 | @defun display-table-slot display-table slot |
| @@ -5909,17 +5867,19 @@ help buffer. | |||
| 5909 | @subsection Active Display Table | 5867 | @subsection Active Display Table |
| 5910 | @cindex active display table | 5868 | @cindex active display table |
| 5911 | 5869 | ||
| 5912 | Each window can specify a display table, and so can each buffer. When | 5870 | Each window can specify a display table, and so can each buffer. |
| 5913 | a buffer @var{b} is displayed in window @var{w}, display uses the | 5871 | The window's display table, if there is one, takes precedence over the |
| 5914 | display table for window @var{w} if it has one; otherwise, the display | 5872 | buffer's display table. If neither exists, Emacs tries to use the |
| 5915 | table for buffer @var{b} if it has one; otherwise, the standard display | 5873 | standard display table; if that is @code{nil}, Emacs uses the usual |
| 5916 | table if any. The display table chosen is called the @dfn{active} | 5874 | character display conventions (@pxref{Usual Display}). |
| 5917 | display table. | 5875 | |
| 5876 | Note that display tables affect how the mode line is displayed, so | ||
| 5877 | if you want to force redisplay of the mode line using a new display | ||
| 5878 | table, call @code{force-mode-line-update} (@pxref{Mode Line Format}). | ||
| 5918 | 5879 | ||
| 5919 | @defun window-display-table &optional window | 5880 | @defun window-display-table &optional window |
| 5920 | This function returns @var{window}'s display table, or @code{nil} | 5881 | This function returns @var{window}'s display table, or @code{nil} if |
| 5921 | if @var{window} does not have an assigned display table. The default | 5882 | there is none. The default for @var{window} is the selected window. |
| 5922 | for @var{window} is the selected window. | ||
| 5923 | @end defun | 5883 | @end defun |
| 5924 | 5884 | ||
| 5925 | @defun set-window-display-table window table | 5885 | @defun set-window-display-table window table |
| @@ -5929,39 +5889,29 @@ The argument @var{table} should be either a display table or | |||
| 5929 | @end defun | 5889 | @end defun |
| 5930 | 5890 | ||
| 5931 | @defvar buffer-display-table | 5891 | @defvar buffer-display-table |
| 5932 | This variable is automatically buffer-local in all buffers; its value in | 5892 | This variable is automatically buffer-local in all buffers; its value |
| 5933 | a particular buffer specifies the display table for that buffer. If it | 5893 | specifies the buffer's display table. If it is @code{nil}, there is |
| 5934 | is @code{nil}, that means the buffer does not have an assigned display | 5894 | no buffer display table. |
| 5935 | table. | ||
| 5936 | @end defvar | 5895 | @end defvar |
| 5937 | 5896 | ||
| 5938 | @defvar standard-display-table | 5897 | @defvar standard-display-table |
| 5939 | This variable's value is the default display table, used whenever a | 5898 | The value of this variable is the standard display table, which is |
| 5940 | window has no display table and neither does the buffer displayed in | 5899 | used when Emacs is displaying a buffer in a window with neither a |
| 5941 | that window. This variable is @code{nil} by default. | 5900 | window display table nor a buffer display table defined. Its default |
| 5901 | is @code{nil}. | ||
| 5942 | @end defvar | 5902 | @end defvar |
| 5943 | 5903 | ||
| 5944 | If there is no display table to use for a particular window---that is, | 5904 | The @file{disp-table} library defines several functions for changing |
| 5945 | if the window specifies none, its buffer specifies none, and | 5905 | the standard display table. |
| 5946 | @code{standard-display-table} is @code{nil}---then Emacs uses the usual | ||
| 5947 | display conventions for all character codes in that window. @xref{Usual | ||
| 5948 | Display}. | ||
| 5949 | |||
| 5950 | A number of functions for changing the standard display table | ||
| 5951 | are defined in the library @file{disp-table}. | ||
| 5952 | 5906 | ||
| 5953 | @node Glyphs | 5907 | @node Glyphs |
| 5954 | @subsection Glyphs | 5908 | @subsection Glyphs |
| 5955 | 5909 | ||
| 5956 | @cindex glyph | 5910 | A @dfn{glyph} is a graphical symbol which occupies a single |
| 5957 | A @dfn{glyph} is a generalization of a character; it stands for an | 5911 | character position on the screen. Each glyph is represented in Lisp |
| 5958 | image that takes up a single character position on the screen. Normally | 5912 | as a @dfn{glyph code}. A glyph code can be @dfn{simple}, or it can be |
| 5959 | glyphs come from vectors in the display table (@pxref{Display Tables}). | 5913 | defined by the @dfn{glyph table}. A simple glyph code is just a way |
| 5960 | 5914 | of specifying a character and a face to output it in. @xref{Faces}. | |
| 5961 | A glyph is represented in Lisp as a @dfn{glyph code}. A glyph code | ||
| 5962 | can be @dfn{simple} or it can be defined by the @dfn{glyph table}. A | ||
| 5963 | simple glyph code is just a way of specifying a character and a face | ||
| 5964 | to output it in. @xref{Faces}. | ||
| 5965 | 5915 | ||
| 5966 | The following functions are used to manipulate simple glyph codes: | 5916 | The following functions are used to manipulate simple glyph codes: |
| 5967 | 5917 | ||
| @@ -6054,6 +6004,99 @@ non-@code{nil}, it takes precedence over the @code{visible-bell} | |||
| 6054 | variable. | 6004 | variable. |
| 6055 | @end defvar | 6005 | @end defvar |
| 6056 | 6006 | ||
| 6007 | @node Glyphless Chars | ||
| 6008 | @subsection Glyphless Character Display | ||
| 6009 | @cindex glyphless characters | ||
| 6010 | |||
| 6011 | @dfn{Glyphless characters} are not displayed in the usual way when | ||
| 6012 | they appear in a buffer, but in some special way (e.g. as a box | ||
| 6013 | containing a hexadecimal code). These include characters that cannot | ||
| 6014 | be displayed with any available font (on a graphical display), or that | ||
| 6015 | cannot be encoded by the terminal's coding system (on a text | ||
| 6016 | terminal). Specific characters can also be defined to be glyphless. | ||
| 6017 | |||
| 6018 | @defvar glyphless-char-display | ||
| 6019 | The value of this variable is a char-table that defines glyphless | ||
| 6020 | characters and how they are displayed. If an entry is @code{nil}, the | ||
| 6021 | corresponding character is displayed in its usual way. Otherwise, an | ||
| 6022 | entry should be one of the following display methods: | ||
| 6023 | |||
| 6024 | @table @asis | ||
| 6025 | @item @code{zero-width} | ||
| 6026 | Don't display the character. | ||
| 6027 | |||
| 6028 | @item @code{thin-space} | ||
| 6029 | Display a thin space, 1-pixel wide on graphical displays, or | ||
| 6030 | 1-character wide on text terminals. | ||
| 6031 | |||
| 6032 | @item @code{empty-box} | ||
| 6033 | Display an empty box. | ||
| 6034 | |||
| 6035 | @item @code{hex-code} | ||
| 6036 | Display a box containing the Unicode codepoint of the character, in | ||
| 6037 | hexadecimal notation. | ||
| 6038 | |||
| 6039 | @item an @acronym{ASCII} string | ||
| 6040 | Display a box containing that string. | ||
| 6041 | @end table | ||
| 6042 | |||
| 6043 | @noindent | ||
| 6044 | Except for @code{zero-width}, these methods display using the | ||
| 6045 | @code{glyphless-char} face. | ||
| 6046 | |||
| 6047 | An entry can also be a cons cell @code{(@var{graphical} | ||
| 6048 | . @var{text})}, where @var{graphical} and @var{text} are the display | ||
| 6049 | methods on graphical displays and text terminals respectively. | ||
| 6050 | |||
| 6051 | The char-table has one extra slot, which determines how to display any | ||
| 6052 | character that cannot be displayed with any available font, or cannot | ||
| 6053 | be encoded by the terminal's coding system. Its value should be one | ||
| 6054 | of the above display methods, except @code{zero-width} or a cons cell. | ||
| 6055 | @end defvar | ||
| 6056 | |||
| 6057 | @defopt glyphless-char-display-control | ||
| 6058 | This user option provides a convenient way to set | ||
| 6059 | @code{glyphless-char-display} for groups of similar characters. It | ||
| 6060 | takes effect via a custom @code{:set} function (@pxref{Variable | ||
| 6061 | Definitions}), which update @code{glyphless-char-display}. | ||
| 6062 | |||
| 6063 | Its value should be an alist of elements @code{(@var{group} | ||
| 6064 | . @var{method})}, where @var{group} is a symbol specifying a group of | ||
| 6065 | characters, and @var{method} is a symbol specifying how to display | ||
| 6066 | them. | ||
| 6067 | |||
| 6068 | @var{group} should be one of the following: | ||
| 6069 | |||
| 6070 | @table @code | ||
| 6071 | @item c0-control | ||
| 6072 | @acronym{ASCII} control characters @code{U+0000} to @code{U+001F}, | ||
| 6073 | excluding the newline and tab characters (normally displayed as escape | ||
| 6074 | sequences like @samp{^A}; @pxref{Text Display,, How Text Is Displayed, | ||
| 6075 | emacs, The GNU Emacs Manual}). | ||
| 6076 | |||
| 6077 | @item c1-control | ||
| 6078 | Non-@acronym{ASCII}, non-printing characters @code{U+0080} to | ||
| 6079 | @code{U+009F} (normally displayed as octal escape sequences like | ||
| 6080 | @samp{\230}). | ||
| 6081 | |||
| 6082 | @item format-control | ||
| 6083 | Characters of Unicode General Category `Cf', such as @samp{U+200E} | ||
| 6084 | (Left-to-Right Mark), but excluding characters that have graphic | ||
| 6085 | images, such as @samp{U+00AD} (Soft Hyphen). | ||
| 6086 | |||
| 6087 | @item no-font | ||
| 6088 | Characters for there is no suitable font, or which cannot be encoded | ||
| 6089 | by the terminal's coding system. | ||
| 6090 | @end table | ||
| 6091 | |||
| 6092 | @c FIXME: this can also be `acronym', but that's not currently | ||
| 6093 | @c completely implemented; it applies only to the format-control | ||
| 6094 | @c group, and only works if the acronym is in `char-acronym-table'. | ||
| 6095 | The @var{method} symbol should be one of @code{zero-width}, | ||
| 6096 | @code{thin-space}, @code{empty-box}, or @code{hex-code}. These have | ||
| 6097 | the same meanings as in @code{glyphless-char-display}, above. | ||
| 6098 | @end defopt | ||
| 6099 | |||
| 6057 | @node Window Systems | 6100 | @node Window Systems |
| 6058 | @section Window Systems | 6101 | @section Window Systems |
| 6059 | 6102 | ||
| @@ -6329,96 +6372,3 @@ affect all Emacs frames and windows. | |||
| 6329 | appropriate mirrored character in the reordered text. Lisp programs | 6372 | appropriate mirrored character in the reordered text. Lisp programs |
| 6330 | can affect the mirrored display by changing this property. Again, any | 6373 | can affect the mirrored display by changing this property. Again, any |
| 6331 | such changes affect all of Emacs display. | 6374 | such changes affect all of Emacs display. |
| 6332 | |||
| 6333 | @node Glyphless Chars | ||
| 6334 | @section Glyphless Character Display | ||
| 6335 | @cindex glyphless characters | ||
| 6336 | |||
| 6337 | @dfn{Glyphless characters} are not displayed in the usual way when | ||
| 6338 | they appear in a buffer, but in some special way (e.g. as a box | ||
| 6339 | containing a hexadecimal code). These include characters that cannot | ||
| 6340 | be displayed with any available font (on a graphical display), or that | ||
| 6341 | cannot be encoded by the terminal's coding system (on a text | ||
| 6342 | terminal). Specific characters can also be defined to be glyphless. | ||
| 6343 | |||
| 6344 | @defvar glyphless-char-display | ||
| 6345 | The value of this variable is a char-table that defines glyphless | ||
| 6346 | characters and how they are displayed. If an entry is @code{nil}, the | ||
| 6347 | corresponding character is displayed in its usual way. Otherwise, an | ||
| 6348 | entry should be one of the following display methods: | ||
| 6349 | |||
| 6350 | @table @asis | ||
| 6351 | @item @code{zero-width} | ||
| 6352 | Don't display the character. | ||
| 6353 | |||
| 6354 | @item @code{thin-space} | ||
| 6355 | Display a thin space, 1-pixel wide on graphical displays, or | ||
| 6356 | 1-character wide on text terminals. | ||
| 6357 | |||
| 6358 | @item @code{empty-box} | ||
| 6359 | Display an empty box. | ||
| 6360 | |||
| 6361 | @item @code{hex-code} | ||
| 6362 | Display a box containing the Unicode codepoint of the character, in | ||
| 6363 | hexadecimal notation. | ||
| 6364 | |||
| 6365 | @item an @acronym{ASCII} string | ||
| 6366 | Display a box containing that string. | ||
| 6367 | @end table | ||
| 6368 | |||
| 6369 | @noindent | ||
| 6370 | Except for @code{zero-width}, these methods display using the | ||
| 6371 | @code{glyphless-char} face. | ||
| 6372 | |||
| 6373 | An entry can also be a cons cell @code{(@var{graphical} | ||
| 6374 | . @var{text})}, where @var{graphical} and @var{text} are the display | ||
| 6375 | methods on graphical displays and text terminals respectively. | ||
| 6376 | |||
| 6377 | The char-table has one extra slot, which determines how to display any | ||
| 6378 | character that cannot be displayed with any available font, or cannot | ||
| 6379 | be encoded by the terminal's coding system. Its value should be one | ||
| 6380 | of the above display methods, except @code{zero-width} or a cons cell. | ||
| 6381 | @end defvar | ||
| 6382 | |||
| 6383 | @defopt glyphless-char-display-control | ||
| 6384 | This user option provides a convenient way to set | ||
| 6385 | @code{glyphless-char-display} for groups of similar characters. It | ||
| 6386 | takes effect via a custom @code{:set} function (@pxref{Variable | ||
| 6387 | Definitions}), which update @code{glyphless-char-display}. | ||
| 6388 | |||
| 6389 | Its value should be an alist of elements @code{(@var{group} | ||
| 6390 | . @var{method})}, where @var{group} is a symbol specifying a group of | ||
| 6391 | characters, and @var{method} is a symbol specifying how to display | ||
| 6392 | them. | ||
| 6393 | |||
| 6394 | @var{group} should be one of the following: | ||
| 6395 | |||
| 6396 | @table @code | ||
| 6397 | @item c0-control | ||
| 6398 | @acronym{ASCII} control characters @code{U+0000} to @code{U+001F}, | ||
| 6399 | excluding the newline and tab characters (normally displayed as escape | ||
| 6400 | sequences like @samp{^A}; @pxref{Text Display,, How Text Is Displayed, | ||
| 6401 | emacs, The GNU Emacs Manual}). | ||
| 6402 | |||
| 6403 | @item c1-control | ||
| 6404 | Non-@acronym{ASCII}, non-printing characters @code{U+0080} to | ||
| 6405 | @code{U+009F} (normally displayed as octal escape sequences like | ||
| 6406 | @samp{\230}). | ||
| 6407 | |||
| 6408 | @item format-control | ||
| 6409 | Characters of Unicode General Category `Cf', such as @samp{U+200E} | ||
| 6410 | (Left-to-Right Mark), but excluding characters that have graphic | ||
| 6411 | images, such as @samp{U+00AD} (Soft Hyphen). | ||
| 6412 | |||
| 6413 | @item no-font | ||
| 6414 | Characters for there is no suitable font, or which cannot be encoded | ||
| 6415 | by the terminal's coding system. | ||
| 6416 | @end table | ||
| 6417 | |||
| 6418 | @c FIXME: this can also be `acronym', but that's not currently | ||
| 6419 | @c completely implemented; it applies only to the format-control | ||
| 6420 | @c group, and only works if the acronym is in `char-acronym-table'. | ||
| 6421 | The @var{method} symbol should be one of @code{zero-width}, | ||
| 6422 | @code{thin-space}, @code{empty-box}, or @code{hex-code}. These have | ||
| 6423 | the same meanings as in @code{glyphless-char-display}, above. | ||
| 6424 | @end defopt | ||
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index ea304292497..e3a92d42460 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi | |||
| @@ -1265,14 +1265,11 @@ Emacs Display | |||
| 1265 | * Buttons:: Adding clickable buttons to Emacs buffers. | 1265 | * Buttons:: Adding clickable buttons to Emacs buffers. |
| 1266 | * Abstract Display:: Emacs's Widget for Object Collections. | 1266 | * Abstract Display:: Emacs's Widget for Object Collections. |
| 1267 | * Blinking:: How Emacs shows the matching open parenthesis. | 1267 | * Blinking:: How Emacs shows the matching open parenthesis. |
| 1268 | * Usual Display:: The usual conventions for displaying | 1268 | * Character Display:: How Emacs displays individual characters. |
| 1269 | nonprinting chars. | ||
| 1270 | * Display Tables:: How to specify other conventions. | ||
| 1271 | * Beeping:: Audible signal to the user. | 1269 | * Beeping:: Audible signal to the user. |
| 1272 | * Window Systems:: Which window system is being used. | 1270 | * Window Systems:: Which window system is being used. |
| 1273 | * Bidirectional Display:: Display of bidirectional scripts, such as | 1271 | * Bidirectional Display:: Display of bidirectional scripts, such as |
| 1274 | Arabic and Farsi. | 1272 | Arabic and Farsi. |
| 1275 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 1276 | 1273 | ||
| 1277 | The Echo Area | 1274 | The Echo Area |
| 1278 | 1275 | ||
| @@ -1361,11 +1358,13 @@ Abstract Display | |||
| 1361 | * Abstract Display Functions:: Functions in the Ewoc package. | 1358 | * Abstract Display Functions:: Functions in the Ewoc package. |
| 1362 | * Abstract Display Example:: Example of using Ewoc. | 1359 | * Abstract Display Example:: Example of using Ewoc. |
| 1363 | 1360 | ||
| 1364 | Display Tables | 1361 | Character Display |
| 1365 | 1362 | ||
| 1366 | * Display Table Format:: What a display table consists of. | 1363 | * Usual Display:: The usual conventions for displaying characters. |
| 1367 | * Active Display Table:: How Emacs selects a display table to use. | 1364 | * Display Tables:: What a display table consists of. |
| 1368 | * Glyphs:: How to define a glyph, and what glyphs mean. | 1365 | * Active Display Table:: How Emacs selects a display table to use. |
| 1366 | * Glyphs:: How to define a glyph, and what glyphs mean. | ||
| 1367 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 1369 | 1368 | ||
| 1370 | Operating System Interface | 1369 | Operating System Interface |
| 1371 | 1370 | ||
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index 64d0986493a..7813283ade5 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi | |||
| @@ -508,6 +508,13 @@ are used. | |||
| 508 | @code{string-lessp} is another name for @code{string<}. | 508 | @code{string-lessp} is another name for @code{string<}. |
| 509 | @end defun | 509 | @end defun |
| 510 | 510 | ||
| 511 | @defun string-prefix-p string1 string2 &optional ignore-case | ||
| 512 | This function returns non-@code{nil} if @var{string1} is a prefix of | ||
| 513 | @var{string2}; i.e., if @var{string2} starts with @var{string1}. If | ||
| 514 | the optional argument @var{ignore-case} is non-@code{nil}, the | ||
| 515 | comparison ignores case differences. | ||
| 516 | @end defun | ||
| 517 | |||
| 511 | @defun compare-strings string1 start1 end1 string2 start2 end2 &optional ignore-case | 518 | @defun compare-strings string1 start1 end1 string2 start2 end2 &optional ignore-case |
| 512 | This function compares the specified part of @var{string1} with the | 519 | This function compares the specified part of @var{string1} with the |
| 513 | specified part of @var{string2}. The specified part of @var{string1} | 520 | specified part of @var{string2}. The specified part of @var{string1} |
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi index 58092f23157..f2cbb18af1c 100644 --- a/doc/lispref/vol1.texi +++ b/doc/lispref/vol1.texi | |||
| @@ -1287,14 +1287,11 @@ Emacs Display | |||
| 1287 | * Buttons:: Adding clickable buttons to Emacs buffers. | 1287 | * Buttons:: Adding clickable buttons to Emacs buffers. |
| 1288 | * Abstract Display:: Emacs's Widget for Object Collections. | 1288 | * Abstract Display:: Emacs's Widget for Object Collections. |
| 1289 | * Blinking:: How Emacs shows the matching open parenthesis. | 1289 | * Blinking:: How Emacs shows the matching open parenthesis. |
| 1290 | * Usual Display:: The usual conventions for displaying | 1290 | * Character Display:: How Emacs displays individual characters. |
| 1291 | nonprinting chars. | ||
| 1292 | * Display Tables:: How to specify other conventions. | ||
| 1293 | * Beeping:: Audible signal to the user. | 1291 | * Beeping:: Audible signal to the user. |
| 1294 | * Window Systems:: Which window system is being used. | 1292 | * Window Systems:: Which window system is being used. |
| 1295 | * Bidirectional Display:: Display of bidirectional scripts, such as | 1293 | * Bidirectional Display:: Display of bidirectional scripts, such as |
| 1296 | Arabic and Farsi. | 1294 | Arabic and Farsi. |
| 1297 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 1298 | 1295 | ||
| 1299 | The Echo Area | 1296 | The Echo Area |
| 1300 | 1297 | ||
| @@ -1383,11 +1380,13 @@ Abstract Display | |||
| 1383 | * Abstract Display Functions:: Functions in the Ewoc package. | 1380 | * Abstract Display Functions:: Functions in the Ewoc package. |
| 1384 | * Abstract Display Example:: Example of using Ewoc. | 1381 | * Abstract Display Example:: Example of using Ewoc. |
| 1385 | 1382 | ||
| 1386 | Display Tables | 1383 | Character Display |
| 1387 | 1384 | ||
| 1388 | * Display Table Format:: What a display table consists of. | 1385 | * Usual Display:: The usual conventions for displaying characters. |
| 1389 | * Active Display Table:: How Emacs selects a display table to use. | 1386 | * Display Tables:: What a display table consists of. |
| 1390 | * Glyphs:: How to define a glyph, and what glyphs mean. | 1387 | * Active Display Table:: How Emacs selects a display table to use. |
| 1388 | * Glyphs:: How to define a glyph, and what glyphs mean. | ||
| 1389 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 1391 | 1390 | ||
| 1392 | Operating System Interface | 1391 | Operating System Interface |
| 1393 | 1392 | ||
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi index a42b70d77a4..837fcbe7f59 100644 --- a/doc/lispref/vol2.texi +++ b/doc/lispref/vol2.texi | |||
| @@ -1286,14 +1286,11 @@ Emacs Display | |||
| 1286 | * Buttons:: Adding clickable buttons to Emacs buffers. | 1286 | * Buttons:: Adding clickable buttons to Emacs buffers. |
| 1287 | * Abstract Display:: Emacs's Widget for Object Collections. | 1287 | * Abstract Display:: Emacs's Widget for Object Collections. |
| 1288 | * Blinking:: How Emacs shows the matching open parenthesis. | 1288 | * Blinking:: How Emacs shows the matching open parenthesis. |
| 1289 | * Usual Display:: The usual conventions for displaying | 1289 | * Character Display:: How Emacs displays individual characters. |
| 1290 | nonprinting chars. | ||
| 1291 | * Display Tables:: How to specify other conventions. | ||
| 1292 | * Beeping:: Audible signal to the user. | 1290 | * Beeping:: Audible signal to the user. |
| 1293 | * Window Systems:: Which window system is being used. | 1291 | * Window Systems:: Which window system is being used. |
| 1294 | * Bidirectional Display:: Display of bidirectional scripts, such as | 1292 | * Bidirectional Display:: Display of bidirectional scripts, such as |
| 1295 | Arabic and Farsi. | 1293 | Arabic and Farsi. |
| 1296 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 1297 | 1294 | ||
| 1298 | The Echo Area | 1295 | The Echo Area |
| 1299 | 1296 | ||
| @@ -1382,11 +1379,13 @@ Abstract Display | |||
| 1382 | * Abstract Display Functions:: Functions in the Ewoc package. | 1379 | * Abstract Display Functions:: Functions in the Ewoc package. |
| 1383 | * Abstract Display Example:: Example of using Ewoc. | 1380 | * Abstract Display Example:: Example of using Ewoc. |
| 1384 | 1381 | ||
| 1385 | Display Tables | 1382 | Character Display |
| 1386 | 1383 | ||
| 1387 | * Display Table Format:: What a display table consists of. | 1384 | * Usual Display:: The usual conventions for displaying characters. |
| 1388 | * Active Display Table:: How Emacs selects a display table to use. | 1385 | * Display Tables:: What a display table consists of. |
| 1389 | * Glyphs:: How to define a glyph, and what glyphs mean. | 1386 | * Active Display Table:: How Emacs selects a display table to use. |
| 1387 | * Glyphs:: How to define a glyph, and what glyphs mean. | ||
| 1388 | * Glyphless Chars:: How glyphless characters are drawn. | ||
| 1390 | 1389 | ||
| 1391 | Operating System Interface | 1390 | Operating System Interface |
| 1392 | 1391 | ||
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index c95aaa9b15d..8d40ab5ab15 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-03-22 Peder O. Klingenberg <peder@klingenberg.no> (tiny change) | ||
| 2 | |||
| 3 | * gnus.texi (Archived Messages): Update `gnus-message-archive-group' to | ||
| 4 | reflect the new default. | ||
| 5 | |||
| 1 | 2012-03-10 Eli Zaretskii <eliz@gnu.org> | 6 | 2012-03-10 Eli Zaretskii <eliz@gnu.org> |
| 2 | 7 | ||
| 3 | * info.texi (Expert Info): Move the index entry for "Texinfo" from | 8 | * info.texi (Expert Info): Move the index entry for "Texinfo" from |
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index c3b62f3b791..9e440be6585 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi | |||
| @@ -12526,8 +12526,8 @@ mode buffers. | |||
| 12526 | Gnus provides a few different methods for storing the mail and news you | 12526 | Gnus provides a few different methods for storing the mail and news you |
| 12527 | send. The default method is to use the @dfn{archive virtual server} to | 12527 | send. The default method is to use the @dfn{archive virtual server} to |
| 12528 | store the messages. If you want to disable this completely, the | 12528 | store the messages. If you want to disable this completely, the |
| 12529 | @code{gnus-message-archive-group} variable should be @code{nil}, which | 12529 | @code{gnus-message-archive-group} variable should be @code{nil}. The |
| 12530 | is the default. | 12530 | default is "sent.%Y-%m", which gives you one archive group per month. |
| 12531 | 12531 | ||
| 12532 | For archiving interesting messages in a group you read, see the | 12532 | For archiving interesting messages in a group you read, see the |
| 12533 | @kbd{B c} (@code{gnus-summary-copy-article}) command (@pxref{Mail | 12533 | @kbd{B c} (@code{gnus-summary-copy-article}) command (@pxref{Mail |
| @@ -123,6 +123,8 @@ and pops down the *Completions* buffer accordingly. | |||
| 123 | *** Completion style can be set per-category `completion-category-overrides'. | 123 | *** Completion style can be set per-category `completion-category-overrides'. |
| 124 | +++ | 124 | +++ |
| 125 | *** Completion of buffers now uses substring completion by default. | 125 | *** Completion of buffers now uses substring completion by default. |
| 126 | --- | ||
| 127 | *** The `widget-complete-field' option has been removed. | ||
| 126 | 128 | ||
| 127 | ** Mail changes | 129 | ** Mail changes |
| 128 | 130 | ||
| @@ -1546,6 +1548,10 @@ inherits from multiple maps, eg: | |||
| 1546 | (set-keymap-parent newmap (make-composed-keymap othermap parent)) | 1548 | (set-keymap-parent newmap (make-composed-keymap othermap parent)) |
| 1547 | 1549 | ||
| 1548 | +++ | 1550 | +++ |
| 1551 | ** New function `string-prefix-p'. | ||
| 1552 | (This was actually added in Emacs 23.2 but was not advertised at the time.) | ||
| 1553 | |||
| 1554 | +++ | ||
| 1549 | ** New reader macro ## that stands for the empty symbol. | 1555 | ** New reader macro ## that stands for the empty symbol. |
| 1550 | This means that the empty symbol can now be read back. Also, #: by itself | 1556 | This means that the empty symbol can now be read back. Also, #: by itself |
| 1551 | (when not immediately followed by a possible symbol character) stands for | 1557 | (when not immediately followed by a possible symbol character) stands for |
diff --git a/leim/ChangeLog b/leim/ChangeLog index e5900eb7410..ed9ff6f9270 100644 --- a/leim/ChangeLog +++ b/leim/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2012-03-25 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * makefile.w32-in (install): Use $(DIRNAME)_same-dir.tst instead | ||
| 4 | of same-dir.tst, to avoid stepping on other (parallel) Make job's | ||
| 5 | toes. | ||
| 6 | |||
| 7 | 2012-03-21 Kenichi Handa <handa@m17n.org> | ||
| 8 | |||
| 9 | * quail/indian.el ("devanagari-itrans"): Add a few more useful | ||
| 10 | keys (Bug#10935). | ||
| 11 | |||
| 1 | 2012-03-16 Kenichi Handa <handa@m17n.org> | 12 | 2012-03-16 Kenichi Handa <handa@m17n.org> |
| 2 | 13 | ||
| 3 | * quail/indian.el (telugu-inscript): Fix typo. (Bug#10936) | 14 | * quail/indian.el (telugu-inscript): Fix typo. (Bug#10936) |
diff --git a/leim/makefile.w32-in b/leim/makefile.w32-in index 19ccaf4f62b..e9a56e79f73 100644 --- a/leim/makefile.w32-in +++ b/leim/makefile.w32-in | |||
| @@ -201,13 +201,13 @@ leim-list.el: $(SUBDIRS) $(WORLD) $(srcdir)/leim-ext.el | |||
| 201 | 201 | ||
| 202 | install: all | 202 | install: all |
| 203 | - mkdir "$(INSTALLDIR)" | 203 | - mkdir "$(INSTALLDIR)" |
| 204 | - $(DEL) same-dir.tst | 204 | - $(DEL) $(DIRNAME)_same-dir.tst |
| 205 | - $(DEL) $(INSTALL_DIR)/same-dir.tst | 205 | - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst |
| 206 | echo SameDirTest > $(INSTALL_DIR)/same-dir.tst | 206 | echo SameDirTest > $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst |
| 207 | $(IFNOTSAMEDIR) $(CP) leim-list.el $(INSTALLDIR) $(ENDIF) | 207 | $(IFNOTSAMEDIR) $(CP) leim-list.el $(INSTALLDIR) $(ENDIF) |
| 208 | $(IFNOTSAMEDIR) $(CP_DIR) quail $(INSTALLDIR) $(ENDIF) | 208 | $(IFNOTSAMEDIR) $(CP_DIR) quail $(INSTALLDIR) $(ENDIF) |
| 209 | $(IFNOTSAMEDIR) $(CP_DIR) ja-dic $(INSTALLDIR) $(ENDIF) | 209 | $(IFNOTSAMEDIR) $(CP_DIR) ja-dic $(INSTALLDIR) $(ENDIF) |
| 210 | - $(DEL) $(INSTALL_DIR)/same-dir.tst | 210 | - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst |
| 211 | 211 | ||
| 212 | clean mostlyclean: | 212 | clean mostlyclean: |
| 213 | - $(FOREACH) $(TIT) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR) | 213 | - $(FOREACH) $(TIT) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR) |
diff --git a/leim/quail/indian.el b/leim/quail/indian.el index 7ffb20f6411..1c01693478b 100644 --- a/leim/quail/indian.el +++ b/leim/quail/indian.el | |||
| @@ -56,6 +56,11 @@ | |||
| 56 | (quail-define-indian-trans-package | 56 | (quail-define-indian-trans-package |
| 57 | indian-dev-itrans-v5-hash "devanagari-itrans" "Devanagari" "DevIT" | 57 | indian-dev-itrans-v5-hash "devanagari-itrans" "Devanagari" "DevIT" |
| 58 | "Devanagari transliteration by ITRANS method.") | 58 | "Devanagari transliteration by ITRANS method.") |
| 59 | (quail-defrule "..." ?॥) | ||
| 60 | (quail-defrule "\\'" ?॑) | ||
| 61 | (quail-defrule "\\_" ?॒) | ||
| 62 | (quail-defrule "\\__" ?_) | ||
| 63 | (quail-defrule "\\''" ?') | ||
| 59 | 64 | ||
| 60 | (if nil | 65 | (if nil |
| 61 | (quail-define-package "devanagari-kyoto-harvard" "Devanagari" "DevKH" t "Devanagari Kyoto-Harvard")) | 66 | (quail-define-package "devanagari-kyoto-harvard" "Devanagari" "DevKH" t "Devanagari Kyoto-Harvard")) |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ed5dc39021b..5a0c33da3c8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,7 +1,126 @@ | |||
| 1 | 2012-03-25 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * makefile.w32-in (install): Use $(DIRNAME)_same-dir.tst instead | ||
| 4 | of same-dir.tst, to avoid stepping on other (parallel) Make job's | ||
| 5 | toes. | ||
| 6 | |||
| 7 | 2012-03-25 Chong Yidong <cyd@gnu.org> | ||
| 8 | |||
| 9 | * custom.el (load-theme): Even if NO-ENABLE arg is t, reenable the | ||
| 10 | theme if it was previously enabled before (Bug#11031). | ||
| 11 | |||
| 12 | * cus-theme.el (custom-theme-write-faces): Retrieve current face | ||
| 13 | spec with custom-face-get-current-spec if its :shown-value is not | ||
| 14 | determined yet (Bug#9337). | ||
| 15 | (customize-create-theme, custom-theme-revert): Doc fixes. | ||
| 16 | |||
| 17 | * button.el (button-at): Minor addition to docstring. | ||
| 18 | |||
| 19 | 2012-03-24 Simon Leinen <simon.leinen@gmail.com> | ||
| 20 | |||
| 21 | * vc/vc.el (vc-merge): Fix a prompt. | ||
| 22 | |||
| 23 | 2012-03-24 Chong Yidong <cyd@gnu.org> | ||
| 24 | |||
| 25 | * mwheel.el (mwheel-scroll): Call deactivate-mark at the right | ||
| 26 | point (Bug#9623). | ||
| 27 | |||
| 28 | * button.el (button-at): Minor addition to docstring. | ||
| 29 | |||
| 30 | 2012-03-23 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 31 | |||
| 32 | * newcomment.el (comment-choose-indent): No space after BOL. | ||
| 33 | |||
| 34 | 2012-03-22 Sam Steingold <sds@gnu.org> | ||
| 35 | |||
| 36 | * window.el (switch-to-prev-buffer): Revert last patch because the | ||
| 37 | bug turned out to be an advertised feature (Elisp manual 28.14). | ||
| 38 | |||
| 39 | 2012-03-22 Glenn Morris <rgm@gnu.org> | ||
| 40 | |||
| 41 | * vc/vc-bzr.el (vc-bzr-status-switches): New option. (Bug#6724) | ||
| 42 | (vc-bzr-command): If running "status", pass vc-bzr-status-switches. | ||
| 43 | |||
| 44 | 2012-03-22 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 45 | |||
| 46 | * net/network-stream.el (network-stream-open-starttls): Make error | ||
| 47 | message under Windows be less misleading. | ||
| 48 | |||
| 49 | 2012-03-22 Liang Wang <netcasper@gmail.com> (tiny change) | ||
| 50 | |||
| 51 | * progmodes/etags.el (etags-list-tags): Only use tags which goto-func | ||
| 52 | understands (bug#9942). | ||
| 53 | |||
| 54 | 2012-03-22 Chong Yidong <cyd@gnu.org> | ||
| 55 | |||
| 56 | * simple.el (end-of-visible-line): Handle return value of | ||
| 57 | next-single-property-change properly (Bug#9371). | ||
| 58 | |||
| 59 | 2012-03-22 Kenichi Handa <handa@m17n.org> | ||
| 60 | |||
| 61 | * international/quail.el (quail-insert-kbd-layout): Fix previous | ||
| 62 | change. To avoid unwanted bidi reordering, use | ||
| 63 | bidi-string-mark-left-to-right instead of inserting LRO and PDF. | ||
| 64 | |||
| 65 | 2012-03-21 Dmitry Gutov <dgutov@yandex.ru> | ||
| 66 | |||
| 67 | * progmodes/ruby-mode.el: Don't confuse "end:" for "end" (bug#10786). | ||
| 68 | (ruby-block-end-re, ruby-delimiter, ruby-parse-partial) | ||
| 69 | (ruby-beginning-of-indent): Be more careful with the difference | ||
| 70 | between word-boundary and symbol boundary. | ||
| 71 | (ruby-mode-syntax-table): Make : a symbol constituent. | ||
| 72 | |||
| 73 | 2012-03-21 Andreas Politz <politza@fh-trier.de> | ||
| 74 | |||
| 75 | * outline.el (outline-flag-region): Evaporate overlays (bug#10789). | ||
| 76 | |||
| 77 | 2012-03-21 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 78 | |||
| 79 | * progmodes/etags.el (tags-completion-at-point-function): | ||
| 80 | Improve last fix. | ||
| 81 | |||
| 82 | * files.el (move-file-to-trash): Files aren't regexps (bug#11055). | ||
| 83 | |||
| 84 | 2012-03-21 Sam Steingold <sds@gnu.org> | ||
| 85 | |||
| 86 | * progmodes/etags.el (tags-completion-at-point-function): | ||
| 87 | Avoid the error when point is inside the pattern. | ||
| 88 | |||
| 89 | 2012-03-21 John Yates <john@yates-sheets.org> (tiny change) | ||
| 90 | |||
| 91 | * progmodes/hideshow.el (hs-inside-comment-p): Fix hiding of first | ||
| 92 | line (Bug#10855). | ||
| 93 | |||
| 94 | 2012-03-21 Drew Adams <drew.adams@oracle.com> | ||
| 95 | |||
| 96 | * info.el (Info-menu): Handle string value of FORK arg (Bug#10858). | ||
| 97 | |||
| 98 | 2012-03-21 Anmol Khirbat <anmol@khirbat.net> (tiny change) | ||
| 99 | |||
| 100 | * ido.el (ido-set-current-directory, ido-read-internal) | ||
| 101 | (ido-choose-completion-string, ido-completion-help): Handle nil | ||
| 102 | value of ido-completion-buffer (Bug#11008). | ||
| 103 | |||
| 104 | 2012-03-21 Sam Steingold <sds@gnu.org> | ||
| 105 | |||
| 106 | * window.el (switch-to-prev-buffer): Do not switch to a visible | ||
| 107 | window previous buffer, just like with the frame previous buffers. | ||
| 108 | |||
| 109 | 2012-03-21 Chong Yidong <cyd@gnu.org> | ||
| 110 | |||
| 111 | * faces.el (make-face, make-empty-face, copy-face): | ||
| 112 | * face-remap.el (face-remap-add-relative, face-remap-set-base): | ||
| 113 | Doc fixes. | ||
| 114 | |||
| 115 | 2012-03-21 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 116 | |||
| 117 | * wid-edit.el (widget-complete-field): Remove (bug#11051). | ||
| 118 | (widget-complete): Remove broken use of it. | ||
| 119 | |||
| 1 | 2012-03-20 Chong Yidong <cyd@gnu.org> | 120 | 2012-03-20 Chong Yidong <cyd@gnu.org> |
| 2 | 121 | ||
| 3 | * emacs-lisp/tabulated-list.el (tabulated-list-print-entry): Use | 122 | * emacs-lisp/tabulated-list.el (tabulated-list-print-entry): |
| 4 | string-width and truncate-string-width to handle arbitrary | 123 | Use string-width and truncate-string-width to handle arbitrary |
| 5 | characters. | 124 | characters. |
| 6 | 125 | ||
| 7 | 2012-03-20 Tassilo Horn <tassilo@member.fsf.org> | 126 | 2012-03-20 Tassilo Horn <tassilo@member.fsf.org> |
| @@ -17,8 +136,7 @@ | |||
| 17 | 136 | ||
| 18 | 2012-03-18 Leo Liu <sdl.web@gmail.com> | 137 | 2012-03-18 Leo Liu <sdl.web@gmail.com> |
| 19 | 138 | ||
| 20 | * net/rcirc.el (rcirc-cmd-quit): Allow quiting all servers with | 139 | * net/rcirc.el (rcirc-cmd-quit): Allow quiting all servers with prefix. |
| 21 | prefix. | ||
| 22 | 140 | ||
| 23 | 2012-03-17 Eli Zaretskii <eliz@gnu.org> | 141 | 2012-03-17 Eli Zaretskii <eliz@gnu.org> |
| 24 | 142 | ||
| @@ -48,7 +166,7 @@ | |||
| 48 | (hfy-fontify-buffer): Use above handlers. | 166 | (hfy-fontify-buffer): Use above handlers. |
| 49 | (hfy-face-to-css-default): Same as the earlier `hfy-face-to-css'. | 167 | (hfy-face-to-css-default): Same as the earlier `hfy-face-to-css'. |
| 50 | (hfy-face-to-css): Re-defined to be a variable. | 168 | (hfy-face-to-css): Re-defined to be a variable. |
| 51 | (hfy-compile-stylesheet): Modified. Allow stylesheet to be built | 169 | (hfy-compile-stylesheet): Modify. Allow stylesheet to be built |
| 52 | over multiple runs. This is made possible by having the caller let | 170 | over multiple runs. This is made possible by having the caller let |
| 53 | bind a special variable `hfy-user-sheet-assoc'. | 171 | bind a special variable `hfy-user-sheet-assoc'. |
| 54 | (htmlfontify-string): New defun. | 172 | (htmlfontify-string): New defun. |
| @@ -72,10 +190,8 @@ | |||
| 72 | * progmodes/cc-engine.el (c-crosses-statement-barrier-p): Use a | 190 | * progmodes/cc-engine.el (c-crosses-statement-barrier-p): Use a |
| 73 | limit to a call of `c-literal-limits'. | 191 | limit to a call of `c-literal-limits'. |
| 74 | (c-determine-+ve-limit): New function. | 192 | (c-determine-+ve-limit): New function. |
| 75 | (c-at-macro-vsemi-p): Move `c-in-literal' to the bottom of an | 193 | (c-at-macro-vsemi-p): Move `c-in-literal' to the bottom of an `and'. |
| 76 | `and'. | 194 | (c-guess-basic-syntax): In macros, restrict a search limit to 2000. |
| 77 | (c-guess-basic-syntax): In macros, restrict a search limit to | ||
| 78 | 2000. | ||
| 79 | In CASE 5B, restrict a search limit to 500. | 195 | In CASE 5B, restrict a search limit to 500. |
| 80 | (c-just-after-func-arglist-p): Obviouly wrong `or' -> `and'. | 196 | (c-just-after-func-arglist-p): Obviouly wrong `or' -> `and'. |
| 81 | 197 | ||
| @@ -89,7 +205,7 @@ | |||
| 89 | 2012-03-16 Aaron S. Hawley <Aaron.S.Hawley@gmail.com> | 205 | 2012-03-16 Aaron S. Hawley <Aaron.S.Hawley@gmail.com> |
| 90 | 206 | ||
| 91 | * tar-mode.el (tar-mode): Fix saving by conditionally undoing | 207 | * tar-mode.el (tar-mode): Fix saving by conditionally undoing |
| 92 | `special-mode' setting of `buffer-read-only'. (Bug#11010) | 208 | `special-mode' setting of `buffer-read-only'. (Bug#11010) |
| 93 | 209 | ||
| 94 | 2012-03-16 Glenn Morris <rgm@gnu.org> | 210 | 2012-03-16 Glenn Morris <rgm@gnu.org> |
| 95 | 211 | ||
| @@ -156,8 +272,7 @@ | |||
| 156 | 272 | ||
| 157 | 2012-03-12 Leo Liu <sdl.web@gmail.com> | 273 | 2012-03-12 Leo Liu <sdl.web@gmail.com> |
| 158 | 274 | ||
| 159 | * simple.el (kill-new): Use equal-including-properties for | 275 | * simple.el (kill-new): Use equal-including-properties for comparison. |
| 160 | comparison. | ||
| 161 | (kill-do-not-save-duplicates): Doc fix. | 276 | (kill-do-not-save-duplicates): Doc fix. |
| 162 | 277 | ||
| 163 | 2012-03-12 Stefan Monnier <monnier@iro.umontreal.ca> | 278 | 2012-03-12 Stefan Monnier <monnier@iro.umontreal.ca> |
| @@ -239,8 +354,7 @@ | |||
| 239 | 354 | ||
| 240 | * net/mairix.el (mairix-replace-invalid-chars): Rename from | 355 | * net/mairix.el (mairix-replace-invalid-chars): Rename from |
| 241 | mairix-replace-illegal-chars; all callers changed. Don't remove | 356 | mairix-replace-illegal-chars; all callers changed. Don't remove |
| 242 | ^, ~, and = characters: they are meaningful in mairix search | 357 | ^, ~, and = characters: they are meaningful in mairix search specs. |
| 243 | specs. | ||
| 244 | (mairix-widget-create-query): Add usage information about mairix | 358 | (mairix-widget-create-query): Add usage information about mairix |
| 245 | search forms: negating words, searching for substrings, etc. | 359 | search forms: negating words, searching for substrings, etc. |
| 246 | 360 | ||
| @@ -425,8 +539,7 @@ | |||
| 425 | 539 | ||
| 426 | 2012-03-04 Chong Yidong <cyd@gnu.org> | 540 | 2012-03-04 Chong Yidong <cyd@gnu.org> |
| 427 | 541 | ||
| 428 | * cus-start.el: Make x-select-enable-clipboard-manager | 542 | * cus-start.el: Make x-select-enable-clipboard-manager customizable. |
| 429 | customizable. | ||
| 430 | 543 | ||
| 431 | 2012-03-04 Glenn Morris <rgm@gnu.org> | 544 | 2012-03-04 Glenn Morris <rgm@gnu.org> |
| 432 | 545 | ||
| @@ -557,7 +670,7 @@ | |||
| 557 | (font-lock-default-function): Move the check for a specification | 670 | (font-lock-default-function): Move the check for a specification |
| 558 | to font-lock-spec-present. | 671 | to font-lock-spec-present. |
| 559 | 672 | ||
| 560 | * font-lock.el (font-lock-initial-fontify): call ... | 673 | * font-lock.el (font-lock-initial-fontify): Call ... |
| 561 | (font-lock-spec-present): New function. | 674 | (font-lock-spec-present): New function. |
| 562 | 675 | ||
| 563 | 2012-02-26 Jim Blandy <jimb@red-bean.com> | 676 | 2012-02-26 Jim Blandy <jimb@red-bean.com> |
| @@ -886,8 +999,7 @@ | |||
| 886 | 999 | ||
| 887 | 2012-02-12 Teodor Zlatanov <tzz@lifelogs.com> | 1000 | 2012-02-12 Teodor Zlatanov <tzz@lifelogs.com> |
| 888 | 1001 | ||
| 889 | * net/gnutls.el (gnutls-algorithm-priority): Add missing :group | 1002 | * net/gnutls.el (gnutls-algorithm-priority): Add missing :group tag. |
| 890 | tag. | ||
| 891 | 1003 | ||
| 892 | 2012-02-12 Alan Mackenzie <acm@muc.de> | 1004 | 2012-02-12 Alan Mackenzie <acm@muc.de> |
| 893 | 1005 | ||
| @@ -1060,8 +1172,8 @@ | |||
| 1060 | * progmodes/cc-guess.el (c-guess-offset-threshold, c-guess-region-max): | 1172 | * progmodes/cc-guess.el (c-guess-offset-threshold, c-guess-region-max): |
| 1061 | Add :version tags. | 1173 | Add :version tags. |
| 1062 | 1174 | ||
| 1063 | * progmodes/compile.el (compilation-first-column) | 1175 | * progmodes/compile.el (compilation-error-screen-columns) |
| 1064 | (compilation-error-screen-columns, compilation-filter-start): Doc fixes. | 1176 | (compilation-first-column, compilation-filter-start): Doc fixes. |
| 1065 | 1177 | ||
| 1066 | * vc/log-view.el (log-view-toggle-entry-display): | 1178 | * vc/log-view.el (log-view-toggle-entry-display): |
| 1067 | * vc/vc.el (vc-merge, vc-pull): Doc fixes. | 1179 | * vc/vc.el (vc-merge, vc-pull): Doc fixes. |
diff --git a/lisp/ChangeLog.14 b/lisp/ChangeLog.14 index 254e2863889..be50fc46672 100644 --- a/lisp/ChangeLog.14 +++ b/lisp/ChangeLog.14 | |||
| @@ -7114,7 +7114,7 @@ | |||
| 7114 | vc-default-mark-resolved. | 7114 | vc-default-mark-resolved. |
| 7115 | (vc-default-mark-resolved): Change to an alias for ignore. | 7115 | (vc-default-mark-resolved): Change to an alias for ignore. |
| 7116 | 7116 | ||
| 7117 | 2008-09-24 Andreas Politz <politza@fh-trier.de> (tiny change) | 7117 | 2008-09-24 Andreas Politz <politza@fh-trier.de> |
| 7118 | 7118 | ||
| 7119 | * term.el (term-emulate-terminal): Encode input string before | 7119 | * term.el (term-emulate-terminal): Encode input string before |
| 7120 | checking its length. | 7120 | checking its length. |
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15 index bf7a24a5b67..e3890b80ec4 100644 --- a/lisp/ChangeLog.15 +++ b/lisp/ChangeLog.15 | |||
| @@ -14934,7 +14934,7 @@ | |||
| 14934 | * woman.el (woman-make-bufname): Handle man-pages with "." in the | 14934 | * woman.el (woman-make-bufname): Handle man-pages with "." in the |
| 14935 | name. (Bug#5038) | 14935 | name. (Bug#5038) |
| 14936 | 14936 | ||
| 14937 | 2009-12-02 Andreas Politz <politza@fh-trier.de> (tiny change) | 14937 | 2009-12-02 Andreas Politz <politza@fh-trier.de> |
| 14938 | 14938 | ||
| 14939 | * ido.el (ido-file-internal): Handle filenames at point that do | 14939 | * ido.el (ido-file-internal): Handle filenames at point that do |
| 14940 | not have a directory part. (Bug#5049) | 14940 | not have a directory part. (Bug#5049) |
| @@ -19488,7 +19488,7 @@ | |||
| 19488 | (elint-log-message): Add optional argument. Use elint-output. | 19488 | (elint-log-message): Add optional argument. Use elint-output. |
| 19489 | (elint-set-mode-line): New function. | 19489 | (elint-set-mode-line): New function. |
| 19490 | 19490 | ||
| 19491 | 2009-09-12 Andreas Politz <politza@fh-trier.de> (tiny change) | 19491 | 2009-09-12 Andreas Politz <politza@fh-trier.de> |
| 19492 | 19492 | ||
| 19493 | * emacs-lisp/elp.el (elp-not-profilable): Add more | 19493 | * emacs-lisp/elp.el (elp-not-profilable): Add more |
| 19494 | functions (Bug#4233). | 19494 | functions (Bug#4233). |
diff --git a/lisp/button.el b/lisp/button.el index 07c98e668bd..3cf38fa64c6 100644 --- a/lisp/button.el +++ b/lisp/button.el | |||
| @@ -349,7 +349,9 @@ Also see `make-text-button'." | |||
| 349 | ;; Finding buttons in a buffer | 349 | ;; Finding buttons in a buffer |
| 350 | 350 | ||
| 351 | (defun button-at (pos) | 351 | (defun button-at (pos) |
| 352 | "Return the button at position POS in the current buffer, or nil." | 352 | "Return the button at position POS in the current buffer, or nil. |
| 353 | If the button at POS is a text property button, the return value | ||
| 354 | is a marker pointing to POS." | ||
| 353 | (let ((button (get-char-property pos 'button))) | 355 | (let ((button (get-char-property pos 'button))) |
| 354 | (if (or (overlayp button) (null button)) | 356 | (if (or (overlayp button) (null button)) |
| 355 | button | 357 | button |
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index 79799049378..606033f915c 100644 --- a/lisp/cus-theme.el +++ b/lisp/cus-theme.el | |||
| @@ -81,7 +81,9 @@ Do not call this mode function yourself. It is meant for internal use." | |||
| 81 | (defun customize-create-theme (&optional theme buffer) | 81 | (defun customize-create-theme (&optional theme buffer) |
| 82 | "Create or edit a custom theme. | 82 | "Create or edit a custom theme. |
| 83 | THEME, if non-nil, should be an existing theme to edit. If THEME | 83 | THEME, if non-nil, should be an existing theme to edit. If THEME |
| 84 | is `user', provide an option to remove these as custom settings. | 84 | is `user', the resulting *Custom Theme* buffer also contains a |
| 85 | checkbox for removing the theme settings specified in the buffer | ||
| 86 | from the Custom save file. | ||
| 85 | BUFFER, if non-nil, should be a buffer to use; the default is | 87 | BUFFER, if non-nil, should be a buffer to use; the default is |
| 86 | named *Custom Theme*." | 88 | named *Custom Theme*." |
| 87 | (interactive) | 89 | (interactive) |
| @@ -209,6 +211,8 @@ remove them from your saved Custom file.\n\n")) | |||
| 209 | (message ""))) | 211 | (message ""))) |
| 210 | 212 | ||
| 211 | (defun custom-theme-revert (_ignore-auto noconfirm) | 213 | (defun custom-theme-revert (_ignore-auto noconfirm) |
| 214 | "Revert the current *Custom Theme* buffer. | ||
| 215 | This is the `revert-buffer-function' for `custom-new-theme-mode'." | ||
| 212 | (when (or noconfirm (y-or-n-p "Discard current changes? ")) | 216 | (when (or noconfirm (y-or-n-p "Discard current changes? ")) |
| 213 | (customize-create-theme custom-theme--save-name (current-buffer)))) | 217 | (customize-create-theme custom-theme--save-name (current-buffer)))) |
| 214 | 218 | ||
| @@ -437,14 +441,17 @@ It includes all faces in list FACES." | |||
| 437 | (princ theme) | 441 | (princ theme) |
| 438 | (princ "\n") | 442 | (princ "\n") |
| 439 | (dolist (spec faces) | 443 | (dolist (spec faces) |
| 444 | ;; Insert the face iff the checkbox widget is checked. | ||
| 440 | (when (widget-get (nth 1 spec) :value) | 445 | (when (widget-get (nth 1 spec) :value) |
| 441 | (let* ((symbol (nth 0 spec)) | 446 | (let* ((symbol (nth 0 spec)) |
| 442 | (widget (nth 2 spec)) | 447 | (widget (nth 2 spec)) |
| 443 | (value | 448 | (value |
| 444 | (if (car-safe (widget-get widget :children)) | 449 | (cond |
| 445 | (custom-face-widget-to-spec widget) | 450 | ((car-safe (widget-get widget :children)) |
| 446 | ;; Child is null if the widget is closed (hidden). | 451 | (custom-face-widget-to-spec widget)) |
| 447 | (widget-get widget :shown-value)))) | 452 | ;; Child is null if the widget is closed (hidden). |
| 453 | ((widget-get widget :shown-value)) | ||
| 454 | (t (custom-face-get-current-spec symbol))))) | ||
| 448 | (when (and (facep symbol) value) | 455 | (when (and (facep symbol) value) |
| 449 | (princ (if (bolp) " '(" "\n '(")) | 456 | (princ (if (bolp) " '(" "\n '(")) |
| 450 | (prin1 symbol) | 457 | (prin1 symbol) |
diff --git a/lisp/custom.el b/lisp/custom.el index 2f17ad36da0..bffd30bff21 100644 --- a/lisp/custom.el +++ b/lisp/custom.el | |||
| @@ -1143,8 +1143,9 @@ prompt the user for confirmation before loading it. But if | |||
| 1143 | optional arg NO-CONFIRM is non-nil, load the theme without | 1143 | optional arg NO-CONFIRM is non-nil, load the theme without |
| 1144 | prompting. | 1144 | prompting. |
| 1145 | 1145 | ||
| 1146 | Normally, this function also enables THEME; if optional arg | 1146 | Normally, this function also enables THEME. If optional arg |
| 1147 | NO-ENABLE is non-nil, load the theme but don't enable it. | 1147 | NO-ENABLE is non-nil, load the theme but don't enable it, unless |
| 1148 | the theme was already enabled. | ||
| 1148 | 1149 | ||
| 1149 | This function is normally called through Customize when setting | 1150 | This function is normally called through Customize when setting |
| 1150 | `custom-enabled-themes'. If used directly in your init file, it | 1151 | `custom-enabled-themes'. If used directly in your init file, it |
| @@ -1160,6 +1161,10 @@ Return t if THEME was successfully loaded, nil otherwise." | |||
| 1160 | nil nil)) | 1161 | nil nil)) |
| 1161 | (unless (custom-theme-name-valid-p theme) | 1162 | (unless (custom-theme-name-valid-p theme) |
| 1162 | (error "Invalid theme name `%s'" theme)) | 1163 | (error "Invalid theme name `%s'" theme)) |
| 1164 | ;; If THEME is already enabled, re-enable it after loading, even if | ||
| 1165 | ;; NO-ENABLE is t. | ||
| 1166 | (if no-enable | ||
| 1167 | (setq no-enable (not (custom-theme-enabled-p theme)))) | ||
| 1163 | ;; If reloading, clear out the old theme settings. | 1168 | ;; If reloading, clear out the old theme settings. |
| 1164 | (when (custom-theme-p theme) | 1169 | (when (custom-theme-p theme) |
| 1165 | (disable-theme theme) | 1170 | (disable-theme theme) |
diff --git a/lisp/face-remap.el b/lisp/face-remap.el index 3af9e31a6f7..ca7a28328f9 100644 --- a/lisp/face-remap.el +++ b/lisp/face-remap.el | |||
| @@ -106,21 +106,20 @@ The list structure of ENTRY may be destructively modified." | |||
| 106 | ;;;###autoload | 106 | ;;;###autoload |
| 107 | (defun face-remap-add-relative (face &rest specs) | 107 | (defun face-remap-add-relative (face &rest specs) |
| 108 | "Add a face remapping entry of FACE to SPECS in the current buffer. | 108 | "Add a face remapping entry of FACE to SPECS in the current buffer. |
| 109 | 109 | Return a cookie which can be used to delete this remapping with | |
| 110 | Return a cookie which can be used to delete the remapping with | ||
| 111 | `face-remap-remove-relative'. | 110 | `face-remap-remove-relative'. |
| 112 | 111 | ||
| 113 | SPECS can be any value suitable for the `face' text property, | 112 | The remaining arguments, SPECS, should be either a list of face |
| 114 | including a face name, a list of face names, or a face-attribute | 113 | names, or a property list of face attribute/value pairs. The |
| 115 | property list. The attributes given by SPECS will be merged with | 114 | remapping specified by SPECS takes effect alongside the |
| 116 | any other currently active face remappings of FACE, and with the | 115 | remappings from other calls to `face-remap-add-relative', as well |
| 117 | global definition of FACE. An attempt is made to sort multiple | 116 | as the normal definition of FACE (at lowest priority). This |
| 118 | entries so that entries with relative face-attributes are applied | 117 | function tries to sort multiple remappings for the same face, so |
| 119 | after entries with absolute face-attributes. | 118 | that remappings specifying relative face attributes are applied |
| 120 | 119 | after remappings specifying absolute face attributes. | |
| 121 | The base (lowest priority) remapping may be set to a specific | 120 | |
| 122 | value, instead of the default of the global face definition, | 121 | The base (lowest priority) remapping may be set to something |
| 123 | using `face-remap-set-base'." | 122 | other than the normal definition of FACE via `face-remap-set-base'." |
| 124 | (while (and (consp specs) (null (cdr specs))) | 123 | (while (and (consp specs) (null (cdr specs))) |
| 125 | (setq specs (car specs))) | 124 | (setq specs (car specs))) |
| 126 | (make-local-variable 'face-remapping-alist) | 125 | (make-local-variable 'face-remapping-alist) |
| @@ -148,7 +147,9 @@ COOKIE should be the return value from that function." | |||
| 148 | 147 | ||
| 149 | ;;;###autoload | 148 | ;;;###autoload |
| 150 | (defun face-remap-reset-base (face) | 149 | (defun face-remap-reset-base (face) |
| 151 | "Set the base remapping of FACE to inherit from FACE's global definition." | 150 | "Set the base remapping of FACE to the normal definition of FACE. |
| 151 | This causes the remappings specified by `face-remap-add-relative' | ||
| 152 | to apply on top of the normal definition of FACE." | ||
| 152 | (let ((entry (assq face face-remapping-alist))) | 153 | (let ((entry (assq face face-remapping-alist))) |
| 153 | (when entry | 154 | (when entry |
| 154 | ;; If there's nothing except a base remapping, we simply remove | 155 | ;; If there's nothing except a base remapping, we simply remove |
| @@ -163,10 +164,15 @@ COOKIE should be the return value from that function." | |||
| 163 | ;;;###autoload | 164 | ;;;###autoload |
| 164 | (defun face-remap-set-base (face &rest specs) | 165 | (defun face-remap-set-base (face &rest specs) |
| 165 | "Set the base remapping of FACE in the current buffer to SPECS. | 166 | "Set the base remapping of FACE in the current buffer to SPECS. |
| 166 | If SPECS is empty, the default base remapping is restored, which | 167 | This causes the remappings specified by `face-remap-add-relative' |
| 167 | inherits from the global definition of FACE; note that this is | 168 | to apply on top of the face specification given by SPECS. SPECS |
| 168 | different from SPECS containing a single value `nil', which does | 169 | should be either a list of face names, or a property list of face |
| 169 | not inherit from the global definition of FACE." | 170 | attribute/value pairs. |
| 171 | |||
| 172 | If SPECS is empty, call `face-remap-reset-base' to use the normal | ||
| 173 | definition of FACE as the base remapping; note that this is | ||
| 174 | different from SPECS containing a single value `nil', which means | ||
| 175 | not to inherit from the global definition of FACE at all." | ||
| 170 | (while (and (consp specs) (not (null (car specs))) (null (cdr specs))) | 176 | (while (and (consp specs) (not (null (car specs))) (null (cdr specs))) |
| 171 | (setq specs (car specs))) | 177 | (setq specs (car specs))) |
| 172 | (if (or (null specs) | 178 | (if (or (null specs) |
diff --git a/lisp/faces.el b/lisp/faces.el index 34fad66ce27..0256f8d951a 100644 --- a/lisp/faces.el +++ b/lisp/faces.el | |||
| @@ -122,15 +122,13 @@ REGISTRY, ALTERNATIVE1, ALTERNATIVE2, and etc." | |||
| 122 | "Return a list of all defined faces." | 122 | "Return a list of all defined faces." |
| 123 | (mapcar #'car face-new-frame-defaults)) | 123 | (mapcar #'car face-new-frame-defaults)) |
| 124 | 124 | ||
| 125 | |||
| 126 | ;;; ### If not frame-local initialize by what X resources? | ||
| 127 | |||
| 128 | (defun make-face (face &optional no-init-from-resources) | 125 | (defun make-face (face &optional no-init-from-resources) |
| 129 | "Define a new face with name FACE, a symbol. | 126 | "Define a new face with name FACE, a symbol. |
| 130 | NO-INIT-FROM-RESOURCES non-nil means don't initialize frame-local | 127 | Do not call this directly from Lisp code; use `defface' instead. |
| 131 | variants of FACE from X resources. (X resources recognized are found | 128 | |
| 132 | in the global variable `face-x-resources'.) If FACE is already known | 129 | If NO-INIT-FROM-RESOURCES is non-nil, don't initialize face |
| 133 | as a face, leave it unmodified. Value is FACE." | 130 | attributes from X resources. If FACE is already known as a face, |
| 131 | leave it unmodified. Return FACE." | ||
| 134 | (interactive (list (read-from-minibuffer | 132 | (interactive (list (read-from-minibuffer |
| 135 | "Make face: " nil nil t 'face-name-history))) | 133 | "Make face: " nil nil t 'face-name-history))) |
| 136 | (unless (facep face) | 134 | (unless (facep face) |
| @@ -145,31 +143,30 @@ as a face, leave it unmodified. Value is FACE." | |||
| 145 | (make-face-x-resource-internal face))) | 143 | (make-face-x-resource-internal face))) |
| 146 | face) | 144 | face) |
| 147 | 145 | ||
| 148 | |||
| 149 | (defun make-empty-face (face) | 146 | (defun make-empty-face (face) |
| 150 | "Define a new, empty face with name FACE. | 147 | "Define a new, empty face with name FACE. |
| 151 | If the face already exists, it is left unmodified. Value is FACE." | 148 | Do not call this directly from Lisp code; use `defface' instead." |
| 152 | (interactive (list (read-from-minibuffer | 149 | (interactive (list (read-from-minibuffer |
| 153 | "Make empty face: " nil nil t 'face-name-history))) | 150 | "Make empty face: " nil nil t 'face-name-history))) |
| 154 | (make-face face 'no-init-from-resources)) | 151 | (make-face face 'no-init-from-resources)) |
| 155 | 152 | ||
| 156 | |||
| 157 | (defun copy-face (old-face new-face &optional frame new-frame) | 153 | (defun copy-face (old-face new-face &optional frame new-frame) |
| 158 | "Define a face just like OLD-FACE, with name NEW-FACE. | 154 | "Define a face named NEW-FACE, which is a copy of OLD-FACE. |
| 159 | 155 | This function does not copy face customization data, so NEW-FACE | |
| 160 | If NEW-FACE already exists as a face, it is modified to be like | 156 | will not be made customizable. Most Lisp code should not call |
| 161 | OLD-FACE. If it doesn't already exist, it is created. | 157 | this function; use `defface' with :inherit instead. |
| 162 | 158 | ||
| 163 | If the optional argument FRAME is given as a frame, NEW-FACE is | 159 | If NEW-FACE already exists as a face, modify it to be like |
| 164 | changed on FRAME only. | 160 | OLD-FACE. If NEW-FACE doesn't already exist, create it. |
| 165 | If FRAME is t, the frame-independent default specification for OLD-FACE | 161 | |
| 166 | is copied to NEW-FACE. | 162 | If the optional argument FRAME is a frame, change NEW-FACE on |
| 167 | If FRAME is nil, copying is done for the frame-independent defaults | 163 | FRAME only. If FRAME is t, copy the frame-independent default |
| 168 | and for each existing frame. | 164 | specification for OLD-FACE to NEW-FACE. If FRAME is nil, copy |
| 169 | 165 | the defaults as well as the faces on each existing frame. | |
| 170 | If the optional fourth argument NEW-FRAME is given, | 166 | |
| 171 | copy the information from face OLD-FACE on frame FRAME | 167 | If the optional fourth argument NEW-FRAME is given, copy the |
| 172 | to NEW-FACE on frame NEW-FRAME. In this case, FRAME may not be nil." | 168 | information from face OLD-FACE on frame FRAME to NEW-FACE on |
| 169 | frame NEW-FRAME. In this case, FRAME must not be nil." | ||
| 173 | (let ((inhibit-quit t)) | 170 | (let ((inhibit-quit t)) |
| 174 | (if (null frame) | 171 | (if (null frame) |
| 175 | (progn | 172 | (progn |
diff --git a/lisp/files.el b/lisp/files.el index cde15c5d0b1..8c61c288be9 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -6563,7 +6563,7 @@ Otherwise, trash FILENAME using the freedesktop.org conventions, | |||
| 6563 | (new-fn (expand-file-name (file-name-nondirectory fn) | 6563 | (new-fn (expand-file-name (file-name-nondirectory fn) |
| 6564 | trash-dir))) | 6564 | trash-dir))) |
| 6565 | ;; We can't trash a parent directory of trash-directory. | 6565 | ;; We can't trash a parent directory of trash-directory. |
| 6566 | (if (string-match fn trash-dir) | 6566 | (if (string-prefix-p fn trash-dir) |
| 6567 | (error "Trash directory `%s' is a subdirectory of `%s'" | 6567 | (error "Trash directory `%s' is a subdirectory of `%s'" |
| 6568 | trash-dir filename)) | 6568 | trash-dir filename)) |
| 6569 | (unless (file-directory-p trash-dir) | 6569 | (unless (file-directory-p trash-dir) |
| @@ -6595,10 +6595,10 @@ Otherwise, trash FILENAME using the freedesktop.org conventions, | |||
| 6595 | (file-name-directory fn))) | 6595 | (file-name-directory fn))) |
| 6596 | (error "Cannot move %s to trash: Permission denied" filename)) | 6596 | (error "Cannot move %s to trash: Permission denied" filename)) |
| 6597 | ;; The trashed file cannot be the trash dir or its parent. | 6597 | ;; The trashed file cannot be the trash dir or its parent. |
| 6598 | (if (string-match fn trash-files-dir) | 6598 | (if (string-prefix-p fn trash-files-dir) |
| 6599 | (error "The trash directory %s is a subdirectory of %s" | 6599 | (error "The trash directory %s is a subdirectory of %s" |
| 6600 | trash-files-dir filename)) | 6600 | trash-files-dir filename)) |
| 6601 | (if (string-match fn trash-info-dir) | 6601 | (if (string-prefix-p fn trash-info-dir) |
| 6602 | (error "The trash directory %s is a subdirectory of %s" | 6602 | (error "The trash directory %s is a subdirectory of %s" |
| 6603 | trash-info-dir filename)) | 6603 | trash-info-dir filename)) |
| 6604 | 6604 | ||
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 878b9b9eb6b..ef0f1c5c852 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-03-22 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * auth-source.el (auth-source-netrc-create): Quote tokens that contain | ||
| 4 | "#" to avoid having them interpreted as comments. | ||
| 5 | |||
| 1 | 2012-03-19 Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 | 2012-03-19 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 7 | ||
| 3 | * shr.el (shr-insert): Update the text state properly to avoid | 8 | * shr.el (shr-insert): Update the text state properly to avoid |
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el index 80a3b91b60a..34fe5afe7af 100644 --- a/lisp/gnus/auth-source.el +++ b/lisp/gnus/auth-source.el | |||
| @@ -1293,7 +1293,7 @@ See `auth-source-search' for details on SPEC." | |||
| 1293 | (secret "password") | 1293 | (secret "password") |
| 1294 | (port "port") ; redundant but clearer | 1294 | (port "port") ; redundant but clearer |
| 1295 | (t (symbol-name r))) | 1295 | (t (symbol-name r))) |
| 1296 | (if (string-match "[\" ]" data) | 1296 | (if (string-match "[\"# ]" data) |
| 1297 | (format "%S" data) | 1297 | (format "%S" data) |
| 1298 | data))))) | 1298 | data))))) |
| 1299 | (setq add (concat add (funcall printer))))))) | 1299 | (setq add (concat add (funcall printer))))))) |
diff --git a/lisp/ido.el b/lisp/ido.el index 5813aff0f21..dcaa8f373ce 100644 --- a/lisp/ido.el +++ b/lisp/ido.el | |||
| @@ -1722,8 +1722,9 @@ This function also adds a hook to the minibuffer." | |||
| 1722 | (unless (and ido-enable-tramp-completion | 1722 | (unless (and ido-enable-tramp-completion |
| 1723 | (string-match "\\`/[^/]*@\\'" dir)) | 1723 | (string-match "\\`/[^/]*@\\'" dir)) |
| 1724 | (setq dir (ido-final-slash dir t)))) | 1724 | (setq dir (ido-final-slash dir t)))) |
| 1725 | (if (get-buffer ido-completion-buffer) | 1725 | (and ido-completion-buffer |
| 1726 | (kill-buffer ido-completion-buffer)) | 1726 | (get-buffer ido-completion-buffer) |
| 1727 | (kill-buffer ido-completion-buffer)) | ||
| 1727 | (cond | 1728 | (cond |
| 1728 | ((equal dir ido-current-directory) | 1729 | ((equal dir ido-current-directory) |
| 1729 | nil) | 1730 | nil) |
| @@ -1736,8 +1737,9 @@ This function also adds a hook to the minibuffer." | |||
| 1736 | (t | 1737 | (t |
| 1737 | (ido-trace "cd" dir) | 1738 | (ido-trace "cd" dir) |
| 1738 | (setq ido-current-directory dir) | 1739 | (setq ido-current-directory dir) |
| 1739 | (if (get-buffer ido-completion-buffer) | 1740 | (and ido-completion-buffer |
| 1740 | (kill-buffer ido-completion-buffer)) | 1741 | (get-buffer ido-completion-buffer) |
| 1742 | (kill-buffer ido-completion-buffer)) | ||
| 1741 | (setq ido-directory-nonreadable (ido-nonreadable-directory-p dir)) | 1743 | (setq ido-directory-nonreadable (ido-nonreadable-directory-p dir)) |
| 1742 | (setq ido-directory-too-big (and (not ido-directory-nonreadable) | 1744 | (setq ido-directory-too-big (and (not ido-directory-nonreadable) |
| 1743 | (ido-directory-too-big-p dir))) | 1745 | (ido-directory-too-big-p dir))) |
| @@ -1982,8 +1984,9 @@ If INITIAL is non-nil, it specifies the initial input string." | |||
| 1982 | (setq ido-text-init nil)) | 1984 | (setq ido-text-init nil)) |
| 1983 | ido-completion-map nil hist)))) | 1985 | ido-completion-map nil hist)))) |
| 1984 | (ido-trace "read-from-minibuffer" ido-final-text) | 1986 | (ido-trace "read-from-minibuffer" ido-final-text) |
| 1985 | (if (get-buffer ido-completion-buffer) | 1987 | (and ido-completion-buffer |
| 1986 | (kill-buffer ido-completion-buffer)) | 1988 | (get-buffer ido-completion-buffer) |
| 1989 | (kill-buffer ido-completion-buffer)) | ||
| 1987 | 1990 | ||
| 1988 | (ido-trace "\n_EXIT_" ido-exit) | 1991 | (ido-trace "\n_EXIT_" ido-exit) |
| 1989 | 1992 | ||
| @@ -3837,8 +3840,9 @@ This is to make them appear as if they were \"virtual buffers\"." | |||
| 3837 | (defun ido-choose-completion-string (choice &rest ignored) | 3840 | (defun ido-choose-completion-string (choice &rest ignored) |
| 3838 | (when (ido-active) | 3841 | (when (ido-active) |
| 3839 | ;; Insert the completion into the buffer where completion was requested. | 3842 | ;; Insert the completion into the buffer where completion was requested. |
| 3840 | (if (get-buffer ido-completion-buffer) | 3843 | (and ido-completion-buffer |
| 3841 | (kill-buffer ido-completion-buffer)) | 3844 | (get-buffer ido-completion-buffer) |
| 3845 | (kill-buffer ido-completion-buffer)) | ||
| 3842 | (cond | 3846 | (cond |
| 3843 | ((ido-active t) ;; ido-use-merged-list | 3847 | ((ido-active t) ;; ido-use-merged-list |
| 3844 | (setq ido-current-directory "" | 3848 | (setq ido-current-directory "" |
| @@ -3857,7 +3861,8 @@ This is to make them appear as if they were \"virtual buffers\"." | |||
| 3857 | "Show possible completions in a *File Completions* buffer." | 3861 | "Show possible completions in a *File Completions* buffer." |
| 3858 | (interactive) | 3862 | (interactive) |
| 3859 | (setq ido-rescan nil) | 3863 | (setq ido-rescan nil) |
| 3860 | (let ((temp-buf (get-buffer ido-completion-buffer)) | 3864 | (let ((temp-buf (and ido-completion-buffer |
| 3865 | (get-buffer ido-completion-buffer))) | ||
| 3861 | display-it full-list) | 3866 | display-it full-list) |
| 3862 | (if (and (eq last-command this-command) temp-buf) | 3867 | (if (and (eq last-command this-command) temp-buf) |
| 3863 | ;; scroll buffer | 3868 | ;; scroll buffer |
| @@ -3876,7 +3881,7 @@ This is to make them appear as if they were \"virtual buffers\"." | |||
| 3876 | (scroll-other-window)) | 3881 | (scroll-other-window)) |
| 3877 | (set-buffer buf)) | 3882 | (set-buffer buf)) |
| 3878 | (setq display-it t)) | 3883 | (setq display-it t)) |
| 3879 | (if display-it | 3884 | (if (and ido-completion-buffer display-it) |
| 3880 | (with-output-to-temp-buffer ido-completion-buffer | 3885 | (with-output-to-temp-buffer ido-completion-buffer |
| 3881 | (let ((completion-list (sort | 3886 | (let ((completion-list (sort |
| 3882 | (cond | 3887 | (cond |
diff --git a/lisp/info.el b/lisp/info.el index b7e2d1eedbe..042ff158362 100644 --- a/lisp/info.el +++ b/lisp/info.el | |||
| @@ -2594,7 +2594,9 @@ new buffer." | |||
| 2594 | (list item current-prefix-arg)))) | 2594 | (list item current-prefix-arg)))) |
| 2595 | ;; there is a problem here in that if several menu items have the same | 2595 | ;; there is a problem here in that if several menu items have the same |
| 2596 | ;; name you can only go to the node of the first with this command. | 2596 | ;; name you can only go to the node of the first with this command. |
| 2597 | (Info-goto-node (Info-extract-menu-item menu-item) (if fork menu-item))) | 2597 | (Info-goto-node (Info-extract-menu-item menu-item) |
| 2598 | (and fork | ||
| 2599 | (if (stringp fork) fork menu-item)))) | ||
| 2598 | 2600 | ||
| 2599 | (defun Info-extract-menu-item (menu-item) | 2601 | (defun Info-extract-menu-item (menu-item) |
| 2600 | (setq menu-item (regexp-quote menu-item)) | 2602 | (setq menu-item (regexp-quote menu-item)) |
diff --git a/lisp/international/quail.el b/lisp/international/quail.el index e0e6bfd465b..70e6d4b69cb 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el | |||
| @@ -825,8 +825,6 @@ The format of KBD-LAYOUT is the same as `quail-keyboard-layout'." | |||
| 825 | (setq i 0) | 825 | (setq i 0) |
| 826 | (while (< i quail-keyboard-layout-len) | 826 | (while (< i quail-keyboard-layout-len) |
| 827 | (when (= (% i 30) 0) | 827 | (when (= (% i 30) 0) |
| 828 | ;; Insert LRO to avoid bidi-reordering of keyboard cells. | ||
| 829 | (insert (propertize (string ?\x202d) 'invisible t)) | ||
| 830 | (setq row (/ i 30)) | 828 | (setq row (/ i 30)) |
| 831 | (if (> row 1) | 829 | (if (> row 1) |
| 832 | (insert-char 32 (+ row (/ (- row 2) 2))))) | 830 | (insert-char 32 (+ row (/ (- row 2) 2))))) |
| @@ -835,25 +833,26 @@ The format of KBD-LAYOUT is the same as `quail-keyboard-layout'." | |||
| 835 | (insert bar) | 833 | (insert bar) |
| 836 | (if (< (if (stringp lower) (string-width lower) (char-width lower)) 2) | 834 | (if (< (if (stringp lower) (string-width lower) (char-width lower)) 2) |
| 837 | (insert " ")) | 835 | (insert " ")) |
| 838 | (if (and (characterp lower) | 836 | (if (characterp lower) |
| 839 | (eq (get-char-code-property lower 'general-category) 'Mn)) | 837 | (if (eq (get-char-code-property lower 'general-category) 'Mn) |
| 840 | ;; Pad the left and right of non-spacing characters. | 838 | ;; Pad the left and right of non-spacing characters. |
| 841 | (setq lower (compose-string (string lower) 0 1 | 839 | (setq lower (compose-string (string lower) 0 1 |
| 842 | (format "\t%c\t" lower)))) | 840 | (format "\t%c\t" lower))) |
| 843 | (if (and (characterp upper) | 841 | (setq lower (string lower)))) |
| 844 | (eq (get-char-code-property upper 'general-category) 'Mn)) | 842 | (if (characterp upper) |
| 845 | ;; Pad the left and right of non-spacing characters. | 843 | (if (eq (get-char-code-property upper 'general-category) 'Mn) |
| 846 | (setq upper (compose-string (string upper) 0 1 | 844 | ;; Pad the left and right of non-spacing characters. |
| 847 | (format "\t%c\t" upper)))) | 845 | (setq upper (compose-string (string upper) 0 1 |
| 848 | (insert lower (propertize " " 'invisible t) upper) | 846 | (format "\t%c\t" upper))) |
| 849 | (if (< (if (stringp upper) (string-width upper) (char-width upper)) 2) | 847 | (setq upper (string upper)))) |
| 848 | (insert (bidi-string-mark-left-to-right lower) | ||
| 849 | (propertize " " 'invisible t) | ||
| 850 | (bidi-string-mark-left-to-right upper)) | ||
| 851 | (if (< (string-width upper) 2) | ||
| 850 | (insert " ")) | 852 | (insert " ")) |
| 851 | (setq i (+ i 2)) | 853 | (setq i (+ i 2)) |
| 852 | (if (= (% i 30) 0) | 854 | (if (= (% i 30) 0) |
| 853 | (insert bar | 855 | (insert bar "\n"))) |
| 854 | ;; Insert PDF to deny the previously inserted LRO. | ||
| 855 | (propertize (string ?\x202c) 'invisible t) | ||
| 856 | "\n"))) | ||
| 857 | ;; Insert horizontal lines while deleting blank key columns at the | 856 | ;; Insert horizontal lines while deleting blank key columns at the |
| 858 | ;; beginning and end of each line. | 857 | ;; beginning and end of each line. |
| 859 | (save-restriction | 858 | (save-restriction |
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in index 33c87778dfd..7907c5f10ce 100644 --- a/lisp/makefile.w32-in +++ b/lisp/makefile.w32-in | |||
| @@ -510,9 +510,9 @@ bootstrap: update-subdirs autoloads mh-autoloads compile finder-data custom-deps | |||
| 510 | # | 510 | # |
| 511 | install: | 511 | install: |
| 512 | - mkdir "$(INSTALL_DIR)/lisp" | 512 | - mkdir "$(INSTALL_DIR)/lisp" |
| 513 | - $(DEL) ../same-dir.tst | 513 | - $(DEL) ../$(DIRNAME)_same-dir.tst |
| 514 | - $(DEL) "$(INSTALL_DIR)/same-dir.tst" | 514 | - $(DEL) "$(INSTALL_DIR)/$(DIRNAME)_same-dir.tst" |
| 515 | echo SameDirTest > "$(INSTALL_DIR)/same-dir.tst" | 515 | echo SameDirTest > "$(INSTALL_DIR)/$(DIRNAME)_same-dir.tst" |
| 516 | #ifdef COPY_LISP_SOURCE | 516 | #ifdef COPY_LISP_SOURCE |
| 517 | $(IFNOTSAMEDIR) $(MAKE) $(MFLAGS) install-lisp-$(SHELLTYPE) $(ENDIF) | 517 | $(IFNOTSAMEDIR) $(MAKE) $(MFLAGS) install-lisp-$(SHELLTYPE) $(ENDIF) |
| 518 | #else | 518 | #else |
| @@ -528,8 +528,8 @@ install: | |||
| 528 | # $(IFNOTSAMEDIR) $(CP) international/latin-*.el "$(INSTALL_DIR)/lisp/international" $(ENDIF) | 528 | # $(IFNOTSAMEDIR) $(CP) international/latin-*.el "$(INSTALL_DIR)/lisp/international" $(ENDIF) |
| 529 | # $(IFNOTSAMEDIR) $(CP) international/mule-conf.el "$(INSTALL_DIR)/lisp/international" $(ENDIF) | 529 | # $(IFNOTSAMEDIR) $(CP) international/mule-conf.el "$(INSTALL_DIR)/lisp/international" $(ENDIF) |
| 530 | #endif | 530 | #endif |
| 531 | - $(DEL) ../same-dir.tst | 531 | - $(DEL) ../$(DIRNAME)_same-dir.tst |
| 532 | - $(DEL) "$(INSTALL_DIR)/same-dir.tst" | 532 | - $(DEL) "$(INSTALL_DIR)/$(DIRNAME)_same-dir.tst" |
| 533 | 533 | ||
| 534 | # Need to copy *.el files first, to avoid "source file is newer" annoyance | 534 | # Need to copy *.el files first, to avoid "source file is newer" annoyance |
| 535 | # since cp does not preserve time stamps | 535 | # since cp does not preserve time stamps |
diff --git a/lisp/mwheel.el b/lisp/mwheel.el index 7b507664712..1c2028ed02e 100644 --- a/lisp/mwheel.el +++ b/lisp/mwheel.el | |||
| @@ -232,12 +232,17 @@ This should only be bound to mouse buttons 4 and 5." | |||
| 232 | (end-of-buffer (while t (funcall mwheel-scroll-up-function))))) | 232 | (end-of-buffer (while t (funcall mwheel-scroll-up-function))))) |
| 233 | (t (error "Bad binding in mwheel-scroll")))) | 233 | (t (error "Bad binding in mwheel-scroll")))) |
| 234 | (if curwin (select-window curwin))) | 234 | (if curwin (select-window curwin))) |
| 235 | ;; If there is a temporarily active region, deactivate it iff | 235 | ;; If there is a temporarily active region, deactivate it if |
| 236 | ;; scrolling moves point. | 236 | ;; scrolling moves point. |
| 237 | (when opoint | 237 | (when opoint |
| 238 | (with-current-buffer buffer | 238 | (with-current-buffer buffer |
| 239 | (when (/= opoint (point)) | 239 | (when (/= opoint (point)) |
| 240 | (deactivate-mark))))) | 240 | ;; Call `deactivate-mark' at the original position, so that |
| 241 | ;; the original region is saved to the X selection. | ||
| 242 | (let ((newpoint (point))) | ||
| 243 | (goto-char opoint) | ||
| 244 | (deactivate-mark) | ||
| 245 | (goto-char newpoint)))))) | ||
| 241 | (when (and mouse-wheel-click-event mouse-wheel-inhibit-click-time) | 246 | (when (and mouse-wheel-click-event mouse-wheel-inhibit-click-time) |
| 242 | (if mwheel-inhibit-click-event-timer | 247 | (if mwheel-inhibit-click-event-timer |
| 243 | (cancel-timer mwheel-inhibit-click-event-timer) | 248 | (cancel-timer mwheel-inhibit-click-event-timer) |
diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el index 8730e875ea0..7a3d47ef1d1 100644 --- a/lisp/net/network-stream.el +++ b/lisp/net/network-stream.el | |||
| @@ -302,11 +302,16 @@ functionality. | |||
| 302 | (if (or (null starttls-command) | 302 | (if (or (null starttls-command) |
| 303 | starttls-available) | 303 | starttls-available) |
| 304 | "Server does not support TLS" | 304 | "Server does not support TLS" |
| 305 | (concat "Emacs does not support TLS, and no external `" | 305 | ;; See `starttls-available-p'. If this predicate |
| 306 | (if starttls-use-gnutls | 306 | ;; changes to allow running under Windows, the error |
| 307 | starttls-gnutls-program | 307 | ;; message below should be amended. |
| 308 | starttls-program) | 308 | (if (memq system-type '(windows-nt ms-dos)) |
| 309 | "' program was found"))) | 309 | (concat "Emacs does not support TLS") |
| 310 | (concat "Emacs does not support TLS, and no external `" | ||
| 311 | (if starttls-use-gnutls | ||
| 312 | starttls-gnutls-program | ||
| 313 | starttls-program) | ||
| 314 | "' program was found")))) | ||
| 310 | (delete-process stream) | 315 | (delete-process stream) |
| 311 | (setq stream nil)) | 316 | (setq stream nil)) |
| 312 | ;; Return value: | 317 | ;; Return value: |
diff --git a/lisp/newcomment.el b/lisp/newcomment.el index ddb6c71d1a6..40bb36daf45 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el | |||
| @@ -587,7 +587,7 @@ Point is expected to be at the start of the comment." | |||
| 587 | (save-excursion (end-of-line) (current-column))))) | 587 | (save-excursion (end-of-line) (current-column))))) |
| 588 | (other nil) | 588 | (other nil) |
| 589 | (min (save-excursion (skip-chars-backward " \t") | 589 | (min (save-excursion (skip-chars-backward " \t") |
| 590 | (1+ (current-column))))) | 590 | (if (bolp) 0 (1+ (current-column)))))) |
| 591 | ;; Fix up the range. | 591 | ;; Fix up the range. |
| 592 | (if (< max min) (setq max min)) | 592 | (if (< max min) (setq max min)) |
| 593 | ;; Don't move past the fill column. | 593 | ;; Don't move past the fill column. |
diff --git a/lisp/outline.el b/lisp/outline.el index 15af855ff43..da5519f95eb 100644 --- a/lisp/outline.el +++ b/lisp/outline.el | |||
| @@ -751,6 +751,7 @@ If FLAG is nil then text is shown, while if FLAG is t the text is hidden." | |||
| 751 | ;; very end of the heading, before the newline, so text inserted at FROM | 751 | ;; very end of the heading, before the newline, so text inserted at FROM |
| 752 | ;; belongs to the heading rather than to the entry. | 752 | ;; belongs to the heading rather than to the entry. |
| 753 | (let ((o (make-overlay from to nil 'front-advance))) | 753 | (let ((o (make-overlay from to nil 'front-advance))) |
| 754 | (overlay-put o 'evaporate t) | ||
| 754 | (overlay-put o 'invisible 'outline) | 755 | (overlay-put o 'invisible 'outline) |
| 755 | (overlay-put o 'isearch-open-invisible | 756 | (overlay-put o 'isearch-open-invisible |
| 756 | (or outline-isearch-open-invisible-function | 757 | (or outline-isearch-open-invisible-function |
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index cc5f0fef934..6bb86738df0 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el | |||
| @@ -809,10 +809,11 @@ If no tags table is loaded, do nothing and return nil." | |||
| 809 | beg) | 809 | beg) |
| 810 | (when pattern | 810 | (when pattern |
| 811 | (save-excursion | 811 | (save-excursion |
| 812 | (search-backward pattern) ;FIXME: will fail if we're inside pattern. | 812 | (forward-char (1- (length pattern))) |
| 813 | (setq beg (point)) | 813 | (search-backward pattern) |
| 814 | (forward-char (length pattern)) | 814 | (setq beg (point)) |
| 815 | (list beg (point) (tags-lazy-completion-table) :exclusive 'no)))))) | 815 | (forward-char (length pattern)) |
| 816 | (list beg (point) (tags-lazy-completion-table) :exclusive 'no)))))) | ||
| 816 | 817 | ||
| 817 | (defun find-tag-tag (string) | 818 | (defun find-tag-tag (string) |
| 818 | "Read a tag name, with defaulting and completion." | 819 | "Read a tag name, with defaulting and completion." |
| @@ -1409,7 +1410,9 @@ hits the start of file." | |||
| 1409 | tag tag-info pt) | 1410 | tag tag-info pt) |
| 1410 | (forward-line 1) | 1411 | (forward-line 1) |
| 1411 | (while (not (or (eobp) (looking-at "\f"))) | 1412 | (while (not (or (eobp) (looking-at "\f"))) |
| 1412 | (setq tag-info (save-excursion (funcall snarf-tag-function t)) | 1413 | ;; We used to use explicit tags when available, but the current goto-func |
| 1414 | ;; can only handle implicit tags. | ||
| 1415 | (setq tag-info (save-excursion (funcall snarf-tag-function nil)) | ||
| 1413 | tag (car tag-info) | 1416 | tag (car tag-info) |
| 1414 | pt (with-current-buffer standard-output (point))) | 1417 | pt (with-current-buffer standard-output (point))) |
| 1415 | (princ tag) | 1418 | (princ tag) |
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index 104a8f96727..26db60ddbc2 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el | |||
| @@ -607,6 +607,7 @@ as cdr." | |||
| 607 | ;; forward comment, and see if we are inside, then extend | 607 | ;; forward comment, and see if we are inside, then extend |
| 608 | ;; forward and backward as long as we have comments | 608 | ;; forward and backward as long as we have comments |
| 609 | (let ((q (point))) | 609 | (let ((q (point))) |
| 610 | (skip-chars-forward "[:blank:]") | ||
| 610 | (when (or (looking-at hs-c-start-regexp) | 611 | (when (or (looking-at hs-c-start-regexp) |
| 611 | (re-search-backward hs-c-start-regexp (point-min) t)) | 612 | (re-search-backward hs-c-start-regexp (point-min) t)) |
| 612 | ;; first get to the beginning of this comment... | 613 | ;; first get to the beginning of this comment... |
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index bf264972940..66aa256f947 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -96,7 +96,7 @@ | |||
| 96 | (regexp-opt (append ruby-modifier-beg-keywords ruby-block-op-keywords)) | 96 | (regexp-opt (append ruby-modifier-beg-keywords ruby-block-op-keywords)) |
| 97 | "Regexp to match hanging block modifiers.") | 97 | "Regexp to match hanging block modifiers.") |
| 98 | 98 | ||
| 99 | (defconst ruby-block-end-re "\\<end\\>") | 99 | (defconst ruby-block-end-re "\\_<end\\_>") |
| 100 | 100 | ||
| 101 | (eval-and-compile | 101 | (eval-and-compile |
| 102 | (defconst ruby-here-doc-beg-re | 102 | (defconst ruby-here-doc-beg-re |
| @@ -115,9 +115,9 @@ This should only be called after matching against `ruby-here-doc-beg-re'." | |||
| 115 | (match-string 6))))) | 115 | (match-string 6))))) |
| 116 | 116 | ||
| 117 | (defconst ruby-delimiter | 117 | (defconst ruby-delimiter |
| 118 | (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\<\\(" | 118 | (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\_<\\(" |
| 119 | ruby-block-beg-re | 119 | ruby-block-beg-re |
| 120 | "\\)\\>\\|" ruby-block-end-re | 120 | "\\)\\_>\\|" ruby-block-end-re |
| 121 | "\\|^=begin\\|" ruby-here-doc-beg-re)) | 121 | "\\|^=begin\\|" ruby-here-doc-beg-re)) |
| 122 | 122 | ||
| 123 | (defconst ruby-negative | 123 | (defconst ruby-negative |
| @@ -166,6 +166,7 @@ This should only be called after matching against `ruby-here-doc-beg-re'." | |||
| 166 | (modify-syntax-entry ?$ "." table) | 166 | (modify-syntax-entry ?$ "." table) |
| 167 | (modify-syntax-entry ?? "_" table) | 167 | (modify-syntax-entry ?? "_" table) |
| 168 | (modify-syntax-entry ?_ "_" table) | 168 | (modify-syntax-entry ?_ "_" table) |
| 169 | (modify-syntax-entry ?: "_" table) | ||
| 169 | (modify-syntax-entry ?< "." table) | 170 | (modify-syntax-entry ?< "." table) |
| 170 | (modify-syntax-entry ?> "." table) | 171 | (modify-syntax-entry ?> "." table) |
| 171 | (modify-syntax-entry ?& "." table) | 172 | (modify-syntax-entry ?& "." table) |
| @@ -565,7 +566,7 @@ and `\\' when preceded by `?'." | |||
| 565 | (setq nest (cons (cons nil pnt) nest)) | 566 | (setq nest (cons (cons nil pnt) nest)) |
| 566 | (setq depth (1+ depth)))) | 567 | (setq depth (1+ depth)))) |
| 567 | (goto-char (match-end 0))) | 568 | (goto-char (match-end 0))) |
| 568 | ((looking-at (concat "\\<\\(" ruby-block-beg-re "\\)\\>")) | 569 | ((looking-at (concat "\\_<\\(" ruby-block-beg-re "\\)\\_>")) |
| 569 | (and | 570 | (and |
| 570 | (save-match-data | 571 | (save-match-data |
| 571 | (or (not (looking-at (concat "do" ruby-keyword-end-re))) | 572 | (or (not (looking-at (concat "do" ruby-keyword-end-re))) |
| @@ -864,7 +865,7 @@ move backward." | |||
| 864 | ;; It seems like it should move to the line where indentation should deepen, | 865 | ;; It seems like it should move to the line where indentation should deepen, |
| 865 | ;; but ruby-indent-beg-re only accounts for whitespace before class, module and def, | 866 | ;; but ruby-indent-beg-re only accounts for whitespace before class, module and def, |
| 866 | ;; so this will only match other block beginners at the beginning of the line. | 867 | ;; so this will only match other block beginners at the beginning of the line. |
| 867 | (and (re-search-backward (concat "^\\(" ruby-indent-beg-re "\\)\\b") nil 'move) | 868 | (and (re-search-backward (concat "^\\(" ruby-indent-beg-re "\\)\\_>") nil 'move) |
| 868 | (beginning-of-line))) | 869 | (beginning-of-line))) |
| 869 | 870 | ||
| 870 | (defun ruby-move-to-block (n) | 871 | (defun ruby-move-to-block (n) |
diff --git a/lisp/simple.el b/lisp/simple.el index 936037f5caa..8b04534455d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -3688,7 +3688,8 @@ If ARG is zero, move to the beginning of the current line." | |||
| 3688 | (assq prop buffer-invisibility-spec)))))) | 3688 | (assq prop buffer-invisibility-spec)))))) |
| 3689 | (skip-chars-forward "^\n") | 3689 | (skip-chars-forward "^\n") |
| 3690 | (if (get-text-property (point) 'invisible) | 3690 | (if (get-text-property (point) 'invisible) |
| 3691 | (goto-char (next-single-property-change (point) 'invisible)) | 3691 | (goto-char (or (next-single-property-change (point) 'invisible) |
| 3692 | (point-max))) | ||
| 3692 | (goto-char (next-overlay-change (point)))) | 3693 | (goto-char (next-overlay-change (point)))) |
| 3693 | (end-of-line))) | 3694 | (end-of-line))) |
| 3694 | 3695 | ||
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index ff6a6e6f805..d6e25188c69 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-03-25 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * url-queue.el (url-queue-kill-job): Check whether the buffer has | ||
| 4 | been killed asynchronously before selecting it. | ||
| 5 | |||
| 1 | 2012-03-14 Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 | 2012-03-14 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 7 | ||
| 3 | * url-queue.el (url-queue-kill-job): Make sure that the callback | 8 | * url-queue.el (url-queue-kill-job): Make sure that the callback |
diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index 46124717fed..917c787df29 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el | |||
| @@ -160,7 +160,8 @@ The variable `url-queue-timeout' sets a timeout." | |||
| 160 | ;; Call the callback with an error message to ensure that the caller | 160 | ;; Call the callback with an error message to ensure that the caller |
| 161 | ;; is notified that the job has failed. | 161 | ;; is notified that the job has failed. |
| 162 | (with-current-buffer | 162 | (with-current-buffer |
| 163 | (if (bufferp (url-queue-buffer job)) | 163 | (if (and (bufferp (url-queue-buffer job)) |
| 164 | (buffer-live-p (url-queue-buffer job))) | ||
| 164 | ;; Use the (partially filled) process buffer it it exists. | 165 | ;; Use the (partially filled) process buffer it it exists. |
| 165 | (url-queue-buffer job) | 166 | (url-queue-buffer job) |
| 166 | ;; If not, just create a new buffer, which will probably be | 167 | ;; If not, just create a new buffer, which will probably be |
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el index 9f35fc8f035..798131236d5 100644 --- a/lisp/vc/vc-bzr.el +++ b/lisp/vc/vc-bzr.el | |||
| @@ -89,18 +89,40 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches." | |||
| 89 | (repeat :tag "Argument List" :value ("") string)) | 89 | (repeat :tag "Argument List" :value ("") string)) |
| 90 | :group 'vc-bzr) | 90 | :group 'vc-bzr) |
| 91 | 91 | ||
| 92 | (defcustom vc-bzr-status-switches | ||
| 93 | (ignore-errors | ||
| 94 | (with-temp-buffer | ||
| 95 | (call-process vc-bzr-program nil t nil "help" "status") | ||
| 96 | (if (search-backward "--no-classify" nil t) | ||
| 97 | "--no-classify"))) | ||
| 98 | "String or list of strings specifying switches for bzr status under VC. | ||
| 99 | The option \"--no-classify\" should be present if your bzr supports it." | ||
| 100 | :type '(choice (const :tag "None" nil) | ||
| 101 | (string :tag "Argument String") | ||
| 102 | (repeat :tag "Argument List" :value ("") string)) | ||
| 103 | :group 'vc-bzr | ||
| 104 | :version "24.1") | ||
| 105 | |||
| 92 | ;; since v0.9, bzr supports removing the progress indicators | 106 | ;; since v0.9, bzr supports removing the progress indicators |
| 93 | ;; by setting environment variable BZR_PROGRESS_BAR to "none". | 107 | ;; by setting environment variable BZR_PROGRESS_BAR to "none". |
| 94 | (defun vc-bzr-command (bzr-command buffer okstatus file-or-list &rest args) | 108 | (defun vc-bzr-command (bzr-command buffer okstatus file-or-list &rest args) |
| 95 | "Wrapper round `vc-do-command' using `vc-bzr-program' as COMMAND. | 109 | "Wrapper round `vc-do-command' using `vc-bzr-program' as COMMAND. |
| 96 | Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and | 110 | Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and |
| 97 | `LC_MESSAGES=C' to the environment." | 111 | `LC_MESSAGES=C' to the environment. If BZR-COMMAND is \"status\", |
| 112 | prepends `vc-bzr-status-switches' to ARGS." | ||
| 98 | (let ((process-environment | 113 | (let ((process-environment |
| 99 | (list* "BZR_PROGRESS_BAR=none" ; Suppress progress output (bzr >=0.9) | 114 | (list* "BZR_PROGRESS_BAR=none" ; Suppress progress output (bzr >=0.9) |
| 100 | "LC_MESSAGES=C" ; Force English output | 115 | "LC_MESSAGES=C" ; Force English output |
| 101 | process-environment))) | 116 | process-environment))) |
| 102 | (apply 'vc-do-command (or buffer "*vc*") okstatus vc-bzr-program | 117 | (apply 'vc-do-command (or buffer "*vc*") okstatus vc-bzr-program |
| 103 | file-or-list bzr-command args))) | 118 | file-or-list bzr-command |
| 119 | (if (and (string-equal "status" bzr-command) | ||
| 120 | vc-bzr-status-switches) | ||
| 121 | (append (if (stringp vc-bzr-status-switches) | ||
| 122 | (list vc-bzr-status-switches) | ||
| 123 | vc-bzr-status-switches) | ||
| 124 | args) | ||
| 125 | args)))) | ||
| 104 | 126 | ||
| 105 | (defun vc-bzr-async-command (bzr-command &rest args) | 127 | (defun vc-bzr-async-command (bzr-command &rest args) |
| 106 | "Wrapper round `vc-do-async-command' using `vc-bzr-program' as COMMAND. | 128 | "Wrapper round `vc-do-async-command' using `vc-bzr-program' as COMMAND. |
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index e1141cb392d..4cbbf47c2d6 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el | |||
| @@ -1922,7 +1922,7 @@ changes from the current branch." | |||
| 1922 | (setq first-revision | 1922 | (setq first-revision |
| 1923 | (vc-read-revision | 1923 | (vc-read-revision |
| 1924 | (concat "Merge " file | 1924 | (concat "Merge " file |
| 1925 | "from branch or revision " | 1925 | " from branch or revision " |
| 1926 | "(default news on current branch): ") | 1926 | "(default news on current branch): ") |
| 1927 | (list file) | 1927 | (list file) |
| 1928 | backend)) | 1928 | backend)) |
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 61bb4db558c..b6feecebde5 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el | |||
| @@ -1141,12 +1141,6 @@ the field." | |||
| 1141 | (kill-region (point) end) | 1141 | (kill-region (point) end) |
| 1142 | (call-interactively 'kill-line)))) | 1142 | (call-interactively 'kill-line)))) |
| 1143 | 1143 | ||
| 1144 | (defcustom widget-complete-field (lookup-key global-map "\M-\t") | ||
| 1145 | "Default function to call for completion inside fields." | ||
| 1146 | :options '(ispell-complete-word complete-tag lisp-complete-symbol) | ||
| 1147 | :type 'function | ||
| 1148 | :group 'widgets) | ||
| 1149 | |||
| 1150 | (defun widget-narrow-to-field () | 1144 | (defun widget-narrow-to-field () |
| 1151 | "Narrow to field." | 1145 | "Narrow to field." |
| 1152 | (interactive) | 1146 | (interactive) |
| @@ -1169,10 +1163,6 @@ When not inside a field, signal an error." | |||
| 1169 | (completion-in-region (nth 0 data) (nth 1 data) (nth 2 data) | 1163 | (completion-in-region (nth 0 data) (nth 1 data) (nth 2 data) |
| 1170 | (plist-get completion-extra-properties | 1164 | (plist-get completion-extra-properties |
| 1171 | :predicate)))) | 1165 | :predicate)))) |
| 1172 | ((widget-field-find (point)) | ||
| 1173 | ;; This defaulting used to be performed in widget-default-complete, but | ||
| 1174 | ;; it seems more appropriate here than in widget-default-completions. | ||
| 1175 | (call-interactively 'widget-complete-field)) | ||
| 1176 | (t | 1166 | (t |
| 1177 | (error "Not in an editable field"))))) | 1167 | (error "Not in an editable field"))))) |
| 1178 | ;; We may want to use widget completion in buffers where the major mode | 1168 | ;; We may want to use widget completion in buffers where the major mode |
diff --git a/lisp/window.el b/lisp/window.el index f79041e0e6c..cb7368fc7ff 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -2600,11 +2600,16 @@ shall not be switched to in future invocations of this command." | |||
| 2600 | (not (setq killed-buffers | 2600 | (not (setq killed-buffers |
| 2601 | (cons new-buffer killed-buffers)))) | 2601 | (cons new-buffer killed-buffers)))) |
| 2602 | (not (eq new-buffer old-buffer)) | 2602 | (not (eq new-buffer old-buffer)) |
| 2603 | (or bury-or-kill | 2603 | (or bury-or-kill |
| 2604 | (not (memq new-buffer next-buffers)))) | 2604 | (not (memq new-buffer next-buffers)))) |
| 2605 | (set-window-buffer-start-and-point | 2605 | ;; _DO_ show visible buffers as advertized in Elisp manual 28.14 |
| 2606 | window new-buffer (nth 1 entry) (nth 2 entry)) | 2606 | ;; on `switch-to-prev-buffer' & `switch-to-next-buffer' |
| 2607 | (throw 'found t))) | 2607 | ;;(if (get-buffer-window new-buffer) |
| 2608 | ;; ;; Try to avoid showing a buffer visible in some other window. | ||
| 2609 | ;; (setq visible new-buffer) | ||
| 2610 | (set-window-buffer-start-and-point | ||
| 2611 | window new-buffer (nth 1 entry) (nth 2 entry)) | ||
| 2612 | (throw 'found t))) | ||
| 2608 | ;; Scan reverted buffer list of WINDOW's frame next, skipping | 2613 | ;; Scan reverted buffer list of WINDOW's frame next, skipping |
| 2609 | ;; entries of next buffers. Note that when we bury or kill a | 2614 | ;; entries of next buffers. Note that when we bury or kill a |
| 2610 | ;; buffer we don't reverse the global buffer list to avoid showing | 2615 | ;; buffer we don't reverse the global buffer list to avoid showing |
diff --git a/nt/ChangeLog b/nt/ChangeLog index e5358841274..5c494578eeb 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | 2012-03-25 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * makefile.w32-in (install-bin): Don't copy addpm.exe here. Use | ||
| 4 | $(DIRNAME)_same-dir.tst instead of same-dir.tst, to avoid stepping | ||
| 5 | on other (parallel) Make job's toes. | ||
| 6 | (install-other-dirs-nmake, install-other-dirs-gmake): Depend on `all'. | ||
| 7 | (install-shortcuts): Depend on $(INSTALL_DIR)/bin. Copy addpm.exe | ||
| 8 | here. | ||
| 9 | (maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH, dist): Depend | ||
| 10 | on create-tmp-dist-dir. | ||
| 11 | |||
| 12 | * nmake.defs (DIRNAME): New variable. | ||
| 13 | (IFNOTSAMEDIR): Use $(DIRNAME)_same-dir.tst instead of | ||
| 14 | same-dir.tst. | ||
| 15 | |||
| 16 | * gmake.defs (DIRNAME): New variable. | ||
| 17 | (IFNOTSAMEDIR): Use $(DIRNAME)_same-dir.tst instead of | ||
| 18 | same-dir.tst, to avoid conflicts between several (parallel) Make | ||
| 19 | jobs. | ||
| 20 | |||
| 1 | 2012-02-24 Eli Zaretskii <eliz@gnu.org> | 21 | 2012-02-24 Eli Zaretskii <eliz@gnu.org> |
| 2 | 22 | ||
| 3 | Prevent endless re-spawning of cmdproxy.exe when some of its | 23 | Prevent endless re-spawning of cmdproxy.exe when some of its |
diff --git a/nt/gmake.defs b/nt/gmake.defs index 6839b28b975..a669ffd27be 100644 --- a/nt/gmake.defs +++ b/nt/gmake.defs | |||
| @@ -245,9 +245,11 @@ CP_DIR = cp -rf | |||
| 245 | DEL = rm | 245 | DEL = rm |
| 246 | DEL_TREE = rm -r | 246 | DEL_TREE = rm -r |
| 247 | 247 | ||
| 248 | DIRNAME = $(notdir $(CURDIR)) | ||
| 249 | |||
| 248 | ifdef USING_SH | 250 | ifdef USING_SH |
| 249 | 251 | ||
| 250 | IFNOTSAMEDIR = if [ ! -s ../same-dir.tst ] ; then | 252 | IFNOTSAMEDIR = if [ ! -s ../$(DIRNAME)_same-dir.tst ] ; then |
| 251 | FOREACH = for f in | 253 | FOREACH = for f in |
| 252 | FORVAR = $${f} | 254 | FORVAR = $${f} |
| 253 | FORDO = ; do | 255 | FORDO = ; do |
| @@ -262,7 +264,7 @@ endif | |||
| 262 | 264 | ||
| 263 | else | 265 | else |
| 264 | 266 | ||
| 265 | IFNOTSAMEDIR = if not exist ../same-dir.tst | 267 | IFNOTSAMEDIR = if not exist ../$(DIRNAME)_same-dir.tst |
| 266 | FOREACH = for %%f in ( | 268 | FOREACH = for %%f in ( |
| 267 | FORVAR = %%f | 269 | FORVAR = %%f |
| 268 | FORDO = ) do | 270 | FORDO = ) do |
diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in index 10fe6db1ccf..8075f6cb3ef 100644 --- a/nt/makefile.w32-in +++ b/nt/makefile.w32-in | |||
| @@ -214,14 +214,13 @@ $(INSTALL_DIR)/bin: $(INSTALL_DIR) | |||
| 214 | install: install-bin install-shortcuts | 214 | install: install-bin install-shortcuts |
| 215 | 215 | ||
| 216 | install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE) | 216 | install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE) |
| 217 | - $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin | ||
| 218 | - $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin | 217 | - $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin |
| 219 | - $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin | 218 | - $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin |
| 220 | - $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin | 219 | - $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin |
| 221 | - $(CP) README.W32 $(INSTALL_DIR) | 220 | - $(CP) README.W32 $(INSTALL_DIR) |
| 222 | - $(DEL) ../same-dir.tst | 221 | - $(DEL) ../$(DIRNAME)_same-dir.tst |
| 223 | - $(DEL) $(INSTALL_DIR)/same-dir.tst | 222 | - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst |
| 224 | echo SameDirTest > "$(INSTALL_DIR)/same-dir.tst" | 223 | echo SameDirTest > "$(INSTALL_DIR)/$(DIRNAME)_same-dir.tst" |
| 225 | - mkdir "$(INSTALL_DIR)/etc" | 224 | - mkdir "$(INSTALL_DIR)/etc" |
| 226 | - mkdir "$(INSTALL_DIR)/info" | 225 | - mkdir "$(INSTALL_DIR)/info" |
| 227 | - mkdir "$(INSTALL_DIR)/lock" | 226 | - mkdir "$(INSTALL_DIR)/lock" |
| @@ -234,10 +233,10 @@ install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE) | |||
| 234 | $(IFNOTSAMEDIR) $(CP_DIR) ../info $(INSTALL_DIR) $(ENDIF) | 233 | $(IFNOTSAMEDIR) $(CP_DIR) ../info $(INSTALL_DIR) $(ENDIF) |
| 235 | $(IFNOTSAMEDIR) $(CP) ../COPYING $(INSTALL_DIR) $(ENDIF) | 234 | $(IFNOTSAMEDIR) $(CP) ../COPYING $(INSTALL_DIR) $(ENDIF) |
| 236 | - $(CP) ../COPYING $(INSTALL_DIR)/bin | 235 | - $(CP) ../COPYING $(INSTALL_DIR)/bin |
| 237 | - $(DEL) ../same-dir.tst | 236 | - $(DEL) ../$(DIRNAME)_same-dir.tst |
| 238 | - $(DEL) $(INSTALL_DIR)/same-dir.tst | 237 | - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst |
| 239 | 238 | ||
| 240 | install-other-dirs-nmake: | 239 | install-other-dirs-nmake: all |
| 241 | cd ..\lib-src | 240 | cd ..\lib-src |
| 242 | $(MAKE) $(MFLAGS) install | 241 | $(MAKE) $(MFLAGS) install |
| 243 | cd ..\src | 242 | cd ..\src |
| @@ -248,21 +247,22 @@ install-other-dirs-nmake: | |||
| 248 | $(MAKE) $(MFLAGS) install | 247 | $(MAKE) $(MFLAGS) install |
| 249 | cd ..\nt | 248 | cd ..\nt |
| 250 | 249 | ||
| 251 | install-other-dirs-gmake: | 250 | install-other-dirs-gmake: all |
| 252 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src install | 251 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src install |
| 253 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src install | 252 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src install |
| 254 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install | 253 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install |
| 255 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install | 254 | $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install |
| 256 | 255 | ||
| 257 | install-shortcuts: | 256 | install-shortcuts: $(INSTALL_DIR)/bin |
| 257 | - $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin | ||
| 258 | "$(INSTALL_DIR)/bin/addpm" -q | 258 | "$(INSTALL_DIR)/bin/addpm" -q |
| 259 | 259 | ||
| 260 | maybe-copy-distfiles: maybe-copy-distfiles-$(SHELLTYPE) | 260 | maybe-copy-distfiles: maybe-copy-distfiles-$(SHELLTYPE) |
| 261 | 261 | ||
| 262 | maybe-copy-distfiles-CMD: doit | 262 | maybe-copy-distfiles-CMD: create-tmp-dist-dir doit |
| 263 | @if not $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE)=="" $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin | 263 | @if not $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE)=="" $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin |
| 264 | 264 | ||
| 265 | maybe-copy-distfiles-SH: doit | 265 | maybe-copy-distfiles-SH: create-tmp-dist-dir doit |
| 266 | @if [ ! $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE)=="" ] ; then \ | 266 | @if [ ! $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE)=="" ] ; then \ |
| 267 | $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin ; \ | 267 | $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin ; \ |
| 268 | fi | 268 | fi |
| @@ -272,7 +272,7 @@ create-tmp-dist-dir: | |||
| 272 | # Also create bin directory for dist files. | 272 | # Also create bin directory for dist files. |
| 273 | mkdir "$(TMP_DIST_DIR)/bin" | 273 | mkdir "$(TMP_DIST_DIR)/bin" |
| 274 | 274 | ||
| 275 | dist: install-bin create-tmp-dist-dir maybe-copy-distfiles | 275 | dist: install-bin maybe-copy-distfiles |
| 276 | $(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR) | 276 | $(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR) |
| 277 | $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR) | 277 | $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR) |
| 278 | $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR) | 278 | $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR) |
diff --git a/nt/nmake.defs b/nt/nmake.defs index 2cb3113ca9a..11079b4fb7d 100644 --- a/nt/nmake.defs +++ b/nt/nmake.defs | |||
| @@ -27,6 +27,7 @@ MAKETYPE=nmake | |||
| 27 | 27 | ||
| 28 | CURDIR = $(MAKEDIR:\=/) | 28 | CURDIR = $(MAKEDIR:\=/) |
| 29 | THISDIR = $(MAKEDIR) | 29 | THISDIR = $(MAKEDIR) |
| 30 | DIRNAME = | ||
| 30 | 31 | ||
| 31 | ALL_DEPS = $** | 32 | ALL_DEPS = $** |
| 32 | 33 | ||
| @@ -181,7 +182,7 @@ COMPILER_TEMP_FILES = *.pdb | |||
| 181 | 182 | ||
| 182 | CP = cp -f | 183 | CP = cp -f |
| 183 | CP_DIR = cp -rf | 184 | CP_DIR = cp -rf |
| 184 | IFNOTSAMEDIR = if not exist ..\same-dir.tst | 185 | IFNOTSAMEDIR = if not exist ..\$(DIRNAME)_same-dir.tst |
| 185 | ENDIF = | 186 | ENDIF = |
| 186 | FOREACH = for %%f in ( | 187 | FOREACH = for %%f in ( |
| 187 | FORVAR = %%f | 188 | FORVAR = %%f |
diff --git a/src/ChangeLog b/src/ChangeLog index ae8835478a5..71bfec1f061 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,58 @@ | |||
| 1 | 2012-03-25 Fabrice Popineau <fabrice.popineau@supelec.fr> | ||
| 2 | |||
| 3 | * w32heap.c (_heap_init, _heap_term): Remove dead MSVC-specific | ||
| 4 | code. | ||
| 5 | |||
| 6 | 2012-03-25 Kenichi Handa <handa@m17n.org> | ||
| 7 | |||
| 8 | * dispextern.h (struct glyph): Change the bit length of | ||
| 9 | glyphless.ch to 22 to make the member glyphless fit in 32 bits. | ||
| 10 | |||
| 11 | 2012-03-24 Eli Zaretskii <eliz@gnu.org> | ||
| 12 | |||
| 13 | * s/ms-w32.h (tzname): Include time.h before redirecting to | ||
| 14 | _tzname. Fixes the MSVC build. (Bug#9960) | ||
| 15 | |||
| 16 | 2012-03-24 Andreas Schwab <schwab@linux-m68k.org> | ||
| 17 | |||
| 18 | * xdisp.c (produce_glyphless_glyph): Limit length of acronym to 6 | ||
| 19 | characters. | ||
| 20 | |||
| 21 | * xterm.c (XTread_socket): Only modify handling_signal if | ||
| 22 | !SYNC_INPUT. (Bug#11080) | ||
| 23 | |||
| 24 | 2012-03-23 Eli Zaretskii <eliz@gnu.org> | ||
| 25 | |||
| 26 | * bidi.c (bidi_fetch_char): Use STRING_CHAR_AND_LENGTH instead of | ||
| 27 | FETCH_MULTIBYTE_CHAR followed by CHAR_BYTES. Prevents crashes | ||
| 28 | when fetching a multibyte character consumes more bytes than | ||
| 29 | CHAR_BYTES returns, due to unification of CJK characters in | ||
| 30 | string_char. (Bug#11073) | ||
| 31 | |||
| 32 | 2012-03-23 Troels Nielsen <bn.troels@gmail.com> (tiny change) | ||
| 33 | |||
| 34 | * process.c (wait_reading_process_output): Handle pty disconnect | ||
| 35 | by refraining from sending oneself a SIGCHLD (bug#10933). | ||
| 36 | |||
| 37 | 2012-03-22 Chong Yidong <cyd@gnu.org> | ||
| 38 | |||
| 39 | * dispextern.h (struct it): New member string_from_prefix_prop_p. | ||
| 40 | |||
| 41 | * xdisp.c (push_prefix_prop): Rename from push_display_prop. | ||
| 42 | Mark string as coming from a prefix property. | ||
| 43 | (handle_face_prop): Use default face for prefix strings (Bug#4281). | ||
| 44 | (pop_it, reseat_1): Save and restore string_from_prefix_prop_p. | ||
| 45 | |||
| 46 | 2012-03-21 Chong Yidong <cyd@gnu.org> | ||
| 47 | |||
| 48 | * xfaces.c (Vface_remapping_alist): Doc fix. | ||
| 49 | |||
| 50 | 2012-03-20 Eli Zaretskii <eliz@gnu.org> | ||
| 51 | |||
| 52 | * w32proc.c (Fw32_set_console_codepage) | ||
| 53 | (Fw32_set_console_output_codepage, Fw32_get_codepage_charset): | ||
| 54 | Doc fixes. | ||
| 55 | |||
| 1 | 2012-03-20 Chong Yidong <cyd@gnu.org> | 56 | 2012-03-20 Chong Yidong <cyd@gnu.org> |
| 2 | 57 | ||
| 3 | * dispnew.c (Fredisplay, Vredisplay_preemption_period): Update doc | 58 | * dispnew.c (Fredisplay, Vredisplay_preemption_period): Update doc |
diff --git a/src/ChangeLog.11 b/src/ChangeLog.11 index 2e5404779b1..97d5a65281a 100644 --- a/src/ChangeLog.11 +++ b/src/ChangeLog.11 | |||
| @@ -9627,7 +9627,7 @@ | |||
| 9627 | * frame.c (Vdefault_frame_scroll_bars): Put non-GTK X scroll-bars | 9627 | * frame.c (Vdefault_frame_scroll_bars): Put non-GTK X scroll-bars |
| 9628 | on left. | 9628 | on left. |
| 9629 | 9629 | ||
| 9630 | 2010-03-13 Andreas Politz <politza@fh-trier.de> (tiny change) | 9630 | 2010-03-13 Andreas Politz <politza@fh-trier.de> |
| 9631 | 9631 | ||
| 9632 | * editfns.c (Fformat): Account for string precision when computing | 9632 | * editfns.c (Fformat): Account for string precision when computing |
| 9633 | field width (Bug#5710). | 9633 | field width (Bug#5710). |
diff --git a/src/bidi.c b/src/bidi.c index 107c817abba..b3479b17b16 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -932,6 +932,7 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 932 | EMACS_INT endpos | 932 | EMACS_INT endpos |
| 933 | = (string->s || STRINGP (string->lstring)) ? string->schars : ZV; | 933 | = (string->s || STRINGP (string->lstring)) ? string->schars : ZV; |
| 934 | struct text_pos pos; | 934 | struct text_pos pos; |
| 935 | int len; | ||
| 935 | 936 | ||
| 936 | /* If we got past the last known position of display string, compute | 937 | /* If we got past the last known position of display string, compute |
| 937 | the position of the next one. That position could be at CHARPOS. */ | 938 | the position of the next one. That position could be at CHARPOS. */ |
| @@ -1003,7 +1004,6 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 1003 | normal_char: | 1004 | normal_char: |
| 1004 | if (string->s) | 1005 | if (string->s) |
| 1005 | { | 1006 | { |
| 1006 | int len; | ||
| 1007 | 1007 | ||
| 1008 | if (!string->unibyte) | 1008 | if (!string->unibyte) |
| 1009 | { | 1009 | { |
| @@ -1018,8 +1018,6 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 1018 | } | 1018 | } |
| 1019 | else if (STRINGP (string->lstring)) | 1019 | else if (STRINGP (string->lstring)) |
| 1020 | { | 1020 | { |
| 1021 | int len; | ||
| 1022 | |||
| 1023 | if (!string->unibyte) | 1021 | if (!string->unibyte) |
| 1024 | { | 1022 | { |
| 1025 | ch = STRING_CHAR_AND_LENGTH (SDATA (string->lstring) + bytepos, | 1023 | ch = STRING_CHAR_AND_LENGTH (SDATA (string->lstring) + bytepos, |
| @@ -1034,8 +1032,8 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 1034 | } | 1032 | } |
| 1035 | else | 1033 | else |
| 1036 | { | 1034 | { |
| 1037 | ch = FETCH_MULTIBYTE_CHAR (bytepos); | 1035 | ch = STRING_CHAR_AND_LENGTH (BYTE_POS_ADDR (bytepos), len); |
| 1038 | *ch_len = CHAR_BYTES (ch); | 1036 | *ch_len = len; |
| 1039 | } | 1037 | } |
| 1040 | *nchars = 1; | 1038 | *nchars = 1; |
| 1041 | } | 1039 | } |
diff --git a/src/dispextern.h b/src/dispextern.h index 7db665993d5..af5a3e836d7 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -461,7 +461,7 @@ struct glyph | |||
| 461 | /* Length of acronym or hexadecimal code string (at most 8). */ | 461 | /* Length of acronym or hexadecimal code string (at most 8). */ |
| 462 | unsigned len : 4; | 462 | unsigned len : 4; |
| 463 | /* Character to display. Actually we need only 22 bits. */ | 463 | /* Character to display. Actually we need only 22 bits. */ |
| 464 | unsigned ch : 26; | 464 | unsigned ch : 22; |
| 465 | } glyphless; | 465 | } glyphless; |
| 466 | 466 | ||
| 467 | /* Used to compare all bit-fields above in one step. */ | 467 | /* Used to compare all bit-fields above in one step. */ |
| @@ -2169,6 +2169,10 @@ struct it | |||
| 2169 | Don't handle some `display' properties in these strings. */ | 2169 | Don't handle some `display' properties in these strings. */ |
| 2170 | unsigned string_from_display_prop_p : 1; | 2170 | unsigned string_from_display_prop_p : 1; |
| 2171 | 2171 | ||
| 2172 | /* 1 means `string' comes from a `line-prefix' or `wrap-prefix' | ||
| 2173 | property. */ | ||
| 2174 | unsigned string_from_prefix_prop_p : 1; | ||
| 2175 | |||
| 2172 | /* 1 means we are iterating an object that came from a value of a | 2176 | /* 1 means we are iterating an object that came from a value of a |
| 2173 | `display' property. */ | 2177 | `display' property. */ |
| 2174 | unsigned from_disp_prop_p : 1; | 2178 | unsigned from_disp_prop_p : 1; |
| @@ -2296,6 +2300,7 @@ struct it | |||
| 2296 | bidi_dir_t paragraph_embedding; | 2300 | bidi_dir_t paragraph_embedding; |
| 2297 | unsigned multibyte_p : 1; | 2301 | unsigned multibyte_p : 1; |
| 2298 | unsigned string_from_display_prop_p : 1; | 2302 | unsigned string_from_display_prop_p : 1; |
| 2303 | unsigned string_from_prefix_prop_p : 1; | ||
| 2299 | unsigned display_ellipsis_p : 1; | 2304 | unsigned display_ellipsis_p : 1; |
| 2300 | unsigned avoid_cursor_p : 1; | 2305 | unsigned avoid_cursor_p : 1; |
| 2301 | unsigned bidi_p:1; | 2306 | unsigned bidi_p:1; |
diff --git a/src/process.c b/src/process.c index bdf16b7dbd2..f2f33a9eafc 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -4888,15 +4888,20 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd, | |||
| 4888 | It can't hurt. */ | 4888 | It can't hurt. */ |
| 4889 | else if (nread == -1 && errno == EIO) | 4889 | else if (nread == -1 && errno == EIO) |
| 4890 | { | 4890 | { |
| 4891 | /* Clear the descriptor now, so we only raise the signal once. */ | 4891 | /* Don't do anything if only a pty, with no associated |
| 4892 | FD_CLR (channel, &input_wait_mask); | 4892 | process (bug#10933). */ |
| 4893 | FD_CLR (channel, &non_keyboard_wait_mask); | 4893 | if (XPROCESS (proc)->pid != -2) { |
| 4894 | 4894 | /* Clear the descriptor now, so we only raise the signal | |
| 4895 | kill (getpid (), SIGCHLD); | 4895 | once. */ |
| 4896 | FD_CLR (channel, &input_wait_mask); | ||
| 4897 | FD_CLR (channel, &non_keyboard_wait_mask); | ||
| 4898 | |||
| 4899 | kill (getpid (), SIGCHLD); | ||
| 4900 | } | ||
| 4896 | } | 4901 | } |
| 4897 | #endif /* HAVE_PTYS */ | 4902 | #endif /* HAVE_PTYS */ |
| 4898 | /* If we can detect process termination, don't consider the process | 4903 | /* If we can detect process termination, don't consider the |
| 4899 | gone just because its pipe is closed. */ | 4904 | process gone just because its pipe is closed. */ |
| 4900 | #ifdef SIGCHLD | 4905 | #ifdef SIGCHLD |
| 4901 | else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) | 4906 | else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) |
| 4902 | ; | 4907 | ; |
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h index d533ae34ac3..5eed3a177dc 100644 --- a/src/s/ms-w32.h +++ b/src/s/ms-w32.h | |||
| @@ -286,6 +286,12 @@ typedef int pid_t; | |||
| 286 | #define stricmp _stricmp | 286 | #define stricmp _stricmp |
| 287 | #define tzset _tzset | 287 | #define tzset _tzset |
| 288 | 288 | ||
| 289 | /* Include time.h before redirecting tzname, since MSVC's time.h | ||
| 290 | defines _tzname to call a function, but also declares tzname a | ||
| 291 | 2-element array. Having the redirection before including the | ||
| 292 | header thus has the effect of declaring a function that returns an | ||
| 293 | array, and triggers an error message. */ | ||
| 294 | #include <time.h> | ||
| 289 | #define tzname _tzname | 295 | #define tzname _tzname |
| 290 | #if !defined (_MSC_VER) || (_MSC_VER < 1400) | 296 | #if !defined (_MSC_VER) || (_MSC_VER < 1400) |
| 291 | #undef utime | 297 | #undef utime |
diff --git a/src/w32heap.c b/src/w32heap.c index 35ac4cbf31f..da8579896f2 100644 --- a/src/w32heap.c +++ b/src/w32heap.c | |||
| @@ -296,27 +296,3 @@ round_heap (unsigned long align) | |||
| 296 | if (need_to_alloc) | 296 | if (need_to_alloc) |
| 297 | sbrk (need_to_alloc); | 297 | sbrk (need_to_alloc); |
| 298 | } | 298 | } |
| 299 | |||
| 300 | #if (_MSC_VER >= 1000 && _MSC_VER < 1300 && !defined (USE_CRT_DLL)) | ||
| 301 | |||
| 302 | /* MSVC 4.2 invokes these functions from mainCRTStartup to initialize | ||
| 303 | a heap via HeapCreate. They are normally defined by the runtime, | ||
| 304 | but we override them here so that the unnecessary HeapCreate call | ||
| 305 | is not performed. */ | ||
| 306 | |||
| 307 | int __cdecl | ||
| 308 | _heap_init (void) | ||
| 309 | { | ||
| 310 | /* Stepping through the assembly indicates that mainCRTStartup is | ||
| 311 | expecting a nonzero success return value. */ | ||
| 312 | return 1; | ||
| 313 | } | ||
| 314 | |||
| 315 | void __cdecl | ||
| 316 | _heap_term (void) | ||
| 317 | { | ||
| 318 | return; | ||
| 319 | } | ||
| 320 | |||
| 321 | #endif | ||
| 322 | |||
diff --git a/src/w32proc.c b/src/w32proc.c index f7982f36913..28591f90128 100644 --- a/src/w32proc.c +++ b/src/w32proc.c | |||
| @@ -2067,8 +2067,8 @@ DEFUN ("w32-get-console-codepage", Fw32_get_console_codepage, | |||
| 2067 | 2067 | ||
| 2068 | DEFUN ("w32-set-console-codepage", Fw32_set_console_codepage, | 2068 | DEFUN ("w32-set-console-codepage", Fw32_set_console_codepage, |
| 2069 | Sw32_set_console_codepage, 1, 1, 0, | 2069 | Sw32_set_console_codepage, 1, 1, 0, |
| 2070 | doc: /* Make Windows codepage CP be the current codepage setting for Emacs. | 2070 | doc: /* Make Windows codepage CP be the codepage for Emacs tty keyboard input. |
| 2071 | The codepage setting affects keyboard input and display in tty mode. | 2071 | This codepage setting affects keyboard input in tty mode. |
| 2072 | If successful, the new CP is returned, otherwise nil. */) | 2072 | If successful, the new CP is returned, otherwise nil. */) |
| 2073 | (Lisp_Object cp) | 2073 | (Lisp_Object cp) |
| 2074 | { | 2074 | { |
| @@ -2095,8 +2095,8 @@ DEFUN ("w32-get-console-output-codepage", Fw32_get_console_output_codepage, | |||
| 2095 | 2095 | ||
| 2096 | DEFUN ("w32-set-console-output-codepage", Fw32_set_console_output_codepage, | 2096 | DEFUN ("w32-set-console-output-codepage", Fw32_set_console_output_codepage, |
| 2097 | Sw32_set_console_output_codepage, 1, 1, 0, | 2097 | Sw32_set_console_output_codepage, 1, 1, 0, |
| 2098 | doc: /* Make Windows codepage CP be the current codepage setting for Emacs. | 2098 | doc: /* Make Windows codepage CP be the codepage for Emacs console output. |
| 2099 | The codepage setting affects keyboard input and display in tty mode. | 2099 | This codepage setting affects display in tty mode. |
| 2100 | If successful, the new CP is returned, otherwise nil. */) | 2100 | If successful, the new CP is returned, otherwise nil. */) |
| 2101 | (Lisp_Object cp) | 2101 | (Lisp_Object cp) |
| 2102 | { | 2102 | { |
| @@ -2114,7 +2114,7 @@ If successful, the new CP is returned, otherwise nil. */) | |||
| 2114 | 2114 | ||
| 2115 | DEFUN ("w32-get-codepage-charset", Fw32_get_codepage_charset, | 2115 | DEFUN ("w32-get-codepage-charset", Fw32_get_codepage_charset, |
| 2116 | Sw32_get_codepage_charset, 1, 1, 0, | 2116 | Sw32_get_codepage_charset, 1, 1, 0, |
| 2117 | doc: /* Return charset of codepage CP. | 2117 | doc: /* Return charset ID corresponding to codepage CP. |
| 2118 | Returns nil if the codepage is not valid. */) | 2118 | Returns nil if the codepage is not valid. */) |
| 2119 | (Lisp_Object cp) | 2119 | (Lisp_Object cp) |
| 2120 | { | 2120 | { |
diff --git a/src/xdisp.c b/src/xdisp.c index da2b78f67e3..b567893d719 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -3678,7 +3678,9 @@ handle_face_prop (struct it *it) | |||
| 3678 | with, so that overlay strings appear in the same face as | 3678 | with, so that overlay strings appear in the same face as |
| 3679 | surrounding text, unless they specify their own | 3679 | surrounding text, unless they specify their own |
| 3680 | faces. */ | 3680 | faces. */ |
| 3681 | base_face_id = underlying_face_id (it); | 3681 | base_face_id = it->string_from_prefix_prop_p |
| 3682 | ? DEFAULT_FACE_ID | ||
| 3683 | : underlying_face_id (it); | ||
| 3682 | } | 3684 | } |
| 3683 | 3685 | ||
| 3684 | new_face_id = face_at_string_position (it->w, | 3686 | new_face_id = face_at_string_position (it->w, |
| @@ -5606,6 +5608,7 @@ push_it (struct it *it, struct text_pos *position) | |||
| 5606 | p->font_height = it->font_height; | 5608 | p->font_height = it->font_height; |
| 5607 | p->voffset = it->voffset; | 5609 | p->voffset = it->voffset; |
| 5608 | p->string_from_display_prop_p = it->string_from_display_prop_p; | 5610 | p->string_from_display_prop_p = it->string_from_display_prop_p; |
| 5611 | p->string_from_prefix_prop_p = it->string_from_prefix_prop_p; | ||
| 5609 | p->display_ellipsis_p = 0; | 5612 | p->display_ellipsis_p = 0; |
| 5610 | p->line_wrap = it->line_wrap; | 5613 | p->line_wrap = it->line_wrap; |
| 5611 | p->bidi_p = it->bidi_p; | 5614 | p->bidi_p = it->bidi_p; |
| @@ -5720,6 +5723,7 @@ pop_it (struct it *it) | |||
| 5720 | it->font_height = p->font_height; | 5723 | it->font_height = p->font_height; |
| 5721 | it->voffset = p->voffset; | 5724 | it->voffset = p->voffset; |
| 5722 | it->string_from_display_prop_p = p->string_from_display_prop_p; | 5725 | it->string_from_display_prop_p = p->string_from_display_prop_p; |
| 5726 | it->string_from_prefix_prop_p = p->string_from_prefix_prop_p; | ||
| 5723 | it->line_wrap = p->line_wrap; | 5727 | it->line_wrap = p->line_wrap; |
| 5724 | it->bidi_p = p->bidi_p; | 5728 | it->bidi_p = p->bidi_p; |
| 5725 | it->paragraph_embedding = p->paragraph_embedding; | 5729 | it->paragraph_embedding = p->paragraph_embedding; |
| @@ -6150,6 +6154,8 @@ reseat_1 (struct it *it, struct text_pos pos, int set_stop_p) | |||
| 6150 | it->multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); | 6154 | it->multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); |
| 6151 | it->sp = 0; | 6155 | it->sp = 0; |
| 6152 | it->string_from_display_prop_p = 0; | 6156 | it->string_from_display_prop_p = 0; |
| 6157 | it->string_from_prefix_prop_p = 0; | ||
| 6158 | |||
| 6153 | it->from_disp_prop_p = 0; | 6159 | it->from_disp_prop_p = 0; |
| 6154 | it->face_before_selective_p = 0; | 6160 | it->face_before_selective_p = 0; |
| 6155 | if (it->bidi_p) | 6161 | if (it->bidi_p) |
| @@ -18644,7 +18650,7 @@ cursor_row_p (struct glyph_row *row) | |||
| 18644 | `line-prefix' and `wrap-prefix' properties. */ | 18650 | `line-prefix' and `wrap-prefix' properties. */ |
| 18645 | 18651 | ||
| 18646 | static int | 18652 | static int |
| 18647 | push_display_prop (struct it *it, Lisp_Object prop) | 18653 | push_prefix_prop (struct it *it, Lisp_Object prop) |
| 18648 | { | 18654 | { |
| 18649 | struct text_pos pos = | 18655 | struct text_pos pos = |
| 18650 | STRINGP (it->string) ? it->current.string_pos : it->current.pos; | 18656 | STRINGP (it->string) ? it->current.string_pos : it->current.pos; |
| @@ -18668,6 +18674,7 @@ push_display_prop (struct it *it, Lisp_Object prop) | |||
| 18668 | } | 18674 | } |
| 18669 | 18675 | ||
| 18670 | it->string = prop; | 18676 | it->string = prop; |
| 18677 | it->string_from_prefix_prop_p = 1; | ||
| 18671 | it->multibyte_p = STRING_MULTIBYTE (it->string); | 18678 | it->multibyte_p = STRING_MULTIBYTE (it->string); |
| 18672 | it->current.overlay_string_index = -1; | 18679 | it->current.overlay_string_index = -1; |
| 18673 | IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0; | 18680 | IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0; |
| @@ -18754,7 +18761,7 @@ handle_line_prefix (struct it *it) | |||
| 18754 | if (NILP (prefix)) | 18761 | if (NILP (prefix)) |
| 18755 | prefix = Vline_prefix; | 18762 | prefix = Vline_prefix; |
| 18756 | } | 18763 | } |
| 18757 | if (! NILP (prefix) && push_display_prop (it, prefix)) | 18764 | if (! NILP (prefix) && push_prefix_prop (it, prefix)) |
| 18758 | { | 18765 | { |
| 18759 | /* If the prefix is wider than the window, and we try to wrap | 18766 | /* If the prefix is wider than the window, and we try to wrap |
| 18760 | it, it would acquire its own wrap prefix, and so on till the | 18767 | it, it would acquire its own wrap prefix, and so on till the |
| @@ -24234,7 +24241,7 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym) | |||
| 24234 | sprintf (buf, "%0*X", it->c < 0x10000 ? 4 : 6, it->c); | 24241 | sprintf (buf, "%0*X", it->c < 0x10000 ? 4 : 6, it->c); |
| 24235 | str = buf; | 24242 | str = buf; |
| 24236 | } | 24243 | } |
| 24237 | for (len = 0; str[len] && ASCII_BYTE_P (str[len]); len++) | 24244 | for (len = 0; str[len] && ASCII_BYTE_P (str[len]) && len < 6; len++) |
| 24238 | code[len] = font->driver->encode_char (font, str[len]); | 24245 | code[len] = font->driver->encode_char (font, str[len]); |
| 24239 | upper_len = (len + 1) / 2; | 24246 | upper_len = (len + 1) / 2; |
| 24240 | font->driver->text_extents (font, code, upper_len, | 24247 | font->driver->text_extents (font, code, upper_len, |
diff --git a/src/xfaces.c b/src/xfaces.c index bcb04188aeb..476fb1e0366 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -6599,20 +6599,22 @@ ignore. */); | |||
| 6599 | doc: /* Alist of face remappings. | 6599 | doc: /* Alist of face remappings. |
| 6600 | Each element is of the form: | 6600 | Each element is of the form: |
| 6601 | 6601 | ||
| 6602 | (FACE REPLACEMENT...), | 6602 | (FACE . REPLACEMENT), |
| 6603 | 6603 | ||
| 6604 | which causes display of the face FACE to use REPLACEMENT... instead. | 6604 | which causes display of the face FACE to use REPLACEMENT instead. |
| 6605 | REPLACEMENT... is interpreted the same way as the value of a `face' | 6605 | REPLACEMENT is a face specification, i.e. one of the following: |
| 6606 | text property: it may be (1) A face name, (2) A list of face names, | ||
| 6607 | (3) A property-list of face attribute/value pairs, or (4) A list of | ||
| 6608 | face names or lists containing face attribute/value pairs. | ||
| 6609 | 6606 | ||
| 6610 | Multiple entries in REPLACEMENT... are merged together to form the final | 6607 | (1) a face name |
| 6611 | result, with faces or attributes earlier in the list taking precedence | 6608 | (2) a property list of attribute/value pairs, or |
| 6612 | over those that are later. | 6609 | (3) a list in which each element has the form of (1) or (2). |
| 6613 | 6610 | ||
| 6614 | Face-name remapping cycles are suppressed; recursive references use the | 6611 | List values for REPLACEMENT are merged to form the final face |
| 6615 | underlying face instead of the remapped face. So a remapping of the form: | 6612 | specification, with earlier entries taking precedence, in the same as |
| 6613 | as in the `face' text property. | ||
| 6614 | |||
| 6615 | Face-name remapping cycles are suppressed; recursive references use | ||
| 6616 | the underlying face instead of the remapped face. So a remapping of | ||
| 6617 | the form: | ||
| 6616 | 6618 | ||
| 6617 | (FACE EXTRA-FACE... FACE) | 6619 | (FACE EXTRA-FACE... FACE) |
| 6618 | 6620 | ||
| @@ -6620,13 +6622,13 @@ or: | |||
| 6620 | 6622 | ||
| 6621 | (FACE (FACE-ATTR VAL ...) FACE) | 6623 | (FACE (FACE-ATTR VAL ...) FACE) |
| 6622 | 6624 | ||
| 6623 | will cause EXTRA-FACE... or (FACE-ATTR VAL ...) to be _merged_ with the | 6625 | causes EXTRA-FACE... or (FACE-ATTR VAL ...) to be _merged_ with the |
| 6624 | existing definition of FACE. Note that for the default face, this isn't | 6626 | existing definition of FACE. Note that this isn't necessary for the |
| 6625 | necessary, as every face inherits from the default face. | 6627 | default face, since every face inherits from the default face. |
| 6626 | 6628 | ||
| 6627 | Making this variable buffer-local is a good way to allow buffer-specific | 6629 | If this variable is made buffer-local, the face remapping takes effect |
| 6628 | face definitions. For instance, the mode my-mode could define a face | 6630 | only in that buffer. For instance, the mode my-mode could define a |
| 6629 | `my-mode-default', and then in the mode setup function, do: | 6631 | face `my-mode-default', and then in the mode setup function, do: |
| 6630 | 6632 | ||
| 6631 | (set (make-local-variable 'face-remapping-alist) | 6633 | (set (make-local-variable 'face-remapping-alist) |
| 6632 | '((default my-mode-default)))). | 6634 | '((default my-mode-default)))). |
diff --git a/src/xterm.c b/src/xterm.c index 483676227ea..29d4dd453cb 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -7108,7 +7108,8 @@ x_dispatch_event (XEvent *event, Display *display) | |||
| 7108 | 7108 | ||
| 7109 | 7109 | ||
| 7110 | /* Read events coming from the X server. | 7110 | /* Read events coming from the X server. |
| 7111 | This routine is called by the SIGIO handler. | 7111 | This routine is called by the SIGIO handler only if SYNC_INPUT is |
| 7112 | not defined. | ||
| 7112 | We return as soon as there are no more events to be read. | 7113 | We return as soon as there are no more events to be read. |
| 7113 | 7114 | ||
| 7114 | We return the number of characters stored into the buffer, | 7115 | We return the number of characters stored into the buffer, |
| @@ -7142,7 +7143,9 @@ XTread_socket (struct terminal *terminal, int expected, struct input_event *hold | |||
| 7142 | /* So people can tell when we have read the available input. */ | 7143 | /* So people can tell when we have read the available input. */ |
| 7143 | input_signal_count++; | 7144 | input_signal_count++; |
| 7144 | 7145 | ||
| 7146 | #ifndef SYNC_INPUT | ||
| 7145 | ++handling_signal; | 7147 | ++handling_signal; |
| 7148 | #endif | ||
| 7146 | 7149 | ||
| 7147 | /* For debugging, this gives a way to fake an I/O error. */ | 7150 | /* For debugging, this gives a way to fake an I/O error. */ |
| 7148 | if (terminal->display_info.x == XTread_socket_fake_io_error) | 7151 | if (terminal->display_info.x == XTread_socket_fake_io_error) |
| @@ -7232,7 +7235,9 @@ XTread_socket (struct terminal *terminal, int expected, struct input_event *hold | |||
| 7232 | pending_autoraise_frame = 0; | 7235 | pending_autoraise_frame = 0; |
| 7233 | } | 7236 | } |
| 7234 | 7237 | ||
| 7238 | #ifndef SYNC_INPUT | ||
| 7235 | --handling_signal; | 7239 | --handling_signal; |
| 7240 | #endif | ||
| 7236 | UNBLOCK_INPUT; | 7241 | UNBLOCK_INPUT; |
| 7237 | 7242 | ||
| 7238 | return count; | 7243 | return count; |