Merge from trunk.

This commit is contained in:
Paul Eggert 2011-05-29 18:12:12 -07:00
commit 90856fe0b8
56 changed files with 708 additions and 485 deletions

View file

@ -1,8 +1,15 @@
2011-05-28 Paul Eggert <eggert@cs.ucla.edu>
2011-05-30 Paul Eggert <eggert@cs.ucla.edu>
Use 'inline', not 'INLINE'.
* configure.in, autogen/config.in (INLINE): Remove.
2011-05-29 Paul Eggert <eggert@cs.ucla.edu>
Adjust to recent gnulib change for @GUARD_PREFIX@.
* lib/makefile.w32-in (getopt_h): Substitute @GUARD_PREFIX@, too.
All uses of _GL_ for guard prefixes in lib/*.h replaced with
_@GUARD_PREFIX@_.
2011-05-27 Paul Eggert <eggert@cs.ucla.edu>
* doc/misc/texinfo.tex, lib/getopt.c, lib/intprops.h: Merge from gnulib.

View file

@ -1,3 +1,25 @@
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* help.texi (Accessing Documentation):
* display.texi (Pixel Specification):
* processes.texi (Serial Ports, Serial Ports):
* nonascii.texi (Character Properties, Default Coding Systems):
* text.texi (Changing Properties, Special Properties):
* windows.texi (Window Start and End):
* modes.texi (SMIE Indentation Example, SMIE Tricks):
* keymaps.texi (Searching Keymaps, Tool Bar):
* minibuf.texi (Basic Completion):
* compile.texi (Eval During Compile):
* strings.texi (Formatting Strings): Tweaks to avoid overflowing
7x9 paper in printed manual.
* lists.texi (Sets And Lists): Fix misplaced text.
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* keymaps.texi (Remapping Commands): Emphasize that the keymap
needs to be active (Bug#8350).
2011-05-28 Chong Yidong <cyd@stupidchicken.com>
* minibuf.texi (Reading File Names): Clarify (Bug#8480).

View file

@ -445,7 +445,7 @@ used to load it for compiling, but not executing. For example,
@lisp
(eval-when-compile
(require 'my-macro-package)) ;; only macros needed from this
(require 'my-macro-package))
@end lisp
The same sort of thing goes for macros and @code{defsubst} functions

View file

@ -1441,9 +1441,9 @@ specify a particular attribute for certain text. @xref{Face
Attributes}.
@item
A cons cell, either of the form @code{(foreground-color . @var{color-name})} or
@code{(background-color . @var{color-name})}. These elements specify
just the foreground color or just the background color.
A cons cell, either of the form @code{(fg-color . @var{color-name})}
or @code{(bg-color . @var{color-name})}. These elements specify just
the foreground color or just the background color.
@code{(foreground-color . @var{color-name})} has the same effect as
@code{(:foreground @var{color-name})}; likewise for the background.
@ -3821,9 +3821,10 @@ pixels per inch, millimeter, and centimeter, respectively. The
and height of the current face. An image specification @code{image}
corresponds to the width or height of the image.
The @code{left-fringe}, @code{right-fringe}, @code{left-margin},
@code{right-margin}, @code{scroll-bar}, and @code{text} elements
specify to the width of the corresponding area of the window.
The elements @code{left-fringe}, @code{right-fringe},
@code{left-margin}, @code{right-margin}, @code{scroll-bar}, and
@code{text} specify to the width of the corresponding area of the
window.
The @code{left}, @code{center}, and @code{right} positions can be
used with @code{:align-to} to specify a position relative to the left
@ -4652,16 +4653,14 @@ If @var{no-error} is non-@code{nil} and a suitable path can't be
found, don't signal an error. Instead, return a list of directories as
before, except that @code{nil} appears in place of the image directory.
Here is an example that uses a common idiom to provide compatibility
with versions of Emacs that lack the variable @code{image-load-path}:
Here is an example of using @code{image-load-path-for-library}:
@example
(defvar image-load-path) ; shush compiler
(let* ((load-path (image-load-path-for-library
"mh-e" "mh-logo.xpm"))
"mh-e" "mh-logo.xpm"))
(image-load-path (cons (car load-path)
(when (boundp 'image-load-path)
image-load-path))))
image-load-path)))
(mh-tool-bar-folder-buttons-init))
@end example
@end defun
@ -5399,8 +5398,10 @@ value) in various ways.
(aref colorcomp-data 2)))
(samp " (sample text) "))
(insert "Color\t: "
(propertize samp 'face `(foreground-color . ,cstr))
(propertize samp 'face `(background-color . ,cstr))
(propertize samp 'face
`(foreground-color . ,cstr))
(propertize samp 'face
`(background-color . ,cstr))
"\n"))))
(defun colorcomp (color)

View file

@ -14,7 +14,7 @@
@c in general, keep the following line commented out, unless doing a
@c copy of this manual that will be published. The manual should go
@c onto the distribution in the full, 8.5 x 11" size.
@c set smallbook
@c @smallbook
@ifset smallbook
@smallbook

View file

@ -138,9 +138,9 @@ unless @var{verbatim} is non-@code{nil}.
@end defun
@defun documentation function &optional verbatim
This function returns the documentation string of @var{function}.
@code{documentation} handles macros, named keyboard macros, and
special forms, as well as ordinary functions.
This function returns the documentation string of @var{function}. It
handles macros, named keyboard macros, and special forms, as well as
ordinary functions.
If @var{function} is a symbol, this function first looks for the
@code{function-documentation} property of that symbol; if that has a

View file

@ -718,17 +718,18 @@ pseudo-Lisp description of the order and conditions for searching
them:
@lisp
(or (if overriding-terminal-local-map
(@var{find-in} overriding-terminal-local-map)
(if overriding-local-map
(@var{find-in} overriding-local-map)
(or (@var{find-in} (get-char-property (point) 'keymap))
(@var{find-in-any} emulation-mode-map-alists)
(@var{find-in-any} minor-mode-overriding-map-alist)
(@var{find-in-any} minor-mode-map-alist)
(if (get-text-property (point) 'local-map)
(@var{find-in} (get-char-property (point) 'local-map))
(@var{find-in} (current-local-map))))))
(or (cond
(overriding-terminal-local-map
(@var{find-in} overriding-terminal-local-map))
(overriding-local-map
(@var{find-in} overriding-local-map))
(or (@var{find-in} (get-char-property (point) 'keymap))
(@var{find-in-any} emulation-mode-map-alists)
(@var{find-in-any} minor-mode-overriding-map-alist)
(@var{find-in-any} minor-mode-map-alist)
(if (get-text-property (point) 'local-map)
(@var{find-in} (get-char-property (point) 'local-map))
(@var{find-in} (current-local-map)))))
(@var{find-in} (current-global-map)))
@end lisp
@ -1468,33 +1469,33 @@ Dired mode is set up:
@section Remapping Commands
@cindex remapping commands
A special kind of key binding, using a special ``key sequence''
which includes a command name, has the effect of @dfn{remapping} that
command into another. Here's how it works. You make a key binding
for a key sequence that starts with the dummy event @code{remap},
followed by the command name you want to remap. Specify the remapped
definition as the definition in this binding. The remapped definition
is usually a command name, but it can be any valid definition for
a key binding.
A special kind of key binding can be used to @dfn{remap} one command
to another, without having to refer to the key sequence(s) bound to
the original command. To use this feature, make a key binding for a
key sequence that starts with the dummy event @code{remap}, followed
by the command name you want to remap; for the binding, specify the
new definition (usually a command name, but possibly any other valid
definition for a key binding).
Here's an example. Suppose that My mode uses special commands
@code{my-kill-line} and @code{my-kill-word}, which should be invoked
instead of @code{kill-line} and @code{kill-word}. It can establish
this by making these two command-remapping bindings in its keymap:
For example, suppose My mode provides a special command
@code{my-kill-line}, which should be invoked instead of
@code{kill-line}. To establish this, its mode keymap should contain
the following remapping:
@smallexample
(define-key my-mode-map [remap kill-line] 'my-kill-line)
(define-key my-mode-map [remap kill-word] 'my-kill-word)
@end smallexample
Whenever @code{my-mode-map} is an active keymap, if the user types
@kbd{C-k}, Emacs will find the standard global binding of
@code{kill-line} (assuming nobody has changed it). But
@code{my-mode-map} remaps @code{kill-line} to @code{my-kill-line},
so instead of running @code{kill-line}, Emacs runs
@code{my-kill-line}.
@noindent
Then, whenever @code{my-mode-map} is active, if the user types
@kbd{C-k} (the default global key sequence for @code{kill-line}) Emacs
will instead run @code{my-kill-line}.
Remapping only works through a single level. In other words,
Note that remapping only takes place through active keymaps; for
example, putting a remapping in a prefix keymap like @code{ctl-x-map}
typically has no effect, as such keymaps are not themselves active.
In addition, remapping only works through a single level; in the
following example,
@smallexample
(define-key my-mode-map [remap kill-line] 'my-kill-line)
@ -1502,11 +1503,10 @@ Remapping only works through a single level. In other words,
@end smallexample
@noindent
does not have the effect of remapping @code{kill-line} into
@code{my-other-kill-line}. If an ordinary key binding specifies
@code{kill-line}, this keymap will remap it to @code{my-kill-line};
if an ordinary binding specifies @code{my-kill-line}, this keymap will
remap it to @code{my-other-kill-line}.
@code{kill-line} is @emph{not} remapped to @code{my-other-kill-line}.
Instead, if an ordinary key binding specifies @code{kill-line}, it is
remapped to @code{my-kill-line}; if an ordinary binding specifies
@code{my-kill-line}, it is remapped to @code{my-other-kill-line}.
To undo the remapping of a command, remap it to @code{nil}; e.g.
@ -2636,8 +2636,8 @@ using an indirection through @code{tool-bar-map}.
By default, the global map binds @code{[tool-bar]} as follows:
@example
(global-set-key [tool-bar]
'(menu-item "tool bar" ignore
:filter (lambda (ignore) tool-bar-map)))
'(menu-item "tool bar" ignore
:filter (lambda (ignore) tool-bar-map)))
@end example
@noindent
Thus the tool bar map is derived dynamically from the value of variable

View file

@ -1355,10 +1355,10 @@ and the @code{(4)} in the @code{sample-list} are not @code{eq}:
(delq '(4) sample-list)
@result{} (a c (4))
@end group
@end example
If you want to delete elements that are @code{equal} to a given value,
use @code{delete} (see below).
@end example
@defun remq object list
This function returns a copy of @var{list}, with all elements removed

View file

@ -837,12 +837,13 @@ variable as ``risky'' with a non-@code{nil}
@code{risky-local-variable} property. @xref{File Local Variables}.
@defvar completion-ignore-case
If the value of this variable is non-@code{nil}, Emacs does not
consider case significant in completion. Note, however, that this
variable is overridden by @code{read-file-name-completion-ignore-case}
within @code{read-file-name} (@pxref{Reading File Names}), and by
@code{read-buffer-completion-ignore-case} within @code{read-buffer}
(@pxref{High-Level Completion}).
If the value of this variable is non-@code{nil}, case is not
considered significant in completion. Within @code{read-file-name},
this variable is overridden by
@code{read-file-name-completion-ignore-case} (@pxref{Reading File
Names}); within @code{read-buffer}, it is overridden by
@code{read-buffer-completion-ignore-case} (@pxref{High-Level
Completion}).
@end defvar
@defvar completion-regexp-list

View file

@ -1046,8 +1046,8 @@ Turning on text-mode runs the hook `text-mode-hook'."
@end group
@group
;; @r{These four lines are absent from the current version}
;; @r{not because this is done some other way, but rather}
;; @r{because nowadays Text mode uses the normal definition of paragraphs.}
;; @r{not because this is done some other way, but because}
;; @r{nowadays Text mode uses the normal definition of paragraphs.}
(set (make-local-variable 'paragraph-start)
(concat "[ \t]*$\\|" page-delimiter))
(set (make-local-variable 'paragraph-separate) paragraph-start)
@ -1139,12 +1139,15 @@ modes should understand the Lisp conventions for comments. The rest of
@smallexample
@group
(set (make-local-variable 'paragraph-start) (concat page-delimiter "\\|$" ))
(set (make-local-variable 'paragraph-separate) paragraph-start)
(set (make-local-variable 'paragraph-start)
(concat page-delimiter "\\|$" ))
(set (make-local-variable 'paragraph-separate)
paragraph-start)
@dots{}
@end group
@group
(set (make-local-variable 'comment-indent-function) 'lisp-comment-indent))
(set (make-local-variable 'comment-indent-function)
'lisp-comment-indent))
@dots{}
@end group
@end smallexample
@ -3619,7 +3622,9 @@ natural to have a BNF grammar that looks like this:
(inst ("IF" exp "THEN" insts "ELSE" insts "END")
("CASE" exp "OF" cases "END")
...)
(cases (cases "|" cases) (caselabel ":" insts) ("ELSE" insts))
(cases (cases "|" cases)
(caselabel ":" insts)
("ELSE" insts))
...
@end example
@ -3894,9 +3899,10 @@ and is always at the beginning of a line, we can use a more efficient
rule:
@example
((equal token "if")
(and (not (smie-rule-bolp)) (smie-rule-prev-p "else")
(and (not (smie-rule-bolp))
(smie-rule-prev-p "else")
(save-excursion
(sample-smie-backward-token) ;Jump before the "else".
(sample-smie-backward-token)
(cons 'column (current-column)))))
@end example

View file

@ -374,18 +374,18 @@ properties that Emacs knows about:
@table @code
@item name
This property corresponds to the Unicode @code{Name} property. The
value is a string consisting of upper-case Latin letters A to Z,
digits, spaces, and hyphen @samp{-} characters.
Corresponds to the @code{Name} Unicode property. The value is a
string consisting of upper-case Latin letters A to Z, digits, spaces,
and hyphen @samp{-} characters.
@cindex unicode general category
@item general-category
This property corresponds to the Unicode @code{General_Category}
property. The value is a symbol whose name is a 2-letter abbreviation
of the character's classification.
Corresponds to the @code{General_Category} Unicode property. The
value is a symbol whose name is a 2-letter abbreviation of the
character's classification.
@item canonical-combining-class
Corresponds to the Unicode @code{Canonical_Combining_Class} property.
Corresponds to the @code{Canonical_Combining_Class} Unicode property.
The value is an integer number.
@item bidi-class
@ -466,15 +466,18 @@ This function returns the value of @var{char}'s @var{propname} property.
@result{} Nd
@end group
@group
(get-char-code-property ?\u2084 'digit-value) ; subscript 4
;; subscript 4
(get-char-code-property ?\u2084 'digit-value)
@result{} 4
@end group
@group
(get-char-code-property ?\u2155 'numeric-value) ; one fifth
;; one fifth
(get-char-code-property ?\u2155 'numeric-value)
@result{} 0.2
@end group
@group
(get-char-code-property ?\u2163 'numeric-value) ; Roman IV
;; Roman IV
(get-char-code-property ?\u2163 'numeric-value)
@result{} 4
@end group
@end example
@ -1449,11 +1452,11 @@ for decoding (in case @var{operation} does decoding), and
@var{encoding-system} is the coding system for encoding (in case
@var{operation} does encoding).
The argument @var{operation} is a symbol, one of @code{write-region},
@code{start-process}, @code{call-process}, @code{call-process-region},
@code{insert-file-contents}, or @code{open-network-stream}. These are
the names of the Emacs I/O primitives that can do character code and
eol conversion.
The argument @var{operation} is a symbol; it should be one of
@code{write-region}, @code{start-process}, @code{call-process},
@code{call-process-region}, @code{insert-file-contents}, or
@code{open-network-stream}. These are the names of the Emacs I/O
primitives that can do character code and eol conversion.
The remaining arguments should be the same arguments that might be given
to the corresponding I/O primitive. Depending on the primitive, one

View file

@ -1794,9 +1794,9 @@ nice values get scheduled more favorably.)
The number of threads in the process.
@item start
The time the process was started, in the @w{@code{(@var{high}
@var{low} @var{microsec})}} format used by @code{current-time} and
@code{file-attributes}.
The time when the process was started, in the same
@w{@code{(@var{high} @var{low} @var{microsec})}} format used by
@code{current-time} and @code{file-attributes}.
@item etime
The time elapsed since the process started, in the @w{@code{(@var{high}
@ -2482,25 +2482,17 @@ Install @var{plist} as the initial plist of the process.
@itemx :parity
@itemx :stopbits
@itemx :flowcontrol
These arguments are handled by @code{serial-process-configure}, which
is called by @code{make-serial-process}.
These are handled by @code{serial-process-configure}, which is called
by @code{make-serial-process}.
@end table
The original argument list, possibly modified by later configuration,
is available via the function @code{process-contact}.
Examples:
Here is an example:
@example
(make-serial-process :port "/dev/ttyS0" :speed 9600)
(make-serial-process :port "COM1" :speed 115200 :stopbits 2)
(make-serial-process :port "\\\\.\\COM13" :speed 1200
:bytesize 7 :parity 'odd)
(make-serial-process :port "/dev/tty.BlueConsole-SPP-1"
:speed nil)
@end example
@end defun
@ -2560,19 +2552,9 @@ flow control). If @var{flowcontrol} is not given, it defaults to no
flow control.
@end table
@code{serial-process-configure} is called by @code{make-serial-process} for the
initial configuration of the serial port.
Examples:
@example
(serial-process-configure :process "/dev/ttyS0" :speed 1200)
(serial-process-configure :buffer "COM1" :stopbits 1
:parity 'odd :flowcontrol 'hw)
(serial-process-configure :port "\\\\.\\COM13" :bytesize 7)
@end example
@code{serial-process-configure} is called by
@code{make-serial-process} for the initial configuration of the serial
port.
@end defun
@node Byte Packing

View file

@ -828,12 +828,12 @@ is not truncated.
@example
@group
(format "The word `%7s' actually has %d letters in it."
(format "The word `%7s' has %d letters in it."
"foo" (length "foo"))
@result{} "The word ` foo' actually has 3 letters in it."
(format "The word `%7s' actually has %d letters in it."
@result{} "The word ` foo' has 3 letters in it."
(format "The word `%7s' has %d letters in it."
"specification" (length "specification"))
@result{} "The word `specification' actually has 13 letters in it."
@result{} "The word `specification' has 13 letters in it."
@end group
@end example

View file

@ -2806,9 +2806,9 @@ construct each part with @code{propertize} and then combine them with
@end smallexample
@end defun
See also the function @code{buffer-substring-no-properties}
(@pxref{Buffer Contents}) which copies text from the buffer
but does not copy its properties.
@xref{Buffer Contents}, for the function
@code{buffer-substring-no-properties}, which copies text from the
buffer but does not copy its properties.
@node Property Search
@subsection Text Property Search Functions
@ -2992,13 +2992,6 @@ face attribute name and @var{value} is a meaningful value for that
attribute. With this feature, you do not need to create a face each
time you want to specify a particular attribute for certain text.
@xref{Face Attributes}.
@item
A cons cell with the form @code{(foreground-color . @var{color-name})}
or @code{(background-color . @var{color-name})}. These are old,
deprecated equivalents for @code{(:foreground @var{color-name})} and
@code{(:background @var{color-name})}. Please convert code that uses
them.
@end itemize
It works to use the latter two forms directly as the value

View file

@ -249,7 +249,8 @@ file if you distribute copies. Use a notice like this one:
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; along with this program. If not, see
;; <http://www.gnu.org/licenses/>.
@end smallexample
If you have signed papers to assign the copyright to the Foundation,

View file

@ -1462,10 +1462,10 @@ to the current position of point in @var{window}; @var{window}, to the
selected window. If @var{position} is @code{t}, that means to check the
last visible position in @var{window}.
The @code{pos-visible-in-window-p} function considers only vertical
scrolling. If @var{position} is out of view only because @var{window}
has been scrolled horizontally, @code{pos-visible-in-window-p} returns
non-@code{nil} anyway. @xref{Horizontal Scrolling}.
This function considers only vertical scrolling. If @var{position} is
out of view only because @var{window} has been scrolled horizontally,
@code{pos-visible-in-window-p} returns non-@code{nil} anyway.
@xref{Horizontal Scrolling}.
If @var{position} is visible, @code{pos-visible-in-window-p} returns
@code{t} if @var{partially} is @code{nil}; if @var{partially} is

View file

@ -177,6 +177,8 @@ with Xft. To change font, use the X resource font, for example:
Emacs.pane.menubar.font: Courier-12
** On graphical displays, the mode-line no longer ends in dashes.
Also, the first dash (which does not indicate anything) is just
displayed as a space.
** On Nextstep/OSX, the menu bar can be hidden by customizing
ns-auto-hide-menu-bar.
@ -386,6 +388,8 @@ between applications.
*** Support for X cut buffers has been removed.
*** Support for X clipboard managers has been added.
** New command `rectangle-number-lines', bound to `C-x r N', numbers
the lines in the current rectangle. With an prefix argument, this
prompts for a number to count from and for a format string.
@ -747,6 +751,9 @@ consult.
* New Modes and Packages in Emacs 24.1
** Occur Edit mode applies edits made in *Occur* buffers to the
original buffers. It is bound to C-x C-q in Occur mode.
** New global minor modes electric-pair-mode, electric-indent-mode,
and electric-layout-mode.

View file

@ -16,7 +16,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef _GL_GETOPT_H
#ifndef _@GUARD_PREFIX@_GETOPT_H
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
@ -32,10 +32,10 @@
# undef _GL_SYSTEM_GETOPT
#endif
#ifndef _GL_GETOPT_H
#ifndef _@GUARD_PREFIX@_GETOPT_H
#ifndef __need_getopt
# define _GL_GETOPT_H 1
# define _@GUARD_PREFIX@_GETOPT_H 1
#endif
/* Standalone applications should #define __GETOPT_PREFIX to an
@ -249,5 +249,5 @@ extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
/* Make sure we later can get all the definitions and declarations. */
#undef __need_getopt
#endif /* getopt.h */
#endif /* getopt.h */
#endif /* _@GUARD_PREFIX@_GETOPT_H */
#endif /* _@GUARD_PREFIX@_GETOPT_H */

View file

@ -9,7 +9,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files careadlinkat crypto/md5 crypto/sha1 dtoastr filemode getloadavg getopt-gnu ignore-value intprops lstat mktime readlink socklen stdarg stdio strftime strtoumax symlink sys_stat
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files careadlinkat crypto/md5 crypto/sha1 dtoastr filemode getloadavg getopt-gnu ignore-value intprops lstat mktime readlink socklen stdarg stdio strftime strtoumax symlink sys_stat
MOSTLYCLEANFILES += core *.stackdump
@ -149,7 +149,8 @@ BUILT_SOURCES += $(GETOPT_H)
getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
@ -278,7 +279,8 @@ if GL_GENERATE_STDARG_H
stdarg.h: stdarg.in.h $(top_builddir)/config.status
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
@ -328,7 +330,8 @@ if GL_GENERATE_STDDEF_H
stddef.h: stddef.in.h $(top_builddir)/config.status
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
@ -357,7 +360,8 @@ if GL_GENERATE_STDINT_H
stdint.h: stdint.in.h $(top_builddir)/config.status
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
@ -405,7 +409,8 @@ BUILT_SOURCES += stdio.h
stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
@ -528,7 +533,8 @@ BUILT_SOURCES += stdlib.h
stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
@ -656,7 +662,8 @@ sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNU
$(AM_V_at)$(MKDIR_P) sys
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
@ -714,7 +721,8 @@ BUILT_SOURCES += time.h
time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
@ -764,7 +772,8 @@ BUILT_SOURCES += unistd.h
unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \

View file

@ -22,9 +22,8 @@
#include <limits.h>
/* Return a integer value, converted to the same type as the integer
expression E after integer type promotion. V is the unconverted value.
E should not have side effects. */
/* Return an integer value, converted to the same type as the integer
expression E after integer type promotion. V is the unconverted value. */
#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
@ -53,7 +52,7 @@
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
/* Return 1 if the integer expression E, after integer promotion, has
a signed type. E should not have side effects. */
a signed type. */
#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)

View file

@ -197,7 +197,8 @@ ARG_NONNULL_H = ../arg-nonnull.h
getopt_h:
- $(DEL) getopt_.h-t getopt_.h
sed -e "s!@HAVE_GETOPT_H@!$(HAVE_GETOPT_H)!g" \
sed -e "s!@GUARD_PREFIX@!GL!g" \
-e "s!@HAVE_GETOPT_H@!$(HAVE_GETOPT_H)!g" \
-e "s!@INCLUDE_NEXT@!$(INCLUDE_NEXT)!g" \
-e "s!@PRAGMA_SYSTEM_HEADER@!$(PRAGMA_SYSTEM_HEADER)!g" \
-e "s!@PRAGMA_COLUMNS@!$(PRAGMA_COLUMNS)!g" \

View file

@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#ifndef _GL_STDARG_H
#ifndef _@GUARD_PREFIX@_STDARG_H
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
@ -25,12 +25,12 @@
/* The include_next requires a split double-inclusion guard. */
#@INCLUDE_NEXT@ @NEXT_STDARG_H@
#ifndef _GL_STDARG_H
#define _GL_STDARG_H
#ifndef _@GUARD_PREFIX@_STDARG_H
#define _@GUARD_PREFIX@_STDARG_H
#ifndef va_copy
# define va_copy(a,b) ((a) = (b))
#endif
#endif /* _GL_STDARG_H */
#endif /* _GL_STDARG_H */
#endif /* _@GUARD_PREFIX@_STDARG_H */
#endif /* _@GUARD_PREFIX@_STDARG_H */

View file

@ -38,9 +38,9 @@
remember if special invocation has ever been used to obtain wint_t,
in which case we need to clean up NULL yet again. */
# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
# ifdef __need_wint_t
# undef _GL_STDDEF_H
# undef _@GUARD_PREFIX@_STDDEF_H
# define _GL_STDDEF_WINT_T
# endif
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
@ -49,14 +49,14 @@
#else
/* Normal invocation convention. */
# ifndef _GL_STDDEF_H
# ifndef _@GUARD_PREFIX@_STDDEF_H
/* The include_next requires a split double-inclusion guard. */
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
# ifndef _GL_STDDEF_H
# define _GL_STDDEF_H
# ifndef _@GUARD_PREFIX@_STDDEF_H
# define _@GUARD_PREFIX@_STDDEF_H
/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */
#if @REPLACE_NULL@
@ -82,6 +82,6 @@
# define wchar_t int
#endif
# endif /* _GL_STDDEF_H */
# endif /* _GL_STDDEF_H */
# endif /* _@GUARD_PREFIX@_STDDEF_H */
# endif /* _@GUARD_PREFIX@_STDDEF_H */
#endif /* __need_XXX */

View file

@ -21,7 +21,7 @@
* <http://www.opengroup.org/susv3xbd/stdint.h.html>
*/
#ifndef _GL_STDINT_H
#ifndef _@GUARD_PREFIX@_STDINT_H
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
@ -52,13 +52,13 @@
/* Other systems may have an incomplete or buggy <stdint.h>.
Include it before <inttypes.h>, since any "#include <stdint.h>"
in <inttypes.h> would reinclude us, skipping our contents because
_GL_STDINT_H is defined.
_@GUARD_PREFIX@_STDINT_H is defined.
The include_next requires a split double-inclusion guard. */
# @INCLUDE_NEXT@ @NEXT_STDINT_H@
#endif
#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
#define _GL_STDINT_H
#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
#define _@GUARD_PREFIX@_STDINT_H
/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
@ -588,5 +588,5 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
#endif /* _GL_STDINT_H */
#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
#endif /* _@GUARD_PREFIX@_STDINT_H */
#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */

View file

@ -35,7 +35,7 @@
#else
/* Normal invocation convention. */
#ifndef _GL_STDIO_H
#ifndef _@GUARD_PREFIX@_STDIO_H
#define _GL_ALREADY_INCLUDING_STDIO_H
@ -44,8 +44,8 @@
#undef _GL_ALREADY_INCLUDING_STDIO_H
#ifndef _GL_STDIO_H
#define _GL_STDIO_H
#ifndef _@GUARD_PREFIX@_STDIO_H
#define _@GUARD_PREFIX@_STDIO_H
/* Get va_list. Needed on many systems, including glibc 2.8. */
#include <stdarg.h>
@ -1345,6 +1345,6 @@ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
#endif
#endif /* _GL_STDIO_H */
#endif /* _GL_STDIO_H */
#endif /* _@GUARD_PREFIX@_STDIO_H */
#endif /* _@GUARD_PREFIX@_STDIO_H */
#endif

View file

@ -28,13 +28,13 @@
#else
/* Normal invocation convention. */
#ifndef _GL_STDLIB_H
#ifndef _@GUARD_PREFIX@_STDLIB_H
/* The include_next requires a split double-inclusion guard. */
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
#ifndef _GL_STDLIB_H
#define _GL_STDLIB_H
#ifndef _@GUARD_PREFIX@_STDLIB_H
#define _@GUARD_PREFIX@_STDLIB_H
/* NetBSD 5.0 mis-defines NULL. */
#include <stddef.h>
@ -761,6 +761,6 @@ _GL_CXXALIASWARN (wctomb);
#endif
#endif /* _GL_STDLIB_H */
#endif /* _GL_STDLIB_H */
#endif /* _@GUARD_PREFIX@_STDLIB_H */
#endif /* _@GUARD_PREFIX@_STDLIB_H */
#endif

View file

@ -34,7 +34,7 @@
#else
/* Normal invocation convention. */
#ifndef _GL_SYS_STAT_H
#ifndef _@GUARD_PREFIX@_SYS_STAT_H
/* Get nlink_t. */
#include <sys/types.h>
@ -45,8 +45,8 @@
/* The include_next requires a split double-inclusion guard. */
#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
#ifndef _GL_SYS_STAT_H
#define _GL_SYS_STAT_H
#ifndef _@GUARD_PREFIX@_SYS_STAT_H
#define _@GUARD_PREFIX@_SYS_STAT_H
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
@ -653,6 +653,6 @@ _GL_WARN_ON_USE (utimensat, "utimensat is not portable - "
#endif
#endif /* _GL_SYS_STAT_H */
#endif /* _GL_SYS_STAT_H */
#endif /* _@GUARD_PREFIX@_SYS_STAT_H */
#endif /* _@GUARD_PREFIX@_SYS_STAT_H */
#endif

View file

@ -28,13 +28,13 @@
without adding our own declarations. */
#if (defined __need_time_t || defined __need_clock_t \
|| defined __need_timespec \
|| defined _GL_TIME_H)
|| defined _@GUARD_PREFIX@_TIME_H)
# @INCLUDE_NEXT@ @NEXT_TIME_H@
#else
# define _GL_TIME_H
# define _@GUARD_PREFIX@_TIME_H
# @INCLUDE_NEXT@ @NEXT_TIME_H@

View file

@ -36,7 +36,7 @@
# define _GL_WINSOCK2_H_WITNESS
/* Normal invocation. */
#elif !defined _GL_UNISTD_H
#elif !defined _@GUARD_PREFIX@_UNISTD_H
/* The include_next requires a split double-inclusion guard. */
#if @HAVE_UNISTD_H@
@ -51,8 +51,8 @@
# undef _GL_INCLUDING_WINSOCK2_H
#endif
#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
#define _GL_UNISTD_H
#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
#define _@GUARD_PREFIX@_UNISTD_H
/* NetBSD 5.0 mis-defines NULL. Also get size_t. */
#include <stddef.h>
@ -120,7 +120,7 @@
#if @GNULIB_GETHOSTNAME@
/* Get all possible declarations of gethostname(). */
# if @UNISTD_H_HAVE_WINSOCK2_H@
# if !defined _GL_SYS_SOCKET_H
# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef socket
# define socket socket_used_without_including_sys_socket_h
@ -181,7 +181,7 @@
"shutdown() used without including <sys/socket.h>");
# endif
# endif
# if !defined _GL_SYS_SELECT_H
# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef select
# define select select_used_without_including_sys_select_h
@ -1416,5 +1416,5 @@ _GL_CXXALIASWARN (write);
#endif
#endif /* _GL_UNISTD_H */
#endif /* _GL_UNISTD_H */
#endif /* _@GUARD_PREFIX@_UNISTD_H */
#endif /* _@GUARD_PREFIX@_UNISTD_H */

View file

@ -164,10 +164,13 @@
(!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC)))
# ifdef __cplusplus
# if !GNULIB_defined_struct__gl_verify_type
template <int w>
struct _gl_verify_type {
unsigned int _gl_verify_error_if_negative: w;
};
# define GNULIB_defined_struct__gl_verify_type 1
# endif
# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
_gl_verify_type<(R) ? 1 : -1>
# elif defined _GL_HAVE__STATIC_ASSERT
@ -206,7 +209,7 @@ template <int w>
# endif
# endif
# ifdef _GL_VERIFY_H
/* @assert.h omit start@ */
/* Each of these macros verifies that its argument R is nonzero. To
be portable, R should be an integer constant expression. Unlike
@ -220,13 +223,13 @@ template <int w>
/* Verify requirement R at compile-time, as an integer constant expression.
Return 1. */
# define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
# define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
/* Verify requirement R at compile-time, as a declaration without a
trailing ';'. */
# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
# endif
/* @assert.h omit end@ */
#endif

View file

@ -1,12 +1,64 @@
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* image.el (image-animate-max-time): Allow nil and t values.
Default to nil.
(create-animated-image): Doc fix.
(image-animate-start): Remove second arg; just use
image-animate-max-time.
(image-animate-timeout): Doc fix. Args changed.
* image-mode.el (image-toggle-display-image): Ensure that the
image spec passed to the animate timer is the same object as in
the the buffer's display property (Bug#6981).
(image-transform-properties): Doc fix.
* image.el (image-animate-max-time): Default to nil.
2011-05-29 Martin Rudalics <rudalics@gmx.at>
* menu-bar.el (kill-this-buffer-enabled-p): Avoid looping over
entire buffer list (Bug#8184).
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* image.el (imagemagick-types-inhibit)
(imagemagick-register-types): Doc fix.
2011-05-29 Deniz Dogan <deniz@dogan.se>
* net/rcirc.el (rcirc): Use the user's stored encryption method by
default.
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* select.el: Don't perform clipboard-manager saving in hooks;
leave the hooks empty.
2011-05-28 Leo Liu <sdl.web@gmail.com>
* replace.el (occur-menu-map, occur-edit-mode-map): New vars.
(occur-mode-map): Bind occur-edit-mode. Use occur-menu-map.
(occur-edit-mode): New major mode (Bug#8463).
(occur-after-change-function): New function.
(occur-engine): Give Occur tags a read-only property.
2011-05-28 Kevin Ryde <user42@zip.com.au>
* subr.el (def-edebug-spec): Doc fix (Bug#8430).
2011-05-28 Chong Yidong <cyd@stupidchicken.com>
* bindings.el (help-echo): Make the initial non-indicator dash
empty on graphical terminals (Bug#7295).
* files.el (auto-mode-alist): Move config rule after the
in-stripping one (Bug#8547).
* newcomment.el (comment-end-skip): Doc fix (Bug#8659).
* startup.el (normal-splash-screen): Remove gratuitous mode-line
setting (Bug#8740).
2011-05-28 Alp Aker <aker@pitt.edu> (tiny change)
* buff-menu.el (Buffer-menu-revert-function, Buffer-menu-sort)

View file

@ -321,7 +321,9 @@ mouse-3: Remove current window from display")
(standard-mode-line-format
(list
"%e"
(propertize "-" 'help-echo help-echo)
`(:eval (if (display-graphic-p)
,(propertize " " 'help-echo help-echo)
,(propertize "-" 'help-echo help-echo)))
'mode-line-mule-info
'mode-line-client
'mode-line-modified

View file

@ -1,3 +1,12 @@
2011-05-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* shr.el (shr-urlify): Use shr-add-font to make underlines be less ugly
at the end of lines.
2011-05-29 Julien Danjou <julien@danjou.info>
* smiley.el (gnus-smiley-file-types): Add gif as supported file type.
2011-05-27 Glenn Morris <rgm@gnu.org>
* gnus-group.el (gnus-bug-group-download-format-alist):

View file

@ -601,7 +601,7 @@ START, and END. Note that START and END should be merkers."
:help-echo (if title (format "%s (%s)" url title) url)
:keymap shr-map
url)
(put-text-property start (point) 'face 'shr-link)
(shr-add-font start (point) 'shr-link)
(put-text-property start (point) 'shr-url url))
(defun shr-encode-url (url)

View file

@ -133,9 +133,11 @@ regexp to replace with IMAGE. IMAGE is the name of an image file in
(let ((types (list "pbm")))
(when (gnus-image-type-available-p 'xpm)
(push "xpm" types))
(when (gnus-image-type-available-p 'gif)
(push "gif" types))
types)
"*List of suffixes on smiley file names to try."
:version "22.1"
:version "24.1"
:type '(repeat string)
:group 'smiley)

View file

@ -484,18 +484,26 @@ was inserted."
(buffer-substring-no-properties (point-min) (point-max)))
filename))
(type (image-type file-or-data nil data-p))
(image0 (create-animated-image file-or-data type data-p))
(image (append image0
(image-transform-properties image0)))
(props
;; Don't use create-animated-image here; that would start the
;; timer, which works by altering the spec destructively.
;; But we still need to append the transformation properties,
;; which would make a new list.
(image (create-image file-or-data type data-p))
(inhibit-read-only t)
(buffer-undo-list t)
(modified (buffer-modified-p))
props)
(setq image (append image (image-transform-properties image)))
(setq props
`(display ,image
intangible ,image
rear-nonsticky (display intangible)
read-only t front-sticky (read-only)))
(inhibit-read-only t)
(buffer-undo-list t)
(modified (buffer-modified-p)))
(image-flush image)
;; Begin the animation, if any.
(image-animate-start image)
(let ((buffer-file-truename nil)) ; avoid changing dir mtime by lock_file
(add-text-properties (point-min) (point-max) props)
(restore-buffer-modified-p modified))
@ -584,10 +592,13 @@ Its value should be one of the following:
(defvar image-transform-rotation 0.0)
(defun image-transform-properties (display)
"Rescale and/or rotate the current image.
The scale factor and rotation angle are given by the variables
`image-transform-resize' and `image-transform-rotation'. This
takes effect only if Emacs is compiled with ImageMagick support."
"Return rescaling/rotation properties for the Image mode buffer.
These properties are suitable for appending to an image spec;
they are determined by the variables `image-transform-resize' and
`image-transform-rotation'.
Recaling and rotation properties only take effect if Emacs is
compiled with ImageMagick support."
(let* ((size (image-size display t))
(height
(cond

View file

@ -590,9 +590,13 @@ Example:
;;; Animated image API
(defcustom image-animate-max-time 30
"Time in seconds to animate images."
:type 'integer
(defcustom image-animate-max-time nil
"Time in seconds to animate images.
If the value is nil, play animations once.
If the value is t, loop forever."
:type '(choice (const :tag "Play once" nil)
(const :tag "Loop forever" t)
integer)
:version "24.1"
:group 'image)
@ -601,7 +605,7 @@ Example:
;;;###autoload
(defun create-animated-image (file-or-data &optional type data-p &rest props)
"Create an animated image.
"Create an animated image, and begin animating it.
FILE-OR-DATA is an image file name or image data.
Optional TYPE is a symbol describing the image type. If TYPE is omitted
or nil, try to determine the image type from its first few bytes
@ -638,22 +642,20 @@ Images should not be larger than specified by `max-image-size'."
(setq timer nil)))
timer))
(defun image-animate-start (image &optional max-time)
"Start animation of image IMAGE.
Optional second arg MAX-TIME is number of seconds to animate image,
or t to animate infinitely."
(defun image-animate-start (image)
"Start animating the image IMAGE.
The variable `image-animate-max-time' determines how long to
animate for."
(let ((anim (image-animated-p image))
timer tmo)
delay ; in seconds
timer)
(when anim
(if (setq timer (image-animate-timer image))
(setcar (nthcdr 3 (aref timer 6)) max-time)
(setq tmo (* (cdr anim) 0.01))
(setq max-time (or max-time image-animate-max-time))
(run-with-timer tmo nil #'image-animate-timeout
image 1 (car anim)
(if (numberp max-time)
(- max-time tmo)
max-time))))))
(cancel-timer timer))
(setq delay (max (* (cdr anim) 0.01) 0.025))
(run-with-timer 0.2 nil #'image-animate-timeout
image 0 (car anim)
delay 0 image-animate-max-time))))
(defun image-animate-stop (image)
"Stop animation of image."
@ -661,20 +663,31 @@ or t to animate infinitely."
(when timer
(cancel-timer timer))))
(defun image-animate-timeout (image ino count time-left)
(if (>= ino count)
(setq ino 0))
(plist-put (cdr image) :index ino)
(force-window-update)
(let ((anim (image-animated-p image)) tmo)
(when anim
(setq tmo (* (cdr anim) 0.01))
(unless (and (= ino 0) (numberp time-left) (< time-left tmo))
(run-with-timer tmo nil #'image-animate-timeout
image (1+ ino) count
(if (numberp time-left)
(- time-left tmo)
time-left))))))
(defun image-animate-timeout (image n count delay time-elapsed max)
"Display animation frame N of IMAGE.
N=0 refers to the initial animation frame.
COUNT is the total number of frames in the animation.
DELAY is the time between animation frames, in seconds.
TIME-ELAPSED is the total time that has elapsed since
`image-animate-start' was called.
MAX determines when to stop. If t, loop forever. If nil, stop
after displaying the last animation frame. Otherwise, stop
after MAX seconds have elapsed."
(let (done)
(plist-put (cdr image) :index n)
(force-window-update)
(setq n (1+ n))
(if (>= n count)
(if max
(setq n 0)
(setq done t)))
(setq time-elapsed (+ delay time-elapsed))
(if (numberp max)
(setq done (>= time-elapsed max)))
(unless done
(run-with-timer delay nil 'image-animate-timeout
image n count delay
time-elapsed max))))
(defun image-animated-p (image)
"Return non-nil if image is animated.
@ -698,31 +711,38 @@ shall be displayed."
(defcustom imagemagick-types-inhibit
'(C HTML HTM TXT PDF)
;; FIXME what are the possible options?
;; Are these actually file-name extensions?
;; Why are these upper-case when eg image-types is lower-case?
"Types the ImageMagick loader should not try to handle."
:type '(choice (const :tag "Let ImageMagick handle all the types it can" nil)
"ImageMagick types that Emacs should not use ImageMagick to handle.
This should be a list of symbols, each of which has the same
names as one of the format tags used internally by ImageMagick;
see `imagemagick-types'. Entries in this list are excluded from
being registered by `imagemagick-register-types'.
If Emacs is compiled without ImageMagick, this variable has no effect."
:type '(choice (const :tag "Let ImageMagick handle all types it can" nil)
(repeat symbol))
:version "24.1"
:group 'image)
;;;###autoload
(defun imagemagick-register-types ()
"Register the file types that ImageMagick is able to handle."
(if (fboundp 'imagemagick-types)
(let ((im-types (imagemagick-types)))
(dolist (im-inhibit imagemagick-types-inhibit)
(setq im-types (remove im-inhibit im-types)))
(dolist (im-type im-types)
(let ((extension (downcase (symbol-name im-type))))
(push
(cons (concat "\\." extension "\\'") 'image-mode)
auto-mode-alist)
(push
(cons (concat "\\." extension "\\'") 'imagemagick)
image-type-file-name-regexps))))
(error "Emacs was not built with ImageMagick support")))
"Register file types that can be handled by ImageMagick.
This adds the file types returned by `imagemagick-types'
\(excluding the ones in `imagemagick-types-inhibit') to
`auto-mode-alist' and `image-type-file-name-regexps', so that
Emacs visits them in Image mode.
If Emacs is compiled without ImageMagick support, do nothing."
(when (fboundp 'imagemagick-types)
(let ((im-types (imagemagick-types)))
(dolist (im-inhibit imagemagick-types-inhibit)
(setq im-types (delq im-inhibit im-types)))
(dolist (im-type im-types)
(let ((extension
(concat "\\." (downcase (symbol-name im-type))
"\\'")))
(push (cons extension 'image-mode) auto-mode-alist)
(push (cons extension 'imagemagick)
image-type-file-name-regexps))))))
(provide 'image)

View file

@ -1823,14 +1823,17 @@ using `abort-recursive-edit'."
(abort-recursive-edit)))
(defun kill-this-buffer-enabled-p ()
(let ((count 0)
(buffers (buffer-list)))
(while buffers
(or (string-match "^ " (buffer-name (car buffers)))
(setq count (1+ count)))
(setq buffers (cdr buffers)))
(or (not (menu-bar-non-minibuffer-window-p))
(> count 1))))
"Return non-nil if the `kill-this-buffer' menu item should be enabled."
(or (not (menu-bar-non-minibuffer-window-p))
(let (found-1)
;; Instead of looping over entire buffer list, stop once we've
;; found two "killable" buffers (Bug#8184).
(catch 'found-2
(dolist (buffer (buffer-list))
(unless (string-match-p "^ " (buffer-name buffer))
(if (not found-1)
(setq found-1 t)
(throw 'found-2 t))))))))
(put 'dired 'menu-enable '(menu-bar-non-minibuffer-window-p))

View file

@ -456,7 +456,12 @@ If ARG is non-nil, instead prompt for connection parameters."
(encryption
(intern (completing-read "Encryption (default plain): "
'("plain" "tls")
nil t nil nil "plain"))))
nil t
(let ((choice (plist-get server-plist
:encryption)))
(when choice
(symbol-name choice)))
nil "plain"))))
(rcirc-connect server port nick user-name
rcirc-default-full-name
channels password encryption))

View file

@ -118,7 +118,7 @@ at the place matched by the close of the first pair.")
;;;###autoload
(defvar comment-end-skip nil
"Regexp to match the end of a comment plus everything up to its body.")
"Regexp to match the end of a comment plus everything back to its body.")
;;;###autoload(put 'comment-end-skip 'safe-local-variable 'string-or-null-p)
;;;###autoload

View file

@ -761,22 +761,8 @@ a previously found match."
count)))
(defvar occur-mode-map
(defvar occur-menu-map
(let ((map (make-sparse-keymap)))
;; We use this alternative name, so we can use \\[occur-mode-mouse-goto].
(define-key map [mouse-2] 'occur-mode-mouse-goto)
(define-key map "\C-c\C-c" 'occur-mode-goto-occurrence)
(define-key map "\C-m" 'occur-mode-goto-occurrence)
(define-key map "o" 'occur-mode-goto-occurrence-other-window)
(define-key map "\C-o" 'occur-mode-display-occurrence)
(define-key map "\M-n" 'occur-next)
(define-key map "\M-p" 'occur-prev)
(define-key map "r" 'occur-rename-buffer)
(define-key map "c" 'clone-buffer)
(define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
(define-key map [menu-bar] (make-sparse-keymap))
(define-key map [menu-bar occur]
(cons (purecopy "Occur") map))
(define-key map [next-error-follow-minor-mode]
`(menu-item ,(purecopy "Auto Occurrence Display")
next-error-follow-minor-mode
@ -817,6 +803,24 @@ a previously found match."
`(menu-item ,(purecopy "Move to Previous Match") occur-prev
:help ,(purecopy "Move to the Nth (default 1) previous match in an Occur mode buffer")))
map)
"Menu keymap for `occur-mode'.")
(defvar occur-mode-map
(let ((map (make-sparse-keymap)))
;; We use this alternative name, so we can use \\[occur-mode-mouse-goto].
(define-key map [mouse-2] 'occur-mode-mouse-goto)
(define-key map "\C-c\C-c" 'occur-mode-goto-occurrence)
(define-key map "\C-x\C-q" 'occur-edit-mode)
(define-key map "\C-m" 'occur-mode-goto-occurrence)
(define-key map "o" 'occur-mode-goto-occurrence-other-window)
(define-key map "\C-o" 'occur-mode-display-occurrence)
(define-key map "\M-n" 'occur-next)
(define-key map "\M-p" 'occur-prev)
(define-key map "r" 'occur-rename-buffer)
(define-key map "c" 'clone-buffer)
(define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
(define-key map [menu-bar occur] (cons (purecopy "Occur") occur-menu-map))
map)
"Keymap for `occur-mode'.")
(defvar occur-revert-arguments nil
@ -853,6 +857,63 @@ Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it.
(add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
(setq next-error-function 'occur-next-error))
;;; Occur Edit mode
(defvar occur-edit-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map text-mode-map)
(define-key map [mouse-2] 'occur-mode-mouse-goto)
(define-key map "\C-c\C-c" 'occur-mode-goto-occurrence)
(define-key map "\C-x\C-q" 'occur-mode)
(define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
(define-key map [menu-bar occur] (cons (purecopy "Occur") occur-menu-map))
map)
"Keymap for `occur-edit-mode'.")
(define-derived-mode occur-edit-mode occur-mode "Occur-Edit"
"Major mode for editing *Occur* buffers.
In this mode, changes to the *Occur* buffer are also applied to
the originating buffer.
To return to ordinary Occur mode, use \\[occur-mode]."
(setq buffer-read-only nil)
(add-hook 'after-change-functions 'occur-after-change-function nil t))
(defun occur-after-change-function (beg end length)
(save-excursion
(goto-char beg)
(let* ((m (get-text-property (line-beginning-position) 'occur-target))
(buf (marker-buffer m))
(col (current-column)))
(when (= length 0)
;; Apply occur-target property to inserted (e.g. yanked) text.
(put-text-property beg end 'occur-target m)
;; Did we insert a newline? Occur Edit mode can't create new
;; Occur entries; just discard everything after the newline.
(save-excursion
(and (search-forward "\n" end t)
(delete-region (1- (point)) end))))
(let ((line (- (line-number-at-pos)
(line-number-at-pos (window-start))))
(readonly (with-current-buffer buf buffer-read-only))
(win (or (get-buffer-window buf)
(display-buffer buf t)))
(text (save-excursion
(forward-line 0)
(search-forward ":" nil t)
(setq col (- col (current-column)))
(buffer-substring-no-properties (point) (line-end-position)))))
(with-selected-window win
(goto-char m)
(recenter line)
(if readonly
(message "Buffer `%s' is read only." buf)
(delete-region (line-beginning-position) (line-end-position))
(insert text))
(move-to-column col))))))
(defun occur-revert-function (_ignore1 _ignore2)
"Handle `revert-buffer' for Occur mode buffers."
(apply 'occur-1 (append occur-revert-arguments (list (buffer-name)))))
@ -1280,6 +1341,7 @@ See also `multi-occur'."
`(font-lock-face prefix-face))
`(occur-prefix t mouse-face (highlight)
occur-target ,marker follow-link t
read-only t
help-echo "mouse-2: go to this occurrence"))))
(match-str
;; We don't put `mouse-face' on the newline,
@ -1339,13 +1401,15 @@ See also `multi-occur'."
(goto-char headerpt)
(let ((beg (point))
end)
(insert (format "%d match%s%s in buffer: %s\n"
matches (if (= matches 1) "" "es")
;; Don't display regexp for multi-buffer.
(if (> (length buffers) 1)
"" (format " for \"%s\""
(query-replace-descr regexp)))
(buffer-name buf)))
(insert (propertize
(format "%d match%s%s in buffer: %s\n"
matches (if (= matches 1) "" "es")
;; Don't display regexp for multi-buffer.
(if (> (length buffers) 1)
"" (format " for \"%s\""
(query-replace-descr regexp)))
(buffer-name buf))
'read-only t))
(setq end (point))
(add-text-properties beg end
(append

View file

@ -395,10 +395,6 @@ This function returns the string \"emacs\"."
(SAVE_TARGETS . xselect-convert-to-save-targets)
(_EMACS_INTERNAL . xselect-convert-to-identity)))
(when (fboundp 'x-clipboard-manager-save)
(add-hook 'delete-frame-functions 'x-clipboard-manager-save)
(add-hook 'kill-emacs-hook 'x-clipboard-manager-save))
(provide 'select)
;;; select.el ends here

View file

@ -1739,9 +1739,6 @@ splash screen in another window."
(erase-buffer)
(setq default-directory command-line-default-directory)
(set (make-local-variable 'tab-width) 8)
(if (not startup)
(set (make-local-variable 'mode-line-format)
(propertize "---- %b %-" 'face 'mode-line-buffer-id)))
(if pure-space-overflow
(insert pure-space-overflow-message))

View file

@ -1,3 +1,8 @@
2011-05-29 Leo Liu <sdl.web@gmail.com>
* url-cookie.el (url-cookie): Add option :named so that
url-cookie-p is defined. (Bug#8747)
2011-05-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
* url-queue.el: New file.

View file

@ -35,17 +35,13 @@
:group 'url)
;; A cookie is stored internally as a vector of 7 slots
;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
;; [ url-cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
(defstruct (url-cookie
(:constructor url-cookie-create)
(:copier nil)
;; For compatibility with a previous version which did not use
;; defstruct, and also in order to make sure that the printed
;; representation does not depend on CL internals, we use an
;; explicitly managed tag.
(:type vector))
(tag 'cookie :read-only t)
(:type vector)
:named)
name value expires localpart domain secure)
(defvar url-cookie-storage nil "Where cookies are stored.")
@ -77,8 +73,6 @@ telling Microsoft that."
;; It's completely normal for the cookies file not to exist yet.
(load (or fname url-cookie-file) t t))
(declare-function url-cookie-p "url-cookie" t t) ; defstruct
(defun url-cookie-clean-up (&optional secure)
(let ((var (if secure 'url-cookie-secure-storage 'url-cookie-storage))
new new-cookies)

View file

@ -7,23 +7,19 @@
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
#serial 2
#serial 3
# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent.
# New applications should use gl_GETLOADAVG instead.
# gl_GETLOADAVG(LIBOBJDIR)
# ------------------------
# gl_GETLOADAVG
# -------------
AC_DEFUN([gl_GETLOADAVG],
[AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
# Persuade glibc <stdlib.h> to declare getloadavg().
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
# Make sure getloadavg.c is where it belongs, at configure-time.
test -f "$srcdir/$1/getloadavg.c" ||
AC_MSG_ERROR([$srcdir/$1/getloadavg.c is missing])
gl_save_LIBS=$LIBS
# getloadvg is present in libc on glibc >= 2.2, MacOS X, FreeBSD >= 2.0,

View file

@ -96,7 +96,7 @@ gl_MD5
gl_SHA1
AC_REQUIRE([gl_C99_STRTOLD])
gl_FILEMODE
gl_GETLOADAVG([$gl_source_base])
gl_GETLOADAVG
gl_STDLIB_MODULE_INDICATOR([getloadavg])
gl_FUNC_GETOPT_GNU
gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])

View file

@ -1,4 +1,4 @@
2011-05-28 Paul Eggert <eggert@cs.ucla.edu>
2011-05-30 Paul Eggert <eggert@cs.ucla.edu>
Use 'inline', not 'INLINE'.
* alloc.c, fontset.c (INLINE): Remove.
@ -8,6 +8,32 @@
* gmalloc.c (register_heapinfo): Use inline unconditionally.
* lisp.h (LISP_MAKE_RVALUE): Use inline, not __inline__.
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* image.c: Various fixes to ImageMagick code comments.
(Fimagemagick_types): Doc fix.
2011-05-29 Paul Eggert <eggert@cs.ucla.edu>
Minor fixes prompted by GCC 4.6.0 warnings.
* xselect.c (converted_selections, conversion_fail_tag): Now static.
* emacs.c [HAVE_X_WINDOWS]: Include "xterm.h".
(x_clipboard_manager_save_all): Move extern decl to ...
* xterm.h: ... here, so that it can be checked for consistency.
2011-05-29 Chong Yidong <cyd@stupidchicken.com>
* xselect.c (x_clipboard_manager_save_frame)
(x_clipboard_manager_save_all): New functions.
(Fx_clipboard_manager_save): Lisp function deleted.
* emacs.c (Fkill_emacs): Call x_clipboard_manager_save_all.
* frame.c (delete_frame): Call x_clipboard_manager_save_frame.
* xterm.h: Update prototype.
2011-05-28 William Xu <william.xwl@gmail.com>
* nsterm.m (ns_term_shutdown): Synchronize user defaults before

View file

@ -55,8 +55,8 @@ CODING SYSTEM
character sequence of emacs-utf-8 to a byte sequence of a specific
coding system.
In Emacs Lisp, a coding system is represented by a Lisp symbol. In
C level, a coding system is represented by a vector of attributes
In Emacs Lisp, a coding system is represented by a Lisp symbol. On
the C level, a coding system is represented by a vector of attributes
stored in the hash table Vcharset_hash_table. The conversion from
coding system symbol to attributes vector is done by looking up
Vcharset_hash_table by the symbol.

View file

@ -65,6 +65,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "nsterm.h"
#endif
#ifdef HAVE_X_WINDOWS
#include "xterm.h"
#endif
#ifdef HAVE_SETLOCALE
#include <locale.h>
#endif
@ -1985,6 +1989,11 @@ all of which are called before Emacs is actually killed. */)
UNGCPRO;
#ifdef HAVE_X_WINDOWS
/* Transfer any clipboards we own to the clipboard manager. */
x_clipboard_manager_save_all ();
#endif
shut_down_emacs (0, 0, STRINGP (arg) ? arg : Qnil);
/* If we have an auto-save list file,

View file

@ -136,7 +136,7 @@ Lisp_Object Qja, Qko;
static Lisp_Object QCuser_spec;
/* Alist of font registry symbol and the corresponding charsets
/* Alist of font registry symbols and the corresponding charset
information. The information is retrieved from
Vfont_encoding_alist on demand.
@ -226,9 +226,9 @@ static int num_font_drivers;
/* Return a Lispy value of a font property value at STR and LEN bytes.
If STR is "*", it returns nil.
If FORCE_SYMBOL is zero and all characters in STR are digits, it
returns an integer. Otherwise, it returns a symbol interned from
If STR is "*", return nil.
If FORCE_SYMBOL is zero and all characters in STR are digits,
return an integer. Otherwise, return a symbol interned from
STR. */
Lisp_Object
@ -251,7 +251,7 @@ font_intern_prop (const char *str, int len, int force_symbol)
}
/* The following code is copied from the function intern (in
lread.c), and modified to suite our purpose. */
lread.c), and modified to suit our purpose. */
obarray = Vobarray;
if (!VECTORP (obarray) || ASIZE (obarray) == 0)
obarray = check_obarray (obarray);
@ -305,7 +305,7 @@ font_pixel_size (FRAME_PTR f, Lisp_Object spec)
font vector. If VAL is not valid (i.e. not registered in
font_style_table), return -1 if NOERROR is zero, and return a
proper index if NOERROR is nonzero. In that case, register VAL in
font_style_table if VAL is a symbol, and return a closest index if
font_style_table if VAL is a symbol, and return the closest index if
VAL is an integer. */
int
@ -473,7 +473,7 @@ font_registry_charsets (Lisp_Object registry, struct charset **encoding, struct
}
/* Font property value validaters. See the comment of
/* Font property value validators. See the comment of
font_property_table for the meaning of the arguments. */
static Lisp_Object font_prop_validate (int, Lisp_Object, Lisp_Object);
@ -591,7 +591,7 @@ font_prop_validate_otf (Lisp_Object prop, Lisp_Object val)
return val;
}
/* Structure of known font property keys and validater of the
/* Structure of known font property keys and validator of the
values. */
static const struct
{
@ -742,7 +742,7 @@ enum xlfd_field_mask
};
/* Parse P pointing the pixel/point size field of the form
/* Parse P pointing to the pixel/point size field of the form
`[A B C D]' which specifies a transformation matrix:
A B 0
@ -775,7 +775,7 @@ parse_matrix (const char *p)
}
/* Expand a wildcard field in FIELD (the first N fields are filled) to
multiple fields to fill in all 14 XLFD fields while restring a
multiple fields to fill in all 14 XLFD fields while restricting a
field position by its contents. */
static int
@ -2054,14 +2054,14 @@ font_rescale_ratio (Lisp_Object font_entity)
font-spec. The score value is 32 bit (`unsigned'), and the smaller
the value is, the closer the font is to the font-spec.
The lowest 2 bits of the score is used for driver type. The font
The lowest 2 bits of the score are used for driver type. The font
available by the most preferred font driver is 0.
Each 7-bit in the higher 28 bits are used for numeric properties
The 4 7-bit fields in the higher 28 bits are used for numeric properties
WEIGHT, SLANT, WIDTH, and SIZE. */
/* How many bits to shift to store the difference value of each font
property in a score. Note that flots for FONT_TYPE_INDEX and
property in a score. Note that floats for FONT_TYPE_INDEX and
FONT_REGISTRY_INDEX are not used. */
static int sort_shift_bits[FONT_SIZE_INDEX + 1];
@ -2598,7 +2598,7 @@ font_clear_cache (FRAME_PTR f, Lisp_Object cache, struct font_driver *driver)
static Lisp_Object scratch_font_spec, scratch_font_prefer;
/* Check each font-entity in VEC, and return a list of font-entities
that satisfy this condition:
that satisfy these conditions:
(1) matches with SPEC and SIZE if SPEC is not nil, and
(2) doesn't match with any regexps in Vface_ignored_fonts (if non-nil).
*/
@ -3018,8 +3018,8 @@ font_clear_prop (Lisp_Object *attrs, enum font_property_index prop)
attrs[LFACE_FONT_INDEX] = font;
}
/* Selecte a font from ENTITIES (list of font-entity vectors) that
supports C and matches best with ATTRS and PIXEL_SIZE. */
/* Select a font from ENTITIES (list of font-entity vectors) that
supports C and is the best match for ATTRS and PIXEL_SIZE. */
static Lisp_Object
font_select_entity (Lisp_Object frame, Lisp_Object entities, Lisp_Object *attrs, int pixel_size, int c)
@ -3062,8 +3062,8 @@ font_select_entity (Lisp_Object frame, Lisp_Object entities, Lisp_Object *attrs,
return font_sort_entities (entities, prefer, frame, c);
}
/* Return a font-entity satisfying SPEC and best matching with face's
font related attributes in ATTRS. C, if not negative, is a
/* Return a font-entity that satisfies SPEC and is the best match for
face's font related attributes in ATTRS. C, if not negative, is a
character that the entity must support. */
Lisp_Object
@ -3254,8 +3254,8 @@ font_open_for_lface (FRAME_PTR f, Lisp_Object entity, Lisp_Object *attrs, Lisp_O
}
/* Find a font satisfying SPEC and best matching with face's
attributes in ATTRS on FRAME, and return the opened
/* Find a font that satisfies SPEC and is the best match for
face's attributes in ATTRS on FRAME, and return the opened
font-object. */
Lisp_Object
@ -3267,8 +3267,7 @@ font_load_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec)
if (NILP (entity))
{
/* No font is listed for SPEC, but each font-backend may have
the different criteria about "font matching". So, try
it. */
different criteria about "font matching". So, try it. */
entity = font_matching_entity (f, attrs, spec);
if (NILP (entity))
return Qnil;
@ -3307,7 +3306,7 @@ font_done_for_face (FRAME_PTR f, struct face *face)
}
/* Open a font matching with font-spec SPEC on frame F. If no proper
/* Open a font that is a match for font-spec SPEC on frame F. If no proper
font is found, return Qnil. */
Lisp_Object
@ -3331,7 +3330,7 @@ font_open_by_spec (FRAME_PTR f, Lisp_Object spec)
}
/* Open a font matching with NAME on frame F. If no proper font is
/* Open a font that matches NAME on frame F. If no proper font is
found, return Qnil. */
Lisp_Object
@ -3355,7 +3354,7 @@ font_open_by_name (FRAME_PTR f, const char *name)
/* Register font-driver DRIVER. This function is used in two ways.
The first is with frame F non-NULL. In this case, make DRIVER
available (but not yet activated) on F. All frame creaters
available (but not yet activated) on F. All frame creators
(e.g. Fx_create_frame) must call this function at least once with
an available font-driver.
@ -3682,7 +3681,7 @@ font_at (int c, EMACS_INT pos, struct face *face, struct window *w,
#ifdef HAVE_WINDOW_SYSTEM
/* Check how many characters after POS (at most to *LIMIT) can be
displayed by the same font on the window W. FACE, if non-NULL, is
displayed by the same font in the window W. FACE, if non-NULL, is
the face selected for the character at POS. If STRING is not nil,
it is the string to check instead of the current buffer. In that
case, FACE must be not NULL.
@ -3826,7 +3825,7 @@ GSUB and GPOS may contain `nil' element. In such a case, the font
must not have any of the remaining elements.
For instance, if the VALUE is `(thai nil nil (mark))', the font must
be an OpenType font, and whose GPOS table of `thai' script's default
be an OpenType font whose GPOS table of `thai' script's default
language system must contain `mark' feature.
usage: (font-spec ARGS...) */)
@ -4189,7 +4188,7 @@ DEFUN ("font-xlfd-name", Ffont_xlfd_name, Sfont_xlfd_name, 1, 2, 0,
FONT is a font-spec, font-entity, or font-object.
If the name is too long for XLFD (maximum 255 chars), return nil.
If the 2nd optional arg FOLD-WILDCARDS is non-nil,
the consecutive wildcards are folded to one. */)
the consecutive wildcards are folded into one. */)
(Lisp_Object font, Lisp_Object fold_wildcards)
{
char name[256];
@ -4436,7 +4435,7 @@ the value is 0.
If GSTRING-OUT is too short to hold produced glyphs, no glyphs are
produced in GSTRING-OUT, and the value is nil.
See the documentation of `font-make-gstring' for the format of
See the documentation of `composition-get-gstring' for the format of
glyph-string. */)
(Lisp_Object otf_features, Lisp_Object gstring_in, Lisp_Object from, Lisp_Object to, Lisp_Object gstring_out, Lisp_Object index)
{
@ -4571,10 +4570,10 @@ The value is a vector:
[ NAME FILENAME PIXEL-SIZE SIZE ASCENT DESCENT SPACE-WIDTH AVERAGE-WIDTH
CAPABILITY ]
NAME is a string of the font name (or nil if the font backend doesn't
NAME is the font name, a string (or nil if the font backend doesn't
provide a name).
FILENAME is a string of the font file (or nil if the font backend
FILENAME is the font file name, a string (or nil if the font backend
doesn't provide a file name).
PIXEL-SIZE is a pixel size by which the font is opened.

View file

@ -36,22 +36,22 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
FONT-ENTITY
Pseudo vector (length FONT_ENTITY_MAX) of fully instanciated
Pseudo vector (length FONT_ENTITY_MAX) of fully instantiated
font properties that a font-driver returns upon a request of
FONT-SPEC.
Note: Only the method `list' and `match' of a font-driver can
create this object, and should never be modified by Lisp.
create this object, and it should never be modified by Lisp.
FONT-OBJECT
Pseudo vector (length FONT_OBJECT_MAX) of a opend font.
Pseudo vector (length FONT_OBJECT_MAX) of an opened font.
Lisp object encapsulating "struct font". This corresponds to
an opened font.
Note: Only the method `open' of a font-driver can create this
object, and should never be modified by Lisp. */
object, and it should never be modified by Lisp. */
extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object;
@ -68,7 +68,7 @@ struct glyph_string;
enum font_property_index
{
/* FONT-TYPE is a symbol indicating a font backend; currently `x',
`xft', `ftx' are available on X, `uniscribe' and `gdi' on
`xft', and `ftx' are available on X, `uniscribe' and `gdi' on
Windows, and `ns' under Cocoa / GNUstep. */
FONT_TYPE_INDEX,
@ -86,26 +86,26 @@ enum font_property_index
FONT_REGISTRY_INDEX,
/* FONT-WEIGHT is a numeric value of weight (e.g. medium, bold) of
the font. The lowest 8-bit is an index determining the
the font. The lowest 8 bits is an index determining the
symbolic name, and the higher bits is the actual numeric value
defined in `font-weight-table'. */
FONT_WEIGHT_INDEX,
/* FONT-SLANT is a numeric value of slant (e.g. r, i, o) of the
font. The lowest 8-bit is an index determining the symbolic
font. The lowest 8 bits is an index determining the symbolic
name, and the higher bits is the actual numeric value defined
in `font-slant-table'. */
FONT_SLANT_INDEX,
/* FONT-WIDTH is a numeric value of setwidth (e.g. normal) of the
font. The lowest 8-bit is an index determining the symbolic
font. The lowest 8 bits is an index determining the symbolic
name, and the higher bits is the actual numeric value defined
`font-width-table'. */
FONT_WIDTH_INDEX,
/* FONT-SIZE is a size of the font. If integer, it is a pixel
size. For a font-spec, the value can be float specifying a
point size. The value zero means that the font is
size. For a font-spec, the value can be a float specifying
the point size. The value zero means that the font is
scalable. */
FONT_SIZE_INDEX,
@ -129,18 +129,18 @@ enum font_property_index
/* FONT-STYLE is a 24-bit integer containing indices for
style-related properties WEIGHT, SLANT, and WIDTH. The lowest
8-bit is an indice to the weight table AREF (font_style_table,
0), the next 8-bit is an indice to the slant table AREF
(font_style_table, 1), the highest 8-bit is an indice to the
slant table AREF (font_style_table, 2). The indice 0 indicates
8 bits is an index to the weight table AREF (font_style_table,
0), the next 8 bits is an index to the slant table AREF
(font_style_table, 1), the highest 8 bits is an index to the
slant table AREF (font_style_table, 2). The index 0 indicates
that the corresponding style is not specified. This way, we
can represent at most 255 different names for each style, which
is surely sufficient. */
FONT_STYLE_INDEX,
/* FONT-METRICS is a 27-bit integer containing metrics-related
properties DPI, AVGWIDTH, SPACING. The lowest 12-bit is for
DPI, the next 12-bit is for AVGWIDTH, the highest 3-bit is for
properties DPI, AVGWIDTH, SPACING. The lowest 12 bits is for
DPI, the next 12 bits is for AVGWIDTH, the highest 3 bits is for
SPACING. In each bit field, the highest bit indicates that the
corresponding value is set or not. This way, we can represent
DPI by 11-bit (0 to 2047), AVGWIDTH by 11-bit (0 to 2047),
@ -176,7 +176,7 @@ enum font_property_index
FONT_NAME_INDEX = FONT_ENTITY_MAX,
/* Full name of the font (string). It is the name extracted from
the opend font, and may be different from the above. It may be
the opened font, and may be different from the above. It may be
nil if the opened font doesn't give a name. */
FONT_FULLNAME_INDEX,
@ -300,7 +300,7 @@ struct font
int space_width;
/* Average width of glyphs in the font. If the font itself doesn't
have that information but has glyphs of ASCII character, the
have that information but has glyphs of ASCII characters, the
value is the average with of those glyphs. Otherwise, the value
is 0. */
int average_width;
@ -321,7 +321,7 @@ struct font
int underline_position;
/* 1 if `vertical-centering-font-regexp' matches this font name.
In this case, we render characters at vartical center positions
In this case, we render characters at vertical center positions
of lines. */
int vertical_centering;
@ -335,27 +335,27 @@ struct font
unsigned char encoding_type;
/* The baseline position of a font is normally `ascent' value of the
font. However, there exists many fonts which don't set `ascent'
font. However, there exist many fonts which don't set `ascent' to
an appropriate value to be used as baseline position. This is
typical in such ASCII fonts which are designed to be used with
Chinese, Japanese, Korean characters. When we use mixture of
such fonts and normal fonts (having correct `ascent' value), a
display line gets very ugly. Since we have no way to fix it
automatically, it is users responsibility to supply well designed
automatically, it is user's responsibility to supply well designed
fonts or correct `ascent' value of fonts. But, the latter
requires heavy work (modifying all bitmap data in BDF files).
So, Emacs accepts a private font property
`_MULE_BASELINE_OFFSET'. If a font has this property, we
calculate the baseline position by subtracting the value from
`ascent'. In other words, the value indicates how many bits
higher we should draw a character of the font than normal ASCII
text for a better looking.
`ascent'. In other words, the value indicates how many pixels
higher than normal ASCII text we should draw a character of the
font for better appearance.
We also have to consider the fact that the concept of `baseline'
differs among scripts to which each character belongs. For
instance, baseline should be at the bottom most position of all
instance, baseline should be at the bottom-most position of all
glyphs for Chinese, Japanese, and Korean. But, many of existing
fonts for those characters doesn't have correct `ascent' values
fonts for those characters don't have correct `ascent' values
because they are designed to be used with ASCII fonts. To
display characters of different language on the same line, the
best way will be to arrange them in the middle of the line. So,
@ -365,20 +365,20 @@ struct font
of a line. */
int baseline_offset;
/* Non zero means a character should be composed at a position
/* Non-zero means a character should be composed at a position
relative to the height (or depth) of previous glyphs in the
following cases:
(1) The bottom of the character is higher than this value. In
this case, the character is drawn above the previous glyphs.
(2) The top of the character is lower than 0 (i.e. baseline
height). In this case, the character is drawn beneath the
height). In this case, the character is drawn below the
previous glyphs.
This value is taken from a private font property
`_MULE_RELATIVE_COMPOSE' which is introduced by Emacs. */
int relative_compose;
/* Non zero means an ascent value to be used for a character
/* Non-zero means an ascent value to be used for a character
registered in char-table `use-default-ascent'. */
int default_ascent;
@ -398,8 +398,8 @@ struct font
determine it. */
int repertory_charset;
/* There will be more to this structure, but they are private to a
font-driver. */
/* There are more members in this structure, but they are private
to the font-driver. */
};
enum font_spacing
@ -484,8 +484,8 @@ struct font_bitmap
#define POINT_TO_PIXEL(POINT, DPI) ((POINT) * (DPI) / PT_PER_INCH + 0.5)
/* Return a point size corresponding to POINT size (integer)
on resolution DPI. Note that though point size is a double, we expect
it to be rounded to an int, so we add 0.5 here. If the desired value
on resolution DPI. Note that though point size is a double, we expect
it to be rounded to an int, so we add 0.5 here. If the desired value
is tenths of points (as in xfld specs), then the pixel size should
be multiplied BEFORE the conversion to avoid magnifying the error. */
#define PIXEL_TO_POINT(PIXEL, DPI) ((PIXEL) * PT_PER_INCH / (DPI) + 0.5)
@ -582,7 +582,7 @@ struct font_driver
If FONT doesn't have such a glyph, return FONT_INVALID_CODE. */
unsigned (*encode_char) (struct font *font, int c);
/* Computate the total metrics of the NGLYPHS glyphs specified by
/* Compute the total metrics of the NGLYPHS glyphs specified by
the font FONT and the sequence of glyph codes CODE, and store the
result in METRICS. */
int (*text_extents) (struct font *font,
@ -635,7 +635,7 @@ struct font_driver
FEATURES specifies which OTF features to apply in this format:
(SCRIPT LANGSYS GSUB-FEATURE GPOS-FEATURE)
See the documentation of `font-drive-otf' for the detail.
See the documentation of `font-drive-otf' for the details.
This method applies the specified features to the codes in the
elements of GSTRING-IN (between FROMth and TOth). The output
@ -710,7 +710,7 @@ struct font_driver
struct font_driver_list
{
/* 1 iff this driver is currently used. It is igonred in the global
/* 1 iff this driver is currently used. It is ignored in the global
font driver list.*/
int on;
/* Pointer to the font driver. */

View file

@ -1347,7 +1347,14 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
= Fcons (list3 (Qrun_hook_with_args, Qdelete_frame_functions, frame),
pending_funcalls);
else
safe_call2 (Qrun_hook_with_args, Qdelete_frame_functions, frame);
{
#ifdef HAVE_X_WINDOWS
/* Also, save clipboard to the the clipboard manager. */
x_clipboard_manager_save_frame (frame);
#endif
safe_call2 (Qrun_hook_with_args, Qdelete_frame_functions, frame);
}
/* The hook may sometimes (indirectly) cause the frame to be deleted. */
if (! FRAME_LIVE_P (f))

View file

@ -7352,6 +7352,10 @@ gif_load (struct frame *f, struct image *img)
Lisp_Object Qimagemagick;
static int imagemagick_image_p (Lisp_Object);
static int imagemagick_load (struct frame *, struct image *);
static void imagemagick_clear_image (struct frame *, struct image *);
/* Indices of image specification fields in imagemagick_format. */
enum imagemagick_keyword_index
@ -7394,6 +7398,18 @@ static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] =
{":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0}
};
/* Structure describing the image type for any image handled via
ImageMagick. */
static struct image_type imagemagick_type =
{
&Qimagemagick,
imagemagick_image_p,
imagemagick_load,
imagemagick_clear_image,
NULL
};
/* Free X resources of imagemagick image IMG which is used on frame F. */
static void
@ -7425,34 +7441,27 @@ imagemagick_image_p (Lisp_Object object)
#define DrawRectangle DrawRectangleGif
#include <wand/MagickWand.h>
/* imagemagick_load_image is a helper function for imagemagick_load,
which does the actual loading given contents and size, apart from
frame and image structures, passed from imagemagick_load.
/* Helper function for imagemagick_load, which does the actual loading
given contents and size, apart from frame and image structures,
passed from imagemagick_load. Uses librimagemagick to do most of
the image processing.
Uses librimagemagick to do most of the image processing.
F is a pointer to the Emacs frame; IMG to the image structure to
prepare; CONTENTS is the string containing the IMAGEMAGICK data to
be parsed; SIZE is the number of bytes of data; and FILENAME is
either the file name or the image data.
Return non-zero if successful.
*/
Return non-zero if successful. */
static int
imagemagick_load_image (/* Pointer to emacs frame structure. */
struct frame *f,
/* Pointer to emacs image structure. */
struct image *img,
/* String containing the IMAGEMAGICK data to
be parsed. */
unsigned char *contents,
/* Size of data in bytes. */
unsigned int size,
/* Filename, either pass filename or
contents/size. */
unsigned char *filename)
imagemagick_load_image (struct frame *f, struct image *img,
unsigned char *contents, unsigned int size,
unsigned char *filename)
{
unsigned long width;
unsigned long height;
MagickBooleanType
status;
MagickBooleanType status;
XImagePtr ximg;
Lisp_Object specified_bg;
@ -7514,8 +7523,8 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
DestroyMagickWand (ping_wand);
/* Now, after pinging, we know how many images are inside the
file. If it's not a bundle, the number is one. */
/* Now we know how many images are inside the file. If it's not a
bundle, the number is one. */
if (filename != NULL)
{
@ -7628,8 +7637,8 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
}
}
/* Finaly we are done manipulating the image, figure out resulting
width, height, and then transfer ownerwship to Emacs. */
/* Finally we are done manipulating the image. Figure out the
resulting width/height and transfer ownerwship to Emacs. */
height = MagickGetImageHeight (image_wand);
width = MagickGetImageWidth (image_wand);
@ -7784,8 +7793,7 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
the prototype thus needs to be compatible with that structure. */
static int
imagemagick_load (struct frame *f,
struct image *img)
imagemagick_load (struct frame *f, struct image *img)
{
int success_p = 0;
Lisp_Object file_name;
@ -7823,36 +7831,18 @@ imagemagick_load (struct frame *f,
return success_p;
}
/* Structure describing the image type `imagemagick'. Its the same
type of structure defined for all image formats, handled by Emacs
image functions. See struct image_type in dispextern.h. */
static struct image_type imagemagick_type =
{
/* An identifier showing that this is an image structure for the
IMAGEMAGICK format. */
&Qimagemagick,
/* Handle to a function that can be used to identify a IMAGEMAGICK
file. */
imagemagick_image_p,
/* Handle to function used to load a IMAGEMAGICK file. */
imagemagick_load,
/* Handle to function to free resources for IMAGEMAGICK. */
imagemagick_clear_image,
/* An internal field to link to the next image type in a list of
image types, will be filled in when registering the format. */
NULL
};
DEFUN ("imagemagick-types", Fimagemagick_types, Simagemagick_types, 0, 0, 0,
doc: /* Return the image types supported by ImageMagick.
Note that ImageMagick recognizes many file-types that Emacs does not recognize
as images, such as .c. */)
doc: /* Return a list of image types supported by ImageMagick.
Each entry in this list is a symbol named after an ImageMagick format
tag. See the ImageMagick manual for a list of ImageMagick formats and
their descriptions (http://www.imagemagick.org/script/formats.php).
Note that ImageMagick recognizes many file-types that Emacs does not
recognize as images, such as C. See `imagemagick-types-inhibit'. */)
(void)
{
Lisp_Object typelist = Qnil;
unsigned long numf;
unsigned long numf = 0;
ExceptionInfo ex;
char **imtypes = GetMagickList ("*", &numf, &ex);
int i;

View file

@ -489,10 +489,10 @@ struct selection_data
/* Linked list of the above (in support of MULTIPLE targets). */
struct selection_data *converted_selections;
static struct selection_data *converted_selections;
/* "Data" to send a requestor for a failed MULTIPLE subtarget. */
Atom conversion_fail_tag;
static Atom conversion_fail_tag;
/* Used as an unwind-protect clause so that, if a selection-converter signals
an error, we tell the requester that we were unable to do what they wanted
@ -2107,6 +2107,7 @@ frame's display, or the first available X display. */)
return (owner ? Qt : Qnil);
}
/* Send the clipboard manager a SAVE_TARGETS request with a
UTF8_STRING property, as described by
http://www.freedesktop.org/wiki/ClipboardManager */
@ -2126,54 +2127,53 @@ x_clipboard_manager_save (struct x_display_info *dpyinfo,
Qnil, frame);
}
DEFUN ("x-clipboard-manager-save", Fx_clipboard_manager_save,
Sx_clipboard_manager_save, 0, 1, 0,
doc: /* Save the clipboard contents to the clipboard manager.
This function is intended to run from `delete-frame-functions' and
`kill-emacs-hook', to transfer clipboard data owned by Emacs to a
clipboard manager prior to deleting a frame or killing Emacs.
/* Called from delete_frame: save any clipboard owned by FRAME to the
clipboard manager. Do nothing if FRAME does not own the clipboard,
or if no clipboard manager is present. */
FRAME specifies a frame owning a clipboard; do nothing if FRAME does
not own the clipboard, or if no clipboard manager is present. If
FRAME is nil, save all clipboard contents owned by Emacs. */)
(Lisp_Object frame)
void
x_clipboard_manager_save_frame (Lisp_Object frame)
{
if (FRAMEP (frame))
struct frame *f;
if (FRAMEP (frame)
&& (f = XFRAME (frame), FRAME_X_P (f))
&& FRAME_LIVE_P (f))
{
struct frame *f = XFRAME (frame);
if (FRAME_LIVE_P (f) && FRAME_X_P (f))
{
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
Lisp_Object local_selection
= LOCAL_SELECTION (QCLIPBOARD, dpyinfo);
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
Lisp_Object local_selection
= LOCAL_SELECTION (QCLIPBOARD, dpyinfo);
if (!NILP (local_selection)
&& EQ (frame, XCAR (XCDR (XCDR (XCDR (local_selection)))))
&& XGetSelectionOwner (dpyinfo->display,
dpyinfo->Xatom_CLIPBOARD_MANAGER))
x_clipboard_manager_save (dpyinfo, frame);
}
if (!NILP (local_selection)
&& EQ (frame, XCAR (XCDR (XCDR (XCDR (local_selection)))))
&& XGetSelectionOwner (dpyinfo->display,
dpyinfo->Xatom_CLIPBOARD_MANAGER))
x_clipboard_manager_save (dpyinfo, frame);
}
else if (NILP (frame))
}
/* Called from Fkill_emacs: save any clipboard owned by FRAME to the
clipboard manager. Do nothing if FRAME does not own the clipboard,
or if no clipboard manager is present. */
void
x_clipboard_manager_save_all (void)
{
/* Loop through all X displays, saving owned clipboards. */
struct x_display_info *dpyinfo;
Lisp_Object local_selection, local_frame;
for (dpyinfo = x_display_list; dpyinfo; dpyinfo = dpyinfo->next)
{
/* Loop through all X displays, saving owned clipboards. */
struct x_display_info *dpyinfo;
Lisp_Object local_selection, local_frame;
for (dpyinfo = x_display_list; dpyinfo; dpyinfo = dpyinfo->next)
{
local_selection = LOCAL_SELECTION (QCLIPBOARD, dpyinfo);
if (NILP (local_selection)
|| !XGetSelectionOwner (dpyinfo->display,
dpyinfo->Xatom_CLIPBOARD_MANAGER))
continue;
local_selection = LOCAL_SELECTION (QCLIPBOARD, dpyinfo);
if (NILP (local_selection)
|| !XGetSelectionOwner (dpyinfo->display,
dpyinfo->Xatom_CLIPBOARD_MANAGER))
continue;
local_frame = XCAR (XCDR (XCDR (XCDR (local_selection))));
if (FRAME_LIVE_P (XFRAME (local_frame)))
x_clipboard_manager_save (dpyinfo, local_frame);
}
local_frame = XCAR (XCDR (XCDR (XCDR (local_selection))));
if (FRAME_LIVE_P (XFRAME (local_frame)))
x_clipboard_manager_save (dpyinfo, local_frame);
}
return Qnil;
}
@ -2586,7 +2586,6 @@ syms_of_xselect (void)
defsubr (&Sx_disown_selection_internal);
defsubr (&Sx_selection_owner_p);
defsubr (&Sx_selection_exists_p);
defsubr (&Sx_clipboard_manager_save);
defsubr (&Sx_get_atom_name);
defsubr (&Sx_send_client_message);

View file

@ -1024,6 +1024,8 @@ extern Lisp_Object x_property_data_to_lisp (struct frame *,
Atom,
int,
unsigned long);
extern void x_clipboard_manager_save_frame (Lisp_Object);
extern void x_clipboard_manager_save_all (void);
/* Defined in xfns.c */