Merge from emacs-24; up to 2014-06-01T23:37:59Z!eggert@cs.ucla.edu
This commit is contained in:
commit
36cf8493af
33 changed files with 433 additions and 146 deletions
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
16
configure.ac
16
configure.ac
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}.
|
||||
|
|
|
@ -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
|
||||
|
|
26
etc/NEWS
26
etc/NEWS
|
@ -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.
|
||||
|
||||
|
|
2
etc/TODO
2
etc/TODO
|
@ -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
|
||||
|
||||
|
|
|
@ -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"))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)))
|
||||
|
|
15
nt/INSTALL
15
nt/INSTALL
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
16
src/term.c
16
src/term.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue