Merge from emacs-24; up to 2014-06-01T23:37:59Z!eggert@cs.ucla.edu

This commit is contained in:
Glenn Morris 2014-06-07 17:35:27 -07:00
commit 36cf8493af
33 changed files with 433 additions and 146 deletions

View file

@ -1,3 +1,12 @@
2014-06-08 Paul Eggert <eggert@cs.ucla.edu>
Port better to AIX (Bug#17598).
* configure.ac (with_xpm_set): New shell var.
(_THREAD_SAFE): Define on AIX if HAVE_PTHREAD.
(with_xpm): Default to 'no' on AIX.
(LIBXPM): Append -lXpm if -lXaw is also used, as the latter
requires the former on AIX.
2014-06-05 Paul Eggert <eggert@cs.ucla.edu>
Try harder to find GNU Make when configuring.

View file

@ -11,6 +11,10 @@ Check for node names using problematic characters:
find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} +
Sadly makeinfo does not warn about such characters.
Check for major new features added since the last release (e.g. new
lisp files), and add the relevant authors to the Acknowledgments in
doc/emacs/ack.texi and emacs.texi.
Check cross-references between the manuals (eg from emacs to elisp)
are correct. You can use something like the following in the info
directory in the Emacs build tree:

View file

@ -287,6 +287,7 @@ fi
dnl _ON results in a '--without' option in the --help output, so
dnl the help text should refer to "don't compile", etc.
with_xpm_set=${with_xpm+set}
OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
@ -2089,7 +2090,14 @@ if test "$ac_cv_header_pthread_h"; then
OLD_LIBS=$LIBS
AC_SEARCH_LIBS([$emacs_pthread_function], [pthread],
[AC_DEFINE([HAVE_PTHREAD], [1],
[Define to 1 if you have pthread (-lpthread).])])
[Define to 1 if you have pthread (-lpthread).])
# Some systems optimize for single-threaded programs by default, and
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
if test "$opsys" = aix4-2; then
AC_DEFINE([_THREAD_SAFE], [1],
[Define to 1 if your system requires this in multithreaded code.])
fi])
if test "X$LIBS" != "X$OLD_LIBS"; then
eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
fi
@ -2989,6 +2997,9 @@ no_return_alloc_pixels
fi
if test "${HAVE_X11}" = "yes"; then
dnl Avoid Xpm on AIX unless requested, as it crashes; see Bug#17598.
test "$opsys$with_xpm_set" = aix4-2 && with_xpm=no
if test "${with_xpm}" != "no"; then
AC_CHECK_HEADER(X11/xpm.h,
[AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
@ -3012,6 +3023,9 @@ no_return_alloc_pixels
if test "${HAVE_XPM}" = "yes"; then
AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
LIBXPM=-lXpm
elif test "$opsys,$LUCID_LIBW" = aix4-2,-lXaw; then
dnl AIX -lXaw needs -lXpm linked too; see Bug#17598 Message#152.
LIBXPM=-lXpm
fi
fi

View file

@ -1,3 +1,16 @@
2014-06-08 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments):
* emacs.texi (Acknowledgments): Updates.
* programs.texi (Prettifying Symbols): Remove node.
(Misc for Programs): Mention more briefly here.
* emacs.texi (Top): Update menu.
* package.texi (Package Menu, Package Installation):
Mention signed packages.
(Package Installation): Mention package-pinned-packages.
2014-06-02 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): Remove some obsolete items.

View file

@ -15,7 +15,7 @@ We thank them for their generosity as well.
This list is intended to mention every contributor of a major package or
feature we currently distribute; if you know of someone we have omitted,
please report that as a manual bug. More comprehensive information is
please make a bug report. More comprehensive information is
available in the @file{ChangeLog} files, summarized in the file
@file{etc/AUTHORS} in the distribution.
@ -51,12 +51,12 @@ files.
@item
Michael Albinus wrote @file{dbus.el}, a package that implements the
D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing
Avahi services;
and @file{secrets.el}, an interface to keyring daemons for
storing confidential data. He and Kai Großjohann wrote the Tramp package, which
provides transparent remote file editing using rcp, ssh, ftp, and
other network protocols. He and Daniel Pittman wrote
@file{tramp-cache.el}.
Avahi services; @file{secrets.el}, an interface to keyring daemons for
storing confidential data; and @file{filenotify.el} and the associated
low-level interface routines, for watching file status changes.
He and Kai Großjohann wrote the Tramp package, which provides
transparent remote file editing using ssh, ftp, and other network
protocols. He and Daniel Pittman wrote @file{tramp-cache.el}.
@item
Ralf Angeli wrote @file{scroll-lock.el}, a minor mode which keeps the
@ -88,7 +88,8 @@ moving the mouse in particular patterns.
@item
Juanma Barranquero wrote @file{emacs-lock.el} (based on the original
version by Tom Wurgler), which makes it harder to exit with valuable
buffers unsaved. He also made many other contributions to other
buffers unsaved; and @file{frameset.el}, for saving and restoring the
frame/window setup. He also made many other contributions to other
areas, including MS Windows support.
@item
@ -203,7 +204,9 @@ for Korean Hanja.
@item
Andrew Choi and Yamamoto Mitsuharu wrote the Carbon support, used
prior to Emacs 23 for Mac OS.
prior to Emacs 23 for Mac OS. Yamamoto Mitsuharu continued to
contribute to Mac OS support in the newer Nextstep port; and also
improved support for multi-monitor displays.
@item
Chong Yidong was the Emacs co-maintainer from Emacs 23 to 24.3. He made many
@ -349,6 +352,10 @@ location in files between editing sessions.
Gary Foster wrote @file{scroll-all.el}, a mode for scrolling several buffers
together.
@item
Romain Francoise contributed ACL (Access Control List) support,
for preserving extended file attributes on backup and copy.
@item
Noah Friedman wrote @file{rlogin.el}, an interface to Rlogin,
@file{type-break.el}, which reminds you to take periodic breaks from
@ -510,13 +517,14 @@ Emacs, including: @file{dns.el} for Domain Name Service lookups;
@file{time-date.el} for general date and time handling.
He also wrote @file{network-stream.el}, for opening network processes;
@file{url-queue.el}, for controlling parallel downloads of URLs;
and implemented libxml2 support.
and implemented libxml2 support. He also wrote @file{eww.el},
an Emacs Lisp web browser; and implemented native zlib decompression.
Components of Gnus have also been written by: Nagy Andras, David
Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai
Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha
Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi
Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the
Thomas Steffen, Reiner Steib, Jan Tatarik, Didier Verna, Ilja Weis,
Katsumi Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the
Gnus Manual}).
@item
@ -695,6 +703,10 @@ searches; the code in @file{files-x.el} for handling file- and
directory-local variables; and the @code{info-finder} feature that
creates a virtual Info manual of package keywords.
@item
Leo Liu wrote @file{pcmpl-x.el}, providing completion for
miscellaneous external tools; and revamped support for Octave in Emacs 24.4.
@item
Károly Lőrentey wrote the ``multi-terminal'' code, which allows
Emacs to run on graphical and text terminals simultaneously.
@ -840,8 +852,8 @@ client for the ``Music Player Daemon''; @file{smie.el}, a generic
indentation engine; and @file{pcase.el}, implementing ML-style pattern
matching. In Emacs 24, he integrated the lexical binding code,
cleaned up the CL namespace (making it acceptable to use CL
functions at runtime), and added generalized variables to core Emacs
Lisp.
functions at runtime), added generalized variables to core Emacs
Lisp, and implemented a new lightweight advice mechanism.
@item
Morioka Tomohiko wrote several packages for MIME support in Gnus and
@ -1042,7 +1054,8 @@ Guillermo J. Rozas wrote @file{scheme.el}, a mode for editing Scheme and
DSSSL code.
@item
Martin Rudalics implemented improved display-buffer handling in Emacs 24.
Martin Rudalics implemented improved display-buffer handling in Emacs 24;
and implemented ``pixel-wise'' resizing of windows and frames.
@item
Ivar Rummelhoff wrote @file{winner.el}, which records recent window
@ -1390,7 +1403,8 @@ zone out in front of Emacs.
Eli Zaretskii made many standard Emacs features work on MS-DOS and
Microsoft Windows. He also wrote @file{tty-colors.el}, which
implements transparent mapping of X colors to tty colors; and
@file{rxvt.el}. He implemented support for bidirectional text.
@file{rxvt.el}. He implemented support for bidirectional text,
and also menus on text-mode terminals.
@item
Jamie Zawinski wrote much of the support for faces and X selections.

View file

@ -669,7 +669,6 @@ Editing Programs
* Symbol Completion:: Completion on symbol names of your program or language.
* MixedCase Words:: Dealing with identifiersLikeThis.
* Semantic:: Suite of editing tools based on source code parsing.
* Prettifying Symbols:: Display symbols as composed characters.
* Misc for Programs:: Other Emacs features useful for editing programs.
* C Modes:: Special commands of C, C++, Objective-C,
Java, IDL, Pike and AWK modes.
@ -1366,12 +1365,14 @@ USA
@node Acknowledgments
@unnumberedsec Acknowledgments
@c It's hard to update this fairly.
@c I wonder if it would be better to drop it in favor of AUTHORS?
Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas
Abrahamsson, Jay K. Adams, Alon Albert, Michael Albinus, Nagy
Andras, Benjamin Andresen, Ralf Angeli, Dmitry Antipov, Joe Arceneaux, Emil Åström,
Miles Bader, David Bakhash, Juanma Barranquero, Eli Barzilay, Thomas
Baumann, Steven L. Baur, Jay Belanger, Alexander L. Belikoff,
Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Karl
Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Stephen Berman, Karl
Berry, Anna M. Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan
Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner,
Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin
@ -1391,13 +1392,13 @@ Eglen, Christian Egli, Torbjörn Einarsson, Tsugutomo Enami, David
Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Karl Fogel, Gary
Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
Fuchs, Shigeru Fukaya, Hallvard Furuseth, Keith Gabryelski, Peter S.
Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S.
Galbraith, Kevin Gallagher, Fabián E. Gallina, Kevin Gallo, Juan León Lahoz García,
Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David
Gillespie, Bob Glickstein, Deepak Goel, David De La Harpe Golden, Boris
Goldowsky, David Goodger, Chris Gray, Kevin Greiner, Michelangelo Grigni, Odd
Gripenstam, Kai Großjohann, Michael Gschwind, Bastien Guerry, Henry
Guillaume, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris
Guillaume, Dmitry Gutov, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris
Hanson, Jesper Harder, Alexandru Harsanyi, K. Shane Hartman, John
Heidemann, Jon K. Hellan, Magnus Henoch, Markus Heritsch, Dirk
Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst,
@ -1415,14 +1416,14 @@ Ryszard Kubiak, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl
Landstrom, Mario Lang, Aaron Larson, James R. Larus, Vinicius Jose
Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian
Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link,
Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C. Lopes,
Juri Linkov, Francis Litterio, Sergey Litvinov, Leo Liu, Emilio C. Lopes,
Martin Lorentzon, Dave Love, Eric Ludlam, Károly Lőrentey, Sascha
Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie,
Christopher J. Madsen, Neil M. Mager, Ken Manheimer, Bill Mann,
Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin,
Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, David
Megginson, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Stefan
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Dani Moncayo, Stefan
Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
@ -1453,7 +1454,7 @@ South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.
Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
Takahashi, Steven Tamm, Luc Teirlinck, Jean-Philippe Theberge, Jens
Takahashi, Steven Tamm, Jan Tatarik, Luc Teirlinck, Jean-Philippe Theberge, Jens
T. Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi,
David O'Toole, Markus Triska, Tom Tromey, Enami Tsugutomo, Eli
Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil

View file

@ -59,8 +59,9 @@ The package's version number (e.g., @samp{11.86}).
@item
The package's status---normally one of @samp{available} (can be
downloaded from the package archive), @samp{installed}, or
@samp{built-in} (included in Emacs by default).
downloaded from the package archive), @samp{installed},
@samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
or @samp{built-in} (included in Emacs by default).
The status can also be @samp{new}. This is equivalent to
@samp{available}, except that it means the package became newly
@ -167,6 +168,48 @@ directory name of the package archive. You can alter this list if you
wish to use third party package archives---but do so at your own risk,
and use only third parties that you think you can trust!
@anchor{Package Signing}
@cindex package security
@cindex package signing
The maintainers of package archives can increase the trust that you
can have in their packages by @dfn{signing} them. They generate a
private/public pair of cryptographic keys, and use the private key to
create a @dfn{signature file} for each package. With the public key, you
can use the signature files to verify who created the package, and
that it has not been modified. A valid signature is not a cast-iron
guarantee that a package is not malicious, so you should still
exercise caution. Package archives should provide instructions
on how you can obtain their public key. One way is to download the
key from a server such as @url{http://pgp.mit.edu/}.
Use @kbd{M-x package-import-keyring} to import the key into Emacs.
Emacs stores package keys in the @file{gnupg} subdirectory
of @code{package-user-dir}.
@c Uncomment this if it becomes true.
@ignore
The public key for the GNU package archive is distributed with Emacs,
in the @file{etc/package-keyring.gpg}. Emacs uses it automatically.
@end ignore
@vindex package-check-signature
@vindex package-unsigned-archives
If the user option @code{package-check-signature} is non-@code{nil},
Emacs attempts to verify signatures when you install packages. If the
option has the value @code{allow-unsigned}, you can still install a
package that is not signed. If you use some archives that do not sign
their packages, you can add them to the list @code{package-unsigned-archives}.
For more information on cryptographic keys and signing,
@pxref{Top,, Top, gnupg, The GNU Privacy Guard Manual}.
Emacs comes with an interface to GNU Privacy Guard,
@pxref{Top,, EasyPG, epa, Emacs EasyPG Assistant Manual}.
@vindex package-pinned-packages
If you have more than one package archive enabled, and some of them
offer different versions of the same package, you may find the option
@code{package-pinned-packages} useful. You can add package/archive
pairs to this list, to ensure that the specified package is only ever
downloaded from the specified archive.
Once a package is downloaded and installed, it is @dfn{loaded} into
the current Emacs session. Loading a package is not quite the same as
loading a Lisp library (@pxref{Lisp Libraries}); its effect varies

View file

@ -38,7 +38,6 @@ Highlight program syntax (@pxref{Font Lock}).
* Symbol Completion:: Completion on symbol names of your program or language.
* MixedCase Words:: Dealing with identifiersLikeThis.
* Semantic:: Suite of editing tools based on source code parsing.
* Prettifying Symbols:: Display symbols as composed characters.
* Misc for Programs:: Other Emacs features useful for editing programs.
* C Modes:: Special commands of C, C++, Objective-C, Java,
IDL, Pike and AWK modes.
@ -1434,37 +1433,6 @@ is idle.
@xref{Top, Semantic,, semantic, Semantic}, for details.
@end ifnottex
@node Prettifying Symbols
@section Prettifying Symbols
@cindex prettifying symbols
@cindex symbol, prettifying
@code{prettify-symbols-mode} and @code{global-prettify-symbols-mode}
are two minor modes (@pxref{Minor Modes}) that can display specified
symbols as composed characters. For instance, in Emacs Lisp mode
(@pxref{Lisp Eval}), this mode will replace the string ``lambda'' with
the Greek lambda character.
@findex prettify-symbols-mode
@vindex prettify-symbols-alist
When Prettify Symbols mode and Font Lock mode (@pxref{Font Lock}) are
enabled, symbols are prettified (displayed as composed characters)
according to the rules in @code{prettify-symbols-alist}, which are
locally defined by major modes (@pxref{Major Modes}) supporting
prettifying. To add further customizations for a given major mode,
you can modify @code{prettify-symbols-alist}. For example:
@example
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(push '("<=" . ?≤) prettify-symbols-alist)))
@end example
@findex global-prettify-symbols-mode
You can enable this mode locally in desired buffers, or use
@code{global-prettify-symbols-mode} to enable it for all modes that
support it.
@node Misc for Programs
@section Other Features Useful for Editing Programs
@ -1512,6 +1480,17 @@ with the Foldout package (@pxref{Foldout}).
@xref{Top,,Autotyping, autotype, Autotyping}.
@end ifinfo
@findex prettify-symbols-mode
Prettify Symbols mode is a buffer-local minor mode that replaces
certain strings with more ``attractive'' versions for display
purposes. For example, in Emacs Lisp mode, it replaces the string
``lambda'' with the Greek lambda character. You may wish to use this
in non-programming modes as well. You can customize the mode by
adding more entries to @code{prettify-symbols-alist}. There is also a
global version, @code{global-prettify-symbols-mode}, which enables the
mode in all buffers that support it.
@node C Modes
@section C and Related Modes
@cindex C mode

View file

@ -1,3 +1,15 @@
2014-06-08 Glenn Morris <rgm@gnu.org>
* display.texi (Window Systems): Remove window-setup-hook.
* os.texi (Startup Summary, Init File):
Improve description of window-setup-hook.
(Terminal-Specific): Update window-setup-hook cross-reference.
* hooks.texi (Standard Hooks): Update window-setup-hook cross-reference.
* display.texi (Overlay Properties): Update re priority. (Bug#17234)
* package.texi (Package Archives): Mention signing packages.
2014-06-07 Eli Zaretskii <eliz@gnu.org>
* commands.texi (Click Events): Update contents of click event's

View file

@ -1515,9 +1515,9 @@ of them:
@table @code
@item priority
@kindex priority @r{(overlay property)}
This property's value determines the priority of the overlay. No priority, or
@code{nil}, means zero. A non-nil and non-integer value has
undefined behavior.
This property's value determines the priority of the overlay.
If you want to specify a priority value, use either @code{nil}
(or zero), or a positive integer. Any other value has undefined behavior.
The priority matters when two or more overlays cover the same
character and both specify the same property; the one whose
@ -1527,9 +1527,13 @@ completely override the other value; instead, its face attributes
override the face attributes of the lower priority @code{face}
property.
Currently, all overlays take priority over text properties. Please
avoid using negative priority values, as we have not yet decided just
what they should mean.
Currently, all overlays take priority over text properties.
Note that Emacs sometimes uses non-numeric priority values for some of
its internal overlays, so do not try to do arithmetic on the
priority of an overlay (unless it is one that you created). If you
need to put overlays in priority order, use the @var{sorted} argument
of @code{overlays-at}. @xref{Finding Overlays}.
@item window
@kindex window @r{(overlay property)}
@ -6515,18 +6519,6 @@ indicator of Emacs capabilities on a given display type. Instead, use
@code{display-graphic-p} or any of the other @code{display-*-p}
predicates described in @ref{Display Feature Testing}.
@defvar window-setup-hook
This variable is a normal hook which Emacs runs after handling the
initialization files. Emacs runs this hook after it has completed
loading your init file, the default initialization file (if
any), and the terminal-specific Lisp code, and running the hook
@code{emacs-startup-hook}.
This hook is used for internal purposes: setting up communication with
the window system, and creating the initial window. Users should not
interfere with it.
@end defvar
@node Bidirectional Display
@section Bidirectional Display
@cindex bidirectional display

View file

@ -55,6 +55,7 @@ not exactly a hook, but does a similar job.
@item after-init-hook
@itemx before-init-hook
@itemx emacs-startup-hook
@itemx window-setup-hook
@xref{Init File}.
@item after-insert-file-functions
@ -220,9 +221,6 @@ Hook run when about to switch windows with a mouse command.
@itemx window-size-change-functions
@xref{Window Hooks}.
@item window-setup-hook
@xref{Window Systems}.
@item window-text-change-functions
@vindex window-text-change-functions
Functions to call in redisplay when text in the window might change.

View file

@ -218,7 +218,9 @@ parameters of the selected frame according to whatever the init files
specify.
@item
It runs @code{window-setup-hook}. @xref{Window Systems}.
It runs @code{window-setup-hook}. The only difference between this
hook and @code{emacs-startup-hook} is that this one runs after the
previously mentioned modifications to the frame parameters.
@item
@cindex startup screen
@ -411,6 +413,12 @@ This normal hook is run, once, just after handling the command line
arguments. In batch mode, Emacs does not run this hook.
@end defvar
@defvar window-setup-hook
This normal hook is very similar to @code{emacs-startup-hook}.
The only difference is that it runs slightly later, after setting
of the frame parameters. @xref{Startup Summary, window-setup-hook}.
@end defvar
@defvar user-init-file
This variable holds the absolute file name of the user's init file. If the
actual init file loaded is a compiled file, such as @file{.emacs.elc},
@ -497,7 +505,7 @@ hook runs after loading your init file (if applicable) and the
terminal-specific Lisp file, so you can use it to adjust the
definitions made by that file.
For a related feature, @pxref{Window Systems, window-setup-hook}.
For a related feature, @pxref{Init File, window-setup-hook}.
@end defvar
@node Command-Line Arguments

View file

@ -342,3 +342,38 @@ otherwise, an error is raised.
@noindent
After you create an archive, remember that it is not accessible in the
Package Menu interface unless it is in @code{package-archives}.
@cindex package archive security
@cindex package signing
Maintaining a public package archive entails a degree of responsibility.
When Emacs users install packages from your archive, those packages
can cause Emacs to run arbitrary code with the permissions of the
installing user. (This is true for Emacs code in general, not just
for packages.) So you should ensure that your archive is
well-maintained and keep the hosting system secure.
One way to increase the security of your packages is to @dfn{sign}
them using a cryptographic key. If you have generated a
private/public gpg key pair, you can use gpg to sign the package like
this:
@c FIXME EasyPG / package-x way to do this.
@example
gpg -ba -o @var{file}.sig @var{file}
@end example
@noindent
For a single-file package, @var{file} is the package Lisp file;
for a multi-file package, it is the package tar file.
You can also sign the archive's contents file in the same way.
Make the @file{.sig} files available in the same location as the packages.
You should also make your public key available for people to download;
e.g., by uploading it to a key server such as @url{http://pgp.mit.edu/}.
When people install packages from your archive, they can use
your public key to verify the signatures.
A full explanation of these matters is outside the scope of this
manual. For more information on cryptographic keys and signing,
@pxref{Top,, GnuPG, gnupg, The GNU Privacy Guard Manual}. Emacs comes
with an interface to GNU Privacy Guard, @pxref{Top,, EasyPG, epa,
Emacs EasyPG Assistant Manual}.

View file

@ -1,3 +1,9 @@
2014-06-08 Juri Linkov <juri@jurta.org>
* themes/deeper-blue-theme.el (diff-added, diff-changed, diff-removed):
Set face definitions explicitly. Inherit indicator faces from them.
(Bug#17695)
2014-05-28 Reuben Thomas <rrt@sc3d.org>
* TODO: add a note that undo-tree could be used to save undo

View file

@ -961,6 +961,24 @@ Use `electric-indent-mode' instead.
** Package
+++
*** The package library now supports digital signing of packages.
Maintainers of package archives should consider signing their packages
to enhance security.
+++
**** If the user option `package-check-signature' is non-nil,
Emacs tries to check package signatures at install time.
The value `allow-unsigned' allows installation of unsigned packages.
+++
**** The user option `package-unsigned-archives' lists archives where
Emacs will not try to check signatures.
+++
*** New option `package-pinned-packages'. This is useful if you have multiple
archives enabled, with more than one offering a package that you want.
+++
*** In the `list-packages' buffer, you can use `f' (`package-menu-filter')
to filter the list of packages by a keyword.
@ -1276,6 +1294,12 @@ low-level libraries gfilenotify.c, inotify.c or w32notify.c.
* Incompatible Lisp Changes in Emacs 24.4
+++
** Do not assume that the priority of all overlays will be numeric.
(You should still only specify integer priorities on overlays you create.)
If you need to sort arbitrary overlays into priority order, `overlays-at'
can now optionally do this.
---
** `kill-region' has lost its `yank-handler' optional argument.
@ -1375,8 +1399,6 @@ the other.
* Lisp Changes in Emacs 24.4
** overlays-at can optionally sort its result by priority.
+++
** The second argument of `eval' can now specify a lexical environment.

View file

@ -659,7 +659,7 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
[As of trunk r109635, 2012-08-15, the event loop no longer polls.]
**** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back
up on top of all others
up on top of all others (probably fixed in bug#17439)
**** free_frame_resources, face colors

View file

@ -40,19 +40,19 @@
`(cperl-hash-face ((,class (:foreground "coral1"))))
`(cursor ((,class (:background "green"))))
`(default ((,class (:background "#181a26" :foreground "gray80"))))
`(diff-added ((,class (nil))))
`(diff-changed ((,class (nil))))
`(diff-added ((,class (:foreground "white" :background "darkolivegreen"))))
`(diff-changed ((,class (:foreground "white" :background "dodgerblue4"))))
`(diff-context ((,class (:foreground "seashell4"))))
`(diff-file-header ((,class (:background "grey60"))))
`(diff-function ((,class (:inherit diff-header))))
`(diff-header ((,class (:background "grey45"))))
`(diff-hunk-header ((,class (:inherit diff-header))))
`(diff-index ((,class (:inherit diff-file-header))))
`(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen"))))
`(diff-indicator-changed ((,class (:foreground "white" :background "dodgerblue4"))))
`(diff-indicator-removed ((,class (:foreground "white" :background "indianred4"))))
`(diff-indicator-added ((,class (:inherit diff-added))))
`(diff-indicator-changed ((,class (:inherit diff-changed))))
`(diff-indicator-removed ((,class (:inherit diff-removed))))
`(diff-refine-change ((,class (:background "skyblue4"))))
`(diff-removed ((,class (nil))))
`(diff-removed ((,class (:foreground "white" :background "indianred4"))))
`(dired-marked ((,class (:background "dodgerblue3" :foreground "white"))))
`(ediff-current-diff-A ((,class (:background "green4" :foreground "white"))))
`(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white"))))

View file

@ -1,3 +1,53 @@
2014-06-08 Juri Linkov <juri@jurta.org>
* desktop.el: Activate auto-saving on window configuration changes.
(desktop-save-mode, desktop-auto-save-timeout): Add/remove
`desktop-auto-save-set-timer' to/from
`window-configuration-change-hook'.
(desktop-auto-save-set-timer): Change REPEAT arg of
`run-with-idle-timer' from t to nil.
http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00147.html
2014-06-08 Santiago Payà i Miralta <santiagopim@gmail.com>
* vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and
vc-hg-command (bug#17570).
2014-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
* international/mule-cmds.el (ucs-names): Add special entry for BEL
(bug#17702).
2014-06-08 Glenn Morris <rgm@gnu.org>
* startup.el (window-setup-hook): Doc fix.
* emacs-lisp/package.el (package-check-signature)
(package-unsigned-archives): Doc fixes.
2014-06-08 Martin Rudalics <rudalics@gmx.at>
* window.el (display-buffer-use-some-window): Don't make window
used smaller than it was before (Bug#17671).
2014-06-08 Eli Zaretskii <eliz@gnu.org>
* menu-bar.el (menu-bar-open): Fix last change: use the PC
'redisplay' instead of '(sit-for 0)'.
2014-06-08 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-ssh-controlmaster-options):
Improve search regexp. (Bug#17653)
2014-06-08 Glenn Morris <rgm@gnu.org>
* emacs-lisp/package.el (package-pinned-packages): Doc fix.
2014-06-08 Eli Zaretskii <eliz@gnu.org>
* menu-bar.el (menu-bar-open): Fix invocation via M-x.
2014-06-06 Santiago Payà i Miralta <santiagopim@gmail.com>
* vc/vc-hg.el (vc-hg-create-tag, vc-hg-retrieve-tag): New functions

View file

@ -174,7 +174,10 @@ For further details, see info node `(emacs)Saving Emacs Sessions'."
:global t
:group 'desktop
(if desktop-save-mode
(desktop-auto-save-set-timer)
(when (and (integerp desktop-auto-save-timeout)
(> desktop-auto-save-timeout 0))
(add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer))
(remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)
(desktop-auto-save-cancel-timer)))
(defun desktop-save-mode-off ()
@ -207,13 +210,18 @@ determine where the desktop is saved."
(defcustom desktop-auto-save-timeout auto-save-timeout
"Number of seconds idle time before auto-save of the desktop.
The idle timer activates auto-saving only when window configuration changes.
This applies to an existing desktop file when `desktop-save-mode' is enabled.
Zero or nil means disable auto-saving due to idleness."
:type '(choice (const :tag "Off" nil)
(integer :tag "Seconds"))
:set (lambda (symbol value)
(set-default symbol value)
(ignore-errors (desktop-auto-save-set-timer)))
(ignore-errors
(if (and (integerp value) (> value 0))
(add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)
(remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)
(desktop-auto-save-cancel-timer))))
:group 'desktop
:version "24.4")
@ -1244,7 +1252,7 @@ after that many seconds of idle time."
(when (and (integerp desktop-auto-save-timeout)
(> desktop-auto-save-timeout 0))
(setq desktop-auto-save-timer
(run-with-idle-timer desktop-auto-save-timeout t
(run-with-idle-timer desktop-auto-save-timeout nil
'desktop-auto-save))))
(defun desktop-auto-save-cancel-timer ()

View file

@ -113,8 +113,6 @@
;;; ToDo:
;; - a trust mechanism, since compiling a package can run arbitrary code.
;; For example, download package signatures and check that they match.
;; - putting info dirs at the start of the info path means
;; users see a weird ordering of categories. OTOH we want to
;; override later entries. maybe emacs needs to enforce
@ -229,18 +227,25 @@ a package can run arbitrary code."
:version "24.1")
(defcustom package-pinned-packages nil
"An alist of packages that are pinned to a specific archive
"An alist of packages that are pinned to specific archives.
This can be useful if you have multiple package archives enabled,
and want to control which archive a given package gets installed from.
Each element has the form (SYM . ID).
SYM is a package, as a symbol.
ID is an archive name. This should correspond to an
entry in `package-archives'.
Each element of the alist has the form (PACKAGE . ARCHIVE), where:
PACKAGE is a symbol representing a package
ARCHIVE is a string representing an archive (it should be the car of
an element in `package-archives', e.g. \"gnu\").
If the archive of name ID does not contain the package SYM, no
other location will be considered, which will make the
package unavailable."
Adding an entry to this variable means that only ARCHIVE will be
considered as a source for PACKAGE. If other archives provide PACKAGE,
they are ignored (for this package). If ARCHIVE does not contain PACKAGE,
the package will be unavailable."
:type '(alist :key-type (symbol :tag "Package")
:value-type (string :tag "Archive name"))
;; I don't really see why this is risky...
;; I suppose it could prevent you receiving updates for a package,
;; via an entry (PACKAGE . NON-EXISTING). Which could be an issue
;; if PACKAGE has a known vulnerability that is fixed in newer versions.
:risky t
:group 'package
:version "24.4")
@ -285,7 +290,12 @@ contrast, `package-user-dir' contains packages for personal use."
:version "24.1")
(defcustom package-check-signature 'allow-unsigned
"Whether to check package signatures when installing."
"Non-nil means to check package signatures when installing.
The value `allow-unsigned' means to still install a package even if
it is unsigned.
This also applies to the \"archive-contents\" file that lists the
contents of the archive."
:type '(choice (const nil :tag "Never")
(const allow-unsigned :tag "Allow unsigned")
(const t :tag "Check always"))
@ -294,7 +304,7 @@ contrast, `package-user-dir' contains packages for personal use."
:version "24.4")
(defcustom package-unsigned-archives nil
"A list of archives which do not use package signature."
"List of archives where we do not check for package signatures."
:type '(repeat (string :tag "Archive name"))
:risky t
:group 'package

View file

@ -2945,7 +2945,10 @@ on encoding."
(if (setq name (get-char-code-property c 'name))
(push (cons name c) names))
(setq c (1+ c))))
(setq ucs-names names))))
;; Special case for "BELL" which is apparently the only char which
;; doesn't have a new name and whose old-name is shadowed by a newer
;; char with that name.
(setq ucs-names `(("BELL (BEL)" . 7) ,@names)))))
(defun read-char-by-name (prompt)
"Read a character by its Unicode name or hex number string.

View file

@ -2272,6 +2272,12 @@ If FRAME is nil or not given, use the selected frame."
((eq type 'w32) (w32-menu-bar-open frame))
((and (null tty-menu-open-use-tmm)
(not (zerop (or (frame-parameter nil 'menu-bar-lines) 0))))
;; Make sure the menu bar is up to date. One situation where
;; this is important is when this function is invoked by name
;; via M-x, in which case the menu bar includes the "Minibuf"
;; menu item that should be removed when we exit the minibuffer.
(force-mode-line-update)
(redisplay)
(let* ((x tty-menu--initial-menu-x)
(menu (menu-bar-menu-at-x-y x 0 frame)))
(popup-menu (or

View file

@ -302,18 +302,19 @@ useful only in combination with `tramp-default-proxies-alist'.")
;;;###tramp-autoload
(defconst tramp-ssh-controlmaster-options
(let ((result ""))
(let ((result "")
(case-fold-search t))
(ignore-errors
(with-temp-buffer
(call-process "ssh" nil t nil "-o" "ControlMaster")
(goto-char (point-min))
(when (search-forward-regexp "Missing ControlMaster argument" nil t)
(when (search-forward-regexp "missing.+argument" nil t)
(setq result "-o ControlPath=%t.%%r@%%h:%%p -o ControlMaster=auto")))
(when result
(unless (zerop (length result))
(with-temp-buffer
(call-process "ssh" nil t nil "-o" "ControlPersist")
(goto-char (point-min))
(when (search-forward-regexp "Missing ControlPersist argument" nil t)
(when (search-forward-regexp "missing.+argument" nil t)
(setq result (concat result " -o ControlPersist=no"))))))
result)
"Call ssh to detect whether it supports the Control* arguments.

View file

@ -303,9 +303,12 @@ keys for use under X. It is used in a fashion analogous to the
environment variable TERM.")
(defvar window-setup-hook nil
"Normal hook run to initialize window system display.
Emacs runs this hook after processing the command line arguments and loading
the user's init file.")
"Normal hook run after loading init files and handling the command line.
This is very similar to `emacs-startup-hook'. The only difference
is that this hook runs after frame parameters have been set up in
response to any settings from your init file. Unless this matters
to you, use `emacs-startup-hook' instead. (The name of this hook
is due to historical reasons, and does not reflect its purpose very well.)")
(defcustom initial-major-mode 'lisp-interaction-mode
"Major mode command symbol to use for the initial `*scratch*' buffer."

View file

@ -234,14 +234,11 @@ highlighting the Log View buffer."
(defun vc-hg-working-revision (file)
"Hg-specific version of `vc-working-revision'."
(let ((default-directory (if (file-directory-p file)
(file-name-as-directory file)
(file-name-directory file))))
(ignore-errors
(with-output-to-string
(process-file vc-hg-program nil standard-output nil
"log" "-l" "1" "--template" "{rev}"
(file-relative-name file))))))
(or (ignore-errors
(with-output-to-string
(vc-hg-command standard-output 0 file
"parent" "--template" "{rev}")))
"0"))
;;; History functions

View file

@ -6497,7 +6497,7 @@ that frame."
;; resize it to its old height but don't signal an error.
(when (and (listp quad)
(integerp (nth 3 quad))
(/= (nth 3 quad) (window-total-height window)))
(> (nth 3 quad) (window-total-height window)))
(condition-case nil
(window-resize window (- (nth 3 quad) (window-total-height window)))
(error nil)))

View file

@ -276,6 +276,19 @@ build will run on Windows 9X and newer systems).
Bash will find MSYS executables first, which is exactly what you
need.
* Starting the MSYS Bash shell
For most reliable and predictable results, we recommend to start
Bash by clicking the "MSYS" icon on your desktop. That icon is
created when you install MSYS, and using it is the official way of
running the MSYS tools.
For other methods of starting the shell, make sure Bash is invoked
with the "--login" command-line switch.
When the shell window opens and you get the shell prompt, change to
the directory where you intend to build Emacs.
At this point, you are ready to build Emacs in its basic
configuration. If you want to build it with image support and other
optional libraries, read about that near the end of this document.
@ -290,7 +303,7 @@ build will run on Windows 9X and newer systems).
auto-generated files.
To generate the configure script, type this at the MSYS Bash prompt
from the top-level directory of the Emacs tree:
from the top-level directory of the Emacs source tree:
./autogen.sh

View file

@ -1,3 +1,35 @@
2014-06-08 Eli Zaretskii <eliz@gnu.org>
* sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter
contains garbage on WINDOWSNT (which could potentially infloop at
exit).
Minimize cursor motion during TTY menu updates.
* term.c (tty_menu_display): Don't position cursor here.
Instead, pass the cursor coordinates to update_frame_with_menu.
(tty_menu_activate): Send the hide cursor command only once in an
iteration through the outer 'while' loop.
* dispnew.c (update_frame_1): Accept an additional argument
SET_CURSOR_P, and position the cursor at the end of the frame
update only if that argument is non-zero. All callers changed to
provide the additional argument as non-zero, except for
update_frame_with_menu.
(update_frame_with_menu): Accept 2 additional arguments ROW and
COL; if they are non-negative, instruct update_frame_1 not to
position the cursor, and instead position it according to ROW and COL.
* dispextern.h (update_frame_with_menu): Update prototype.
2014-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
* callproc.c (call_process): Don't check read-only if we don't insert
anything (bug#17666).
2014-06-08 Eli Zaretskii <eliz@gnu.org>
* dispnew.c (update_frame_with_menu): Set display_completed.
2014-06-07 Eli Zaretskii <eliz@gnu.org>
* term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern

View file

@ -805,8 +805,10 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
/* Now NREAD is the total amount of data in the buffer. */
immediate_quit = 0;
if (NILP (BVAR (current_buffer, enable_multibyte_characters))
&& ! CODING_MAY_REQUIRE_DECODING (&process_coding))
if (!nread)
;
else if (NILP (BVAR (current_buffer, enable_multibyte_characters))
&& ! CODING_MAY_REQUIRE_DECODING (&process_coding))
insert_1_both (buf, nread, nread, 0, 1, 0);
else
{ /* We have to decode the input. */
@ -814,6 +816,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
ptrdiff_t count1 = SPECPDL_INDEX ();
XSETBUFFER (curbuf, current_buffer);
/* FIXME: Call signal_after_change! */
prepare_to_modify_buffer (PT, PT, NULL);
/* We cannot allow after-change-functions be run
during decoding, because that might modify the

View file

@ -3454,7 +3454,7 @@ extern Lisp_Object marginal_area_string (struct window *, enum window_part,
int *, int *, int *, int *);
extern void redraw_frame (struct frame *);
extern bool update_frame (struct frame *, bool, bool);
extern void update_frame_with_menu (struct frame *);
extern void update_frame_with_menu (struct frame *, int, int);
extern void bitch_at_user (void);
extern void adjust_frame_glyphs (struct frame *);
void free_glyphs (struct frame *);

View file

@ -92,7 +92,7 @@ static void check_matrix_pointers (struct glyph_matrix *,
static void mirror_line_dance (struct window *, int, int, int *, char *);
static bool update_window_tree (struct window *, bool);
static bool update_window (struct window *, bool);
static bool update_frame_1 (struct frame *, bool, bool);
static bool update_frame_1 (struct frame *, bool, bool, bool);
static bool scrolling (struct frame *);
static void set_window_cursor_after_update (struct window *);
static void adjust_frame_glyphs_for_window_redisplay (struct frame *);
@ -3070,7 +3070,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
/* Update the display */
update_begin (f);
paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p);
paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p, 1);
update_end (f);
if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
@ -3100,12 +3100,17 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
glyphs. This is like the second part of update_frame, but it
doesn't call build_frame_matrix, because we already have the
desired matrix prepared, and don't want it to be overwritten by the
text of the normal display. */
text of the normal display.
ROW and COL, if non-negative, are the row and column of the TTY
frame where to position the cursor after the frame update is
complete. Negative values mean ask update_frame_1 to position the
cursor "normally", i.e. at point in the selected window. */
void
update_frame_with_menu (struct frame *f)
update_frame_with_menu (struct frame *f, int row, int col)
{
struct window *root_window = XWINDOW (f->root_window);
bool paused_p;
bool paused_p, cursor_at_point_p;
eassert (FRAME_TERMCAP_P (f));
@ -3115,9 +3120,14 @@ update_frame_with_menu (struct frame *f)
/* Update the display. */
update_begin (f);
cursor_at_point_p = !(row >= 0 && col >= 0);
/* Force update_frame_1 not to stop due to pending input, and not
try scrolling. */
paused_p = update_frame_1 (f, 1, 1);
paused_p = update_frame_1 (f, 1, 1, cursor_at_point_p);
/* ROW and COL tell us where in the menu to position the cursor, so
that screen readers know the active region on the screen. */
if (!cursor_at_point_p)
cursor_to (f, row, col);
update_end (f);
if (FRAME_TTY (f)->termscript)
@ -3132,12 +3142,11 @@ update_frame_with_menu (struct frame *f)
check_window_matrix_pointers (root_window);
#endif
add_frame_display_history (f, paused_p);
#else
IF_LINT ((void) paused_p);
#endif
/* Reset flags indicating that a window should be updated. */
set_window_update_flags (root_window, false);
display_completed = !paused_p;
}
@ -4414,12 +4423,14 @@ scrolling_window (struct window *w, bool header_line_p)
/* Update the desired frame matrix of frame F.
FORCE_P means that the update should not be stopped by pending input.
INHIBIT_HAIRY_ID_P means that scrolling should not be tried.
INHIBIT_ID_P means that scrolling by insert/delete should not be tried.
SET_CURSOR_P false means do not set cursor at point in selected window.
Value is true if update was stopped due to pending input. */
static bool
update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p)
update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p,
bool set_cursor_p)
{
/* Frame matrices to work on. */
struct glyph_matrix *current_matrix = f->current_matrix;
@ -4491,7 +4502,7 @@ update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p)
pause_p = 0 < i && i < FRAME_LINES (f) - 1;
/* Now just clean up termcap drivers and set cursor, etc. */
if (!pause_p)
if (!pause_p && set_cursor_p)
{
if ((cursor_in_echo_area
/* If we are showing a message instead of the mini-buffer,

View file

@ -1270,7 +1270,7 @@ reset_sys_modes (struct tty_display_info *tty_out)
int i;
tty_turn_off_insert (tty_out);
for (i = curX (tty_out); i < FrameCols (tty_out) - 1; i++)
for (i = cursorX (tty_out); i < FrameCols (tty_out) - 1; i++)
{
fputc (' ', tty_out->output);
}

View file

@ -2934,8 +2934,7 @@ tty_menu_display (tty_menu *menu, int x, int y, int pn, int *faces,
display_tty_menu_item (menu->text[j], max_width, face, x, y + i,
menu->submenu[j] != NULL);
}
update_frame_with_menu (sf);
cursor_to (sf, row, col);
update_frame_with_menu (sf, row, col);
}
/* --------------------------- X Menu emulation ---------------------- */
@ -3106,7 +3105,7 @@ static void
screen_update (struct frame *f, struct glyph_matrix *mtx)
{
restore_desired_matrix (f, mtx);
update_frame_with_menu (f);
update_frame_with_menu (f, -1, -1);
}
typedef enum {
@ -3255,7 +3254,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
/* Force update of the current frame, so that the desired and the
current matrices are identical. */
update_frame_with_menu (sf);
update_frame_with_menu (sf, -1, -1);
state[0].menu = menu;
state[0].screen_behind = save_and_enable_current_matrix (sf);
@ -3400,8 +3399,6 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
state[statecount - 1].y,
state[statecount - 1].pane,
faces, x, y, first_item, 1);
tty_hide_cursor (tty);
fflush (tty->output);
/* The call to display help-echo below will move the cursor,
so remember its current position as computed by
tty_menu_display. */
@ -3420,10 +3417,13 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
item, so that screen readers and other accessibility aids
know where the active region is. */
cursor_to (sf, row, col);
tty_hide_cursor (tty);
fflush (tty->output);
prev_menu_help_message = menu_help_message;
}
/* Both tty_menu_display and help_callback invoke update_end,
which calls tty_show_cursor. Re-hide it, so it doesn't show
through the menus. */
tty_hide_cursor (tty);
fflush (tty->output);
}
sf->mouse_moved = 0;