mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-29 19:48:19 +00:00
Merge from trunk
This commit is contained in:
commit
894e369ddf
11
ChangeLog
11
ChangeLog
@ -1,6 +1,15 @@
|
||||
2010-06-16 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* INSTALL: Update font information (Bug#6389).
|
||||
|
||||
2010-06-16 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* INSTALL: General update.
|
||||
|
||||
2010-06-12 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (install-arch-indep): Delete any old info .gz files first.
|
||||
* Makefile.in (install-arch-indep): Delete any old info .gz files
|
||||
first.
|
||||
|
||||
2010-06-11 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
|
339
INSTALL
339
INSTALL
@ -5,32 +5,38 @@ Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
This file contains general information. For more specific information
|
||||
for the Windows, GNUstep/Mac OS X, and MS-DOS ports, also see the files
|
||||
nt/INSTALL nextstep/INSTALL, and msdos/INSTALL. For information
|
||||
specific to building from a Bazaar checkout (rather than a release), see
|
||||
the file INSTALL.BZR.
|
||||
This file contains general information on building GNU Emacs.
|
||||
For more information specific to the MS-Windows, GNUstep/Mac OS X, and
|
||||
MS-DOS ports, also read the files nt/INSTALL, nextstep/INSTALL, and
|
||||
msdos/INSTALL. For information about building from a Bazaar checkout
|
||||
(rather than a release), also read the file INSTALL.BZR.
|
||||
|
||||
|
||||
BASIC INSTALLATION
|
||||
|
||||
The simplest way to build Emacs is to use the `configure' shell script
|
||||
which attempts to guess correct values for various system-dependent
|
||||
variables and features and find the directories where various system
|
||||
headers and libraries are kept. It then creates a `Makefile' in each
|
||||
subdirectory and a `config.h' file containing system-dependent
|
||||
definitions. Running the `make' utility then builds the package for
|
||||
your system.
|
||||
On most Unix systems, you build Emacs by first running the `configure'
|
||||
shell script. This attempts to deduce the correct values for
|
||||
various system-dependent variables and features, and find the
|
||||
directories where certain system headers and libraries are kept.
|
||||
In a few cases, you may need to explicitly tell configure where to
|
||||
find some things, or what options to use.
|
||||
|
||||
`configure' creates a `Makefile' in several subdirectories, and a
|
||||
`src/config.h' file containing system-dependent definitions.
|
||||
Running the `make' utility then builds the package for your system.
|
||||
|
||||
Here's the procedure to build Emacs using `configure' on systems which
|
||||
are supported by it. If this simplified procedure fails, or if you
|
||||
are using a platform such as MS-Windows, where `configure' script
|
||||
doesn't work, you might need to use various non-default options, and
|
||||
maybe perform some of the steps manually. The more detailed
|
||||
description in the rest of the sections of this guide will help you do
|
||||
that, so please refer to them if the simple procedure does not work.
|
||||
are supported by it. In some cases, if the simplified procedure fails,
|
||||
you might need to use various non-default options, and maybe perform
|
||||
some of the steps manually. The more detailed description in the other
|
||||
sections of this guide will help you do that, so please refer to those
|
||||
sections if you need to.
|
||||
|
||||
1. Make sure your system has at least 120 MB of free disk space.
|
||||
1. Unpacking the Emacs 23.2 release requires about 170 MB of free
|
||||
disk space. Building Emacs uses about another 60 MB of space.
|
||||
The final installed Emacs uses about 120 MB of disk space.
|
||||
This includes the space-saving that comes from automatically
|
||||
compressing the Lisp source files on installation.
|
||||
|
||||
2a. `cd' to the directory where you unpacked Emacs and invoke the
|
||||
`configure' script:
|
||||
@ -43,8 +49,8 @@ that, so please refer to them if the simple procedure does not work.
|
||||
|
||||
SOURCE-DIR/configure
|
||||
|
||||
where SOURCE-DIR is the top-level Emacs source directory. This
|
||||
may not work unless you use GNU make.
|
||||
where SOURCE-DIR is the top-level Emacs source directory.
|
||||
This may not work unless you use GNU make.
|
||||
|
||||
3. When `configure' finishes, it prints several lines of details
|
||||
about the system configuration. Read those details carefully
|
||||
@ -52,17 +58,18 @@ that, so please refer to them if the simple procedure does not work.
|
||||
system names, wrong places for headers or libraries, missing
|
||||
libraries that you know are installed on your system, etc.
|
||||
|
||||
If you find anything wrong, you will have to pass to `configure'
|
||||
explicit machine configuration name, and one or more options
|
||||
which tell it where to find various headers and libraries; refer
|
||||
to DETAILED BUILDING AND INSTALLATION section below.
|
||||
If you find anything wrong, you may have to pass to `configure'
|
||||
one or more options specifying the explicit machine configuration
|
||||
name, where to find various headers and libraries, etc.
|
||||
Refer to the section DETAILED BUILDING AND INSTALLATION below.
|
||||
|
||||
If `configure' didn't find some image support libraries, such as
|
||||
Xpm, jpeg, etc., and you want to use them refer to the subsection
|
||||
"Image support libraries", below.
|
||||
If `configure' didn't find some (optional) image support libraries,
|
||||
such as Xpm, jpeg, etc., and you want to use them, refer to the
|
||||
subsection "Image support libraries" below.
|
||||
|
||||
If the details printed by `configure' don't make any sense to
|
||||
you, assume that `configure' did its job and proceed.
|
||||
you, but there are no obvious errors, assume that `configure' did
|
||||
its job and proceed.
|
||||
|
||||
4. If you need to run the `configure' script more than once (e.g.,
|
||||
with some non-default options), always clean the source
|
||||
@ -79,7 +86,7 @@ that, so please refer to them if the simple procedure does not work.
|
||||
in the `src' directory. You can try this program, to make sure
|
||||
it works:
|
||||
|
||||
src/emacs -q
|
||||
src/emacs -Q
|
||||
|
||||
7. Assuming that the program `src/emacs' starts and displays its
|
||||
opening screen, you can install the program and its auxiliary
|
||||
@ -93,9 +100,13 @@ that, so please refer to them if the simple procedure does not work.
|
||||
|
||||
make clean
|
||||
|
||||
You can also save some space by compressing (with `gzip') Info files
|
||||
and installed Lisp source (.el) files which have corresponding .elc
|
||||
versions.
|
||||
You can delete the entire build directory if you do not plan to
|
||||
build Emacs again, but it can be useful to keep for debugging.
|
||||
|
||||
Note that the install automatically saves space by compressing
|
||||
(provided you have the `gzip' program) those installed Lisp source (.el)
|
||||
files that have corresponding .elc versions. You may also wish
|
||||
to compress the installed Info files.
|
||||
|
||||
|
||||
ADDITIONAL DISTRIBUTION FILES
|
||||
@ -157,19 +168,15 @@ download and build libraries from sources. None of them are vital for
|
||||
running Emacs; however, note that Emacs will not be able to use
|
||||
colored icons in the toolbar if XPM support is not compiled in.
|
||||
|
||||
Here's the list of these optional libraries, and the URLs where they
|
||||
can be found:
|
||||
Here's the list of some of these optional libraries, and the URLs
|
||||
where they can be found (in the unlikely event that your distribution
|
||||
does not provide them):
|
||||
|
||||
. libXaw3d for fancy 3D-style
|
||||
scroll bars: ftp://ftp.x.org/contrib/widgets/Xaw3d/
|
||||
. libxpm for XPM: ftp://ftp.x.org/contrib/libraries/
|
||||
Get version 3.4k or later, which lets Emacs
|
||||
use its own color allocation functions.
|
||||
. libpng for PNG: ftp://ftp.simplesystems.org/pub/libpng/png/
|
||||
. libXaw3d http://directory.fsf.org/project/xaw3d/
|
||||
. libxpm for XPM: http://www.x.org/releases/current/src/lib/
|
||||
. libpng for PNG: http://www.libpng.org/
|
||||
. libz (for PNG): http://www.zlib.net/
|
||||
. libjpeg for JPEG: ftp://ftp.uu.net/graphics/jpeg/
|
||||
Get version 6b -- 6a is reported to fail in
|
||||
Emacs.
|
||||
. libjpeg for JPEG: http://www.ijg.org/
|
||||
. libtiff for TIFF: http://www.libtiff.org/
|
||||
. libgif for GIF: http://sourceforge.net/projects/giflib/
|
||||
|
||||
@ -178,61 +185,38 @@ Emacs will configure itself to build with these libraries if the
|
||||
appropriate --without-LIB option. In some cases, older versions of
|
||||
these libraries won't work because some routines are missing, and
|
||||
configure should avoid such old versions. If that happens, use the
|
||||
--without-LIB options to `configure'. See below for more details.
|
||||
--without-LIB options to `configure', if you need to.
|
||||
|
||||
* Extra fonts
|
||||
|
||||
The Emacs distribution does not include fonts and does not install
|
||||
them. You must do that yourself.
|
||||
them.
|
||||
|
||||
Emacs running on the GNU system supports both X fonts and local fonts
|
||||
(i.e. the fonts managed by the fontconfig library).
|
||||
|
||||
For `Unicode' (ISO 10646) X fonts, see
|
||||
<URL:http://czyborra.com/unifont/> (packaged in Debian),
|
||||
<URL:http://openlab.ring.gr.jp/efont/> (packaged in Debian). (In
|
||||
recent Debian versions, there is an extensive `misc-fixed' iso10646-1
|
||||
in the default X installation.) Perhaps also see
|
||||
<URL:http://www.cl.cam.ac.uk/%7Emgk25/ucs-fonts.html>.
|
||||
|
||||
<URL:http://czyborra.com/charsets/> has basic fonts for Emacs's
|
||||
ISO-8859 charsets.
|
||||
|
||||
XFree86 release 4 (from <URL:ftp://ftp.xfree86.org/pub/XFree86/> and mirrors)
|
||||
contains font support for most, if not all, of the charsets that Emacs
|
||||
currently supports, including iso10646-1 encoded fonts for use with
|
||||
the mule-unicode charsets. The font files should also be usable with
|
||||
older X releases. Note that XFree 4 contains many iso10646-1 fonts
|
||||
with minimal character repertoires, which can cause problems -- see
|
||||
etc/PROBLEMS.
|
||||
|
||||
BDF Unicode fonts etl-unicode.tar.gz are available from
|
||||
<URL:ftp://ftp.x.org/contrib/fonts/> and
|
||||
<URL:ftp://ftp.xfree86.org/pub/mirror/X.Org/contrib/fonts/>. These
|
||||
fonts can also be used by ps-print and ps-mule to print Unicode
|
||||
characters.
|
||||
|
||||
Finally, the Web page <URL:http://www.gnu.org/software/freefont/>
|
||||
lists a large number of free Unicode fonts.
|
||||
On the GNU system, Emacs supports both X fonts and local fonts
|
||||
(i.e. fonts managed by the fontconfig library). If you need more
|
||||
fonts than your distribution normally provides, you must install them
|
||||
yourself. See <URL:http://www.gnu.org/software/freefont/> for a large
|
||||
number of free Unicode fonts.
|
||||
|
||||
* GNU/Linux development packages
|
||||
|
||||
Many GNU/Linux systems do not come with development packages by
|
||||
default; they just include the files that you need to run Emacs, but
|
||||
not those you need to compile it. For example, to compile Emacs with
|
||||
X11 support, you may need to install the special `X11 development'
|
||||
package. For example, in April 2003, the package names to install
|
||||
were `XFree86-devel' and `Xaw3d-devel' on Red Hat. On Debian, the
|
||||
packages necessary to build the installed version should be
|
||||
sufficient; they can be installed using `apt-get build-dep emacs21' in
|
||||
Debian 3 and above.
|
||||
Many GNU/Linux systems do not come with development packages by default;
|
||||
they include the files that you need to run Emacs, but not those you
|
||||
need to compile it. For example, to compile Emacs with support for X
|
||||
and graphics libraries, you may need to install the `X development'
|
||||
package(s), and development versions of the jpeg, png, etc. packages.
|
||||
|
||||
The names of the packages that you need varies according to the
|
||||
GNU/Linux distribution that you use, and the options that you want to
|
||||
configure Emacs with. On Debian-based systems, you can install all the
|
||||
packages needed to build the installed version of Emacs with a command
|
||||
like `apt-get build-dep emacs23'.
|
||||
|
||||
|
||||
DETAILED BUILDING AND INSTALLATION:
|
||||
|
||||
(This is for a Unix or Unix-like system. For MS-DOS and Windows 3.X,
|
||||
see msdos/INSTALL. For Windows 9X, Windows ME, Windows NT, Windows
|
||||
2000, Windows XP/2003, and Windows Vista/2008, see the file
|
||||
(This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X,
|
||||
see msdos/INSTALL. For later versions of MS Windows, see the file
|
||||
nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
|
||||
|
||||
1) Make sure your system has enough swapping space allocated to handle
|
||||
@ -240,21 +224,20 @@ a program whose pure code is 1.5 MB and whose data area is at
|
||||
least 2.8 MB and can reach 100 MB or more. If the swapping space is
|
||||
insufficient, you will get an error in the command `temacs -batch -l
|
||||
loadup dump', found in `./src/Makefile.in', or possibly when
|
||||
running the final dumped Emacs.
|
||||
running the final dumped Emacs. (This should not be an issue
|
||||
on any recent system.)
|
||||
|
||||
Building Emacs requires about 140 MB of disk space (including the
|
||||
Emacs sources) Once installed, Emacs occupies about 77 MB in the file
|
||||
Building Emacs requires about 230 MB of disk space (including the
|
||||
Emacs sources). Once installed, Emacs occupies about 120 MB in the file
|
||||
system where it is installed; this includes the executable files, Lisp
|
||||
libraries, miscellaneous data files, and on-line documentation. If
|
||||
the building and installation take place in different directories,
|
||||
then the installation procedure momentarily requires 140+77 MB.
|
||||
then the installation procedure momentarily requires 230+120 MB.
|
||||
|
||||
2) Consult `./etc/MACHINES' to see what configuration name you should
|
||||
give to the `configure' program. That file offers hints for
|
||||
getting around some possible installation problems. The file lists
|
||||
many different configurations, but only the part for your machine and
|
||||
operating system is relevant. (The list is arranged in alphabetical
|
||||
order by the vendor name.)
|
||||
2) In the unlikely event that `configure' does not detect your system
|
||||
type correctly, consult `./etc/MACHINES' to see what --host, --build
|
||||
options you should pass to `configure'. That file also offers hints
|
||||
for getting around some possible installation problems.
|
||||
|
||||
3) You can build Emacs in the top-level Emacs source directory
|
||||
or in a separate directory.
|
||||
@ -262,15 +245,10 @@ or in a separate directory.
|
||||
3a) To build in the top-level Emacs source directory, go to that
|
||||
directory and run the program `configure' as follows:
|
||||
|
||||
./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
|
||||
./configure [--OPTION[=VALUE]] ...
|
||||
|
||||
The CONFIGURATION-NAME argument should be a configuration name given
|
||||
in `./etc/MACHINES', with the system version number added at the end.
|
||||
|
||||
You should try first omitting CONFIGURATION-NAME. This way,
|
||||
`configure' will try to guess your system type. If it cannot guess,
|
||||
or if something goes wrong in building or installing Emacs this way,
|
||||
try again specifying the proper CONFIGURATION-NAME explicitly.
|
||||
If `configure' cannot determine your system type, try again
|
||||
specifying the proper --build, --host options explicitly.
|
||||
|
||||
If you don't want X support, specify `--with-x=no'. If you omit this
|
||||
option, `configure' will try to figure out for itself whether your
|
||||
@ -285,20 +263,19 @@ accept a list of directories, separated with colons.
|
||||
|
||||
To get more attractive menus, you can specify an X toolkit when you
|
||||
configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
|
||||
TOOLKIT is `athena', `motif' or `gtk' (`yes' and `lucid' are synonyms
|
||||
for `athena'). On some systems, it does not work to use a toolkit
|
||||
with shared libraries. A free implementation of Motif, called
|
||||
LessTif, is available from <http://www.lesstif.org>. Compiling with
|
||||
LessTif or Motif causes a standard File Selection Dialog to pop up
|
||||
when you invoke file commands with the mouse. You can get fancy
|
||||
3D-style scroll bars, even without LessTif/Motif, if you have the
|
||||
Xaw3d library installed (see "Image support libraries" above for Xaw3d
|
||||
availability).
|
||||
TOOLKIT is `gtk' (the default), `athena', or `motif' (`yes' and
|
||||
`lucid' are synonyms for `athena'). On some systems, it does not work
|
||||
to use a toolkit with shared libraries. A free implementation of
|
||||
Motif, called LessTif, is available from <http://www.lesstif.org>.
|
||||
Compiling with LessTif or Motif causes a standard File Selection
|
||||
Dialog to pop up when you invoke file commands with the mouse. You
|
||||
can get fancy 3D-style scroll bars, even without Gtk or LessTif/Motif,
|
||||
if you have the Xaw3d library installed (see "Image support libraries"
|
||||
above for Xaw3d availability).
|
||||
|
||||
If `--with-x-toolkit=gtk' is specified, you can tell configure where
|
||||
to search for GTK by specifying `--with-pkg-config-prog=PATH' where
|
||||
PATH is the pathname to pkg-config. Note that GTK version 2.4 or
|
||||
newer is required for Emacs.
|
||||
You can tell configure where to search for GTK by specifying
|
||||
`--with-pkg-config-prog=PATH' where PATH is the pathname to
|
||||
pkg-config. Note that GTK version 2.6 or newer is required for Emacs.
|
||||
|
||||
The Emacs mail reader RMAIL is configured to be able to read mail from
|
||||
a POP3 server by default. Versions of the POP protocol older than
|
||||
@ -325,10 +302,10 @@ or more of these options:
|
||||
Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
|
||||
scroll bars.
|
||||
|
||||
Use --without-xim to inhibit the default use of X Input Methods. In
|
||||
this case, the X resource useXIM can be used to turn on use of XIM.
|
||||
Use --without-xim to inhibit the default use of X Input Methods.
|
||||
In this case, the X resource useXIM can be used to turn on use of XIM.
|
||||
|
||||
Use --disable-largefile omits support for files larger than 2GB on
|
||||
Use --disable-largefile to omit support for files larger than 2GB on
|
||||
systems which support that.
|
||||
|
||||
Use --without-sound to disable sound support.
|
||||
@ -338,11 +315,11 @@ should put emacs and its data files. This defaults to `/usr/local'.
|
||||
- Emacs (and the other utilities users run) go in PREFIXDIR/bin
|
||||
(unless the `--exec-prefix' option says otherwise).
|
||||
- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
|
||||
(where VERSION is the version number of Emacs, like `19.27').
|
||||
(where VERSION is the version number of Emacs, like `23.2').
|
||||
- The architecture-dependent files go in
|
||||
PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
|
||||
(where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
|
||||
unless the `--exec-prefix' option says otherwise.
|
||||
(where CONFIGURATION is the configuration name, like
|
||||
i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise.
|
||||
|
||||
The `--exec-prefix=EXECDIR' option allows you to specify a separate
|
||||
portion of the directory tree for installing architecture-specific
|
||||
@ -354,17 +331,16 @@ EXECDIR/bin should be a directory that is normally in users' PATHs.
|
||||
|
||||
For example, the command
|
||||
|
||||
./configure mips-dec-ultrix --with-x11
|
||||
./configure --build=i386-linux-gnu --without-sound
|
||||
|
||||
configures Emacs to build for a DECstation running Ultrix, with
|
||||
support for the X11 window system.
|
||||
configures Emacs to build for a 32-bit GNU/Linux distribution,
|
||||
without sound support.
|
||||
|
||||
`configure' doesn't do any compilation or installation
|
||||
itself. It just creates the files that influence those things:
|
||||
`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
|
||||
`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
|
||||
on exactly what it does, see the section called `CONFIGURATION BY
|
||||
HAND', below.
|
||||
`configure' doesn't do any compilation or installation itself.
|
||||
It just creates the files that influence those things:
|
||||
`./Makefile' in the top-level directory and several subdirectories;
|
||||
and `./src/config.h'. For details on exactly what it does, see the
|
||||
section called `CONFIGURATION BY HAND', below.
|
||||
|
||||
When it is done, `configure' prints a description of what it did and
|
||||
creates a shell script `config.status' which, when run, recreates the
|
||||
@ -406,7 +382,7 @@ shell such as Bash, which uses these variables:
|
||||
preprocessor to look in the `/foo/myinclude' directory for header
|
||||
files (in addition to the standard directories), instruct the linker
|
||||
to look in `/bar/mylib' for libraries, pass the -O3 optimization
|
||||
switch to the compiler, and link against libfoo.a and libbar.a
|
||||
switch to the compiler, and link against libfoo and libbar
|
||||
libraries in addition to the standard ones.
|
||||
|
||||
For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
|
||||
@ -436,14 +412,9 @@ Emacs source code in the directory that `configure' is in.
|
||||
To build in a separate directory, you must use a version of `make'
|
||||
that supports the `VPATH' variable, such as GNU `make'.
|
||||
|
||||
3c) Some people try to build in a separate directory by filling
|
||||
it full of symlinks to the files in the real source directory.
|
||||
If you do that, `make all' does work, but `make install' fails:
|
||||
it copies the symbolic links rather than the actual files.
|
||||
|
||||
As far as is known, there is no particular reason to use
|
||||
a directory full of links rather than use the standard GNU
|
||||
facilities to build in a separate directory (see 3b above).
|
||||
(Do not try to build in a separate directory by creating many links
|
||||
to the real source directory--there is no need, and installation will
|
||||
fail.)
|
||||
|
||||
4) Look at `./lisp/paths.el'; if some of those values are not right
|
||||
for your system, set up the file `./lisp/site-init.el' with Emacs
|
||||
@ -454,7 +425,7 @@ rather than `defvar', as used by `./lisp/paths.el'. For example,
|
||||
(setq news-inews-program "/usr/bin/inews")
|
||||
|
||||
is how you would override the default value of the variable
|
||||
news-inews-program (which is "/usr/local/inews").
|
||||
news-inews-program.
|
||||
|
||||
Before you override a variable this way, *look at the value* that the
|
||||
variable gets by default! Make sure you know what kind of value the
|
||||
@ -473,18 +444,11 @@ If you set load-path to a different value in site-init.el or
|
||||
site-load.el, Emacs will use *precisely* that value when it starts up
|
||||
again. If you do this, you are on your own!
|
||||
|
||||
Note that, on some systems, the code you place in site-init.el must
|
||||
not use expand-file-name or any other function which may look
|
||||
something up in the system's password and user information database.
|
||||
See `./etc/PROBLEMS' for more details on which systems this affects.
|
||||
|
||||
The `site-*.el' files are nonexistent in the distribution. You do not
|
||||
need to create them if you have nothing to put in them.
|
||||
|
||||
6) Refer to the file `./etc/TERMS' for information on fields you may
|
||||
wish to add to various termcap entries. The files `./etc/termcap.ucb'
|
||||
and `./etc/termcap.dat' may already contain appropriately-modified
|
||||
entries.
|
||||
wish to add to various termcap entries. (This is unlikely to be necessary.)
|
||||
|
||||
7) Run `make' in the top directory of the Emacs distribution to finish
|
||||
building Emacs in the standard way. The final executable file is
|
||||
@ -498,11 +462,11 @@ are installed in the following directories:
|
||||
|
||||
`/usr/local/bin' holds the executable programs users normally run -
|
||||
`emacs', `etags', `ctags', `b2m', `emacsclient',
|
||||
and `rcs-checkin'.
|
||||
`grep-changelog', and `rcs-checkin'.
|
||||
|
||||
`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
|
||||
`VERSION' stands for the number of the Emacs version
|
||||
you are installing, like `18.59' or `19.27'. Since the
|
||||
you are installing, like `23.1' or `23.2'. Since the
|
||||
Lisp library changes from one version of Emacs to
|
||||
another, including the version number in the path
|
||||
allows you to have several versions of Emacs installed
|
||||
@ -510,18 +474,17 @@ are installed in the following directories:
|
||||
make Emacs unavailable while installing a new version.
|
||||
|
||||
`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
|
||||
file, the `yow' database, and other
|
||||
architecture-independent files Emacs might need while
|
||||
running. VERSION is as specified for `.../lisp'.
|
||||
file, and other architecture-independent files Emacs
|
||||
might need while running.
|
||||
|
||||
`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
|
||||
programs used by Emacs that users are not expected to
|
||||
run themselves.
|
||||
`VERSION' is the number of the Emacs version you are
|
||||
installing, and `CONFIGURATION-NAME' is the argument
|
||||
you gave to the `configure' program to identify the
|
||||
installing, and `CONFIGURATION-NAME' is the value
|
||||
deduced by the `configure' program to identify the
|
||||
architecture and operating system of your machine,
|
||||
like `mips-dec-ultrix' or `sparc-sun-sunos'. Since
|
||||
like `i686-pc-linux-gnu' or `sparc-sun-sunos'. Since
|
||||
these files are specific to the version of Emacs,
|
||||
operating system, and architecture in use, including
|
||||
the configuration name in the path allows you to have
|
||||
@ -533,10 +496,9 @@ are installed in the following directories:
|
||||
`/usr/local/share/info' holds the on-line documentation for Emacs,
|
||||
known as "info files". Many other GNU programs are
|
||||
documented using info files as well, so this directory
|
||||
stands apart from the other, Emacs-specific
|
||||
directories.
|
||||
stands apart from the other, Emacs-specific directories.
|
||||
|
||||
`/usr/local/man/man1' holds the man pages for the programs installed
|
||||
`/usr/local/share/man/man1' holds the man pages for the programs installed
|
||||
in `/usr/local/bin'.
|
||||
|
||||
Any version of Emacs, whether installed or not, also looks for Lisp
|
||||
@ -599,10 +561,9 @@ Here is a complete list of the variables you may want to set.
|
||||
defaults to /usr/local/share. We create the following
|
||||
subdirectories under `datadir':
|
||||
- `emacs/VERSION/lisp', containing the Emacs Lisp library, and
|
||||
- `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
|
||||
file, and the `yow' database.
|
||||
- `emacs/VERSION/etc', containing the tutorials, DOC file, etc.
|
||||
`VERSION' is the number of the Emacs version you are installing,
|
||||
like `18.59' or `19.0'. Since these files vary from one version
|
||||
like `23.1' or `23.2'. Since these files vary from one version
|
||||
of Emacs to another, including the version number in the path
|
||||
allows you to have several versions of Emacs installed at the
|
||||
same time; this means that you don't have to make Emacs
|
||||
@ -615,29 +576,23 @@ Here is a complete list of the variables you may want to set.
|
||||
programs used by Emacs that users are not expected to run
|
||||
themselves.
|
||||
`VERSION' is the number of the Emacs version you are installing,
|
||||
and `CONFIGURATION-NAME' is the argument you gave to the
|
||||
and `CONFIGURATION-NAME' is the value deduced by the
|
||||
`configure' program to identify the architecture and operating
|
||||
system of your machine, like `mips-dec-ultrix' or
|
||||
`sparc-sun-sunos'. Since these files are specific to the version
|
||||
of Emacs, operating system, and architecture in use, including
|
||||
the configuration name in the path allows you to have several
|
||||
versions of Emacs for any mix of machines and operating systems
|
||||
installed at the same time; this is useful for sites at which
|
||||
different kinds of machines share the file system Emacs is
|
||||
installed on.
|
||||
system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'.
|
||||
Since these files are specific to the version of Emacs,
|
||||
operating system, and architecture in use, including the
|
||||
configuration name in the path allows you to have several
|
||||
versions of Emacs for any mix of machines and operating
|
||||
systems installed at the same time; this is useful for sites
|
||||
at which different kinds of machines share the file system
|
||||
Emacs is installed on.
|
||||
|
||||
`infodir' indicates where to put the info files distributed with
|
||||
Emacs; it defaults to `/usr/local/share/info'.
|
||||
|
||||
`mandir' indicates where to put the man pages for Emacs and its
|
||||
utilities (like `etags'); it defaults to
|
||||
`/usr/local/man/man1'.
|
||||
|
||||
`manext' gives the extension the man pages should be installed with.
|
||||
It should contain a period, followed by the appropriate
|
||||
digit. It defaults to `.1'. For example given the default
|
||||
values for `mandir' and `manext', the Emacs man page would be
|
||||
installed as `/usr/local/man/man1/emacs.1'.
|
||||
`/usr/local/share/man/man1'.
|
||||
|
||||
`prefix' doesn't give a path for any specific part of Emacs; instead,
|
||||
its value is used to determine the defaults for all the
|
||||
@ -659,7 +614,7 @@ Here is a complete list of the variables you may want to set.
|
||||
path variables - `bindir' and `libexecdir'.
|
||||
|
||||
The above variables serve analogous purposes in the makefiles for all
|
||||
GNU software; this variable is specific to Emacs.
|
||||
GNU software; the following variable is specific to Emacs.
|
||||
|
||||
`archlibdir' indicates where Emacs installs and expects the executable
|
||||
files and other architecture-dependent data it uses while
|
||||
@ -675,7 +630,7 @@ settings persist, you can edit them into the `Makefile' in the top
|
||||
directory, but be aware that running the `configure' program erases
|
||||
`Makefile' and rebuilds it from `Makefile.in'.
|
||||
|
||||
The path for finding Lisp files is specified in src/paths.h,
|
||||
The path for finding Lisp files is specified in src/epaths.h,
|
||||
a file which is generated by running configure. To change the path,
|
||||
you can edit the definition of PATH_LOADSEARCH in that file
|
||||
before you run `make'.
|
||||
@ -717,15 +672,15 @@ BUILDING GNU EMACS BY HAND
|
||||
Once Emacs is configured, running `make' in the top directory performs
|
||||
the following steps.
|
||||
|
||||
1) Run `make src/paths.h' in the top directory. This produces
|
||||
`./src/paths.h' from the template file `./src/paths.in', changing
|
||||
1) Run `make epaths-force' in the top directory. This produces
|
||||
`./src/epaths.h' from the template file `./src/epaths.in', changing
|
||||
the paths to the values specified in `./Makefile'.
|
||||
|
||||
2) Go to directory `./lib-src' and run `make'. This creates
|
||||
executables named `ctags' and `etags' and `make-docfile' and
|
||||
`digest-doc' and `test-distrib'. And others.
|
||||
|
||||
3) Go to directory `./src' and Run `make'. This refers to files in
|
||||
3) Go to directory `./src' and run `make'. This refers to files in
|
||||
the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
|
||||
`../lib-src'.
|
||||
|
||||
@ -737,8 +692,7 @@ It also creates a file in `./etc' whose name is `DOC' followed by the
|
||||
current Emacs version. This file contains documentation strings for
|
||||
all the functions in Emacs. Each time you run make to make a new
|
||||
emacs, a new DOC file with a new name is made. You must keep the DOC
|
||||
file for an Emacs version as long as you keep using that Emacs
|
||||
version.
|
||||
file for an Emacs version as long as you keep using that Emacs version.
|
||||
|
||||
|
||||
INSTALLATION BY HAND
|
||||
@ -747,7 +701,7 @@ The steps below are done by running `make install' in the main
|
||||
directory of the Emacs distribution.
|
||||
|
||||
1) Copy `./lisp' and its subdirectories, `./etc', and the executables
|
||||
in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
|
||||
in `./lib-src' to their final destinations, as selected in `./src/epaths.h'.
|
||||
|
||||
Strictly speaking, not all of the executables in `./lib-src' need be copied.
|
||||
- The programs `fakemail', `hexl', `movemail', `profile', `rcs2log',
|
||||
@ -778,8 +732,7 @@ You can delete `./src/temacs'.
|
||||
`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
|
||||
intended for users to run.
|
||||
|
||||
5) Copy the man pages in `./etc' for emacs, ctags, and etags into the
|
||||
appropriate man directories.
|
||||
5) Copy the man pages in `./doc/man' into the appropriate man directory.
|
||||
|
||||
6) The files in the `./src' subdirectory, except for `emacs', are not
|
||||
used by Emacs once it is built. However, it is very desirable to keep
|
||||
@ -788,8 +741,8 @@ the source on line for debugging.
|
||||
|
||||
PROBLEMS
|
||||
|
||||
See the file PROBLEMS in etc subdirectory for a list of various
|
||||
problems sometimes encountered, and what to do about them.
|
||||
See the file `./etc/PROBLEMS' for a list of various problems sometimes
|
||||
encountered, and what to do about them.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
2010-06-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* basic.texi (Inserting Text): Minor clarification. (Bug#6374)
|
||||
|
||||
* basic.texi (Inserting Text): Fix typo.
|
||||
|
||||
2010-06-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* ack.texi (Acknowledgments):
|
||||
|
@ -1,6 +1,7 @@
|
||||
@c This is part of the Emacs manual.
|
||||
@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
|
||||
@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
@node Basic, Minibuffer, Exiting, Top
|
||||
@chapter Basic Editing Commands
|
||||
@ -92,9 +93,9 @@ of overwriting with it.
|
||||
@vindex read-quoted-char-radix
|
||||
@noindent
|
||||
To use decimal or hexadecimal instead of octal, set the variable
|
||||
@code{read-quoted-char-radix} to 10 or 16. If the radix is greater
|
||||
than 10, some letters starting with @kbd{a} serve as part of a
|
||||
character code, just like digits.
|
||||
@code{read-quoted-char-radix} to 10 or 16. If the radix is 16,
|
||||
the letters @kbd{a} to @kbd{f} serve as part of a character code,
|
||||
just like digits. Case is ignored.
|
||||
|
||||
A numeric argument tells @kbd{C-q} how many copies of the quoted
|
||||
character to insert (@pxref{Arguments}).
|
||||
@ -104,7 +105,7 @@ character to insert (@pxref{Arguments}).
|
||||
@cindex Unicode
|
||||
Instead of @kbd{C-q}, you can use @kbd{C-x 8 @key{RET}}
|
||||
(@code{ucs-insert}) to insert a character based on its Unicode name or
|
||||
code-point. This commands prompts for a character to insert, using
|
||||
code-point. This command prompts for a character to insert, using
|
||||
the minibuffer; you can specify the character using either (i) the
|
||||
character's name in the Unicode standard, or (ii) the character's
|
||||
code-point in the Unicode standard. If you specify the character's
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-06-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* idlwave.texi (Load-Path Shadows):
|
||||
* org.texi (Handling links): Fix typos.
|
||||
|
||||
2010-06-07 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* gnus.texi (Interactive): Explain effect of gnus-expert-user better.
|
||||
|
@ -3717,7 +3717,7 @@ C-i}. Here are the different routines (also available in the Menu
|
||||
|
||||
@table @asis
|
||||
@item @kbd{M-x idlwave-list-buffer-load-path-shadows}
|
||||
This commands checks the names of all routines defined in the current
|
||||
This command checks the names of all routines defined in the current
|
||||
buffer for shadowing conflicts with other routines accessible to
|
||||
IDLWAVE. The command also has a key binding: @kbd{C-c C-b}
|
||||
@item @kbd{M-x idlwave-list-shell-load-path-shadows}.
|
||||
|
@ -2978,7 +2978,7 @@ link and description parts of the link.
|
||||
Open link at point. This will launch a web browser for URLs (using
|
||||
@command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
|
||||
the corresponding links, and execute the command in a shell link. When the
|
||||
cursor is on an internal link, this commands runs the corresponding search.
|
||||
cursor is on an internal link, this command runs the corresponding search.
|
||||
When the cursor is on a TAG list in a headline, it creates the corresponding
|
||||
TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
|
||||
date. Furthermore, it will visit text and remote files in @samp{file:} links
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-06-12 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* tutorials/TUTORIAL.bg, tutorials/TUTORIAL.es: Fix typos.
|
||||
|
||||
2010-06-09 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* NEWS: Add notifications.el.
|
||||
|
17
etc/NEWS
17
etc/NEWS
@ -125,6 +125,19 @@ trashing. This avoids inadvertently trashing temporary files.
|
||||
*** Calling `delete-file' or `delete-directory' with a prefix argument
|
||||
now forces true deletion, regardless of `delete-by-moving-to-trash'.
|
||||
|
||||
** New option `list-colors-sort' defines the color sort order
|
||||
for `list-colors-display'.
|
||||
|
||||
** An Emacs Lisp package manager is now included.
|
||||
This is a convenient way to download and install additional packages,
|
||||
from elpa.gnu.org. `M-x package-list-packages' shows a list of
|
||||
packages, which can be selected for installation.
|
||||
|
||||
*** By default, all installed packages are loaded and activated
|
||||
automatically when Emacs starts up. To disable this, set
|
||||
`package-enable-at-startup' to nil. To change which packages are
|
||||
loaded, customize `package-load-list'.
|
||||
|
||||
|
||||
* Editing Changes in Emacs 24.1
|
||||
|
||||
@ -254,7 +267,11 @@ Notifications API. It requires D-Bus for communication.
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 24.1
|
||||
|
||||
** A backquote not followed by a space is now always treated as new-style.
|
||||
|
||||
** Test for special mode-class was moved from view-file to view-buffer.
|
||||
FIXME: This only says what was changed, but not what are the
|
||||
programmer-visible consequences.
|
||||
|
||||
** Passing a nil argument to a minor mode function now turns the mode
|
||||
ON unconditionally.
|
||||
|
@ -760,7 +760,7 @@ not try to give commands in it when no longer really in the debugger.
|
||||
* New function `switch-to-buffer-other-window'.
|
||||
|
||||
This is the new primitive to select a specified buffer (the
|
||||
argument) in another window. It is not quite the same as
|
||||
argument) in another window. It is not quite the same as
|
||||
`pop-to-buffer', because it is guaranteed to create another
|
||||
window (assuming there is room on the screen) so that it can
|
||||
leave the current window's old buffer displayed as well.
|
||||
@ -971,7 +971,7 @@ once again "unmodified".
|
||||
This command creates an inferior Lisp process whose input and output
|
||||
appear in the Emacs buffer named `*lisp*'. That buffer uses a major mode
|
||||
called inferior-lisp-mode, which has many of the commands of lisp-mode
|
||||
and those of shell-mode. Calls the value of shell-mode-hook and
|
||||
and those of shell-mode. Calls the value of shell-mode-hook and
|
||||
lisp-mode-hook, in that order, if non-nil.
|
||||
|
||||
Meanwhile, in lisp-mode, the command C-M-x is defined to
|
||||
@ -1421,7 +1421,7 @@ Changes in Emacs 15
|
||||
of the executing emacs, for use in run-time conditionalization.
|
||||
|
||||
The function featurep of one argument may be used to test for the
|
||||
presence of a feature. It is just the same as
|
||||
presence of a feature. It is just the same as
|
||||
(not (null (memq FEATURE features))) where FEATURE is its argument.
|
||||
For example, (if (featurep 'magic-window-hack)
|
||||
(transmogrify-window 'vertical)
|
||||
@ -1541,13 +1541,13 @@ Changes in Emacs 15
|
||||
|
||||
This function returns a cons cell whose car is the object produced
|
||||
by reading from the string and whose cdr is a number giving the
|
||||
index in the string of the first character not read. That index may
|
||||
index in the string of the first character not read. That index may
|
||||
be passed as the second argument to a later call to read-from-string
|
||||
to read the next form represented by the string.
|
||||
|
||||
In addition, the function read now accepts a string as its argument.
|
||||
In this case, it calls read-from-string on the whole string, and
|
||||
returns the car of the result. (ie the actual object read.)
|
||||
returns the car of the result (ie the actual object read.)
|
||||
|
||||
|
||||
|
||||
|
@ -27,6 +27,10 @@ with a prefix argument or by typing C-u C-h C-n.
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 23.3
|
||||
|
||||
---
|
||||
** The appt-add command takes an optional argument for the warning time.
|
||||
This can be used in place of the default appt-message-warning-time.
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 23.3
|
||||
|
||||
|
@ -625,7 +625,7 @@ C-f.
|
||||
Емакс сесията.
|
||||
|
||||
>> Въведете C-x b *Messages* <Return>, за да видите буфера със
|
||||
съобщенията. След това въведете C-x C-b TUTORIAL <Return>, за да
|
||||
съобщенията. След това въведете C-x b TUTORIAL <Return>, за да
|
||||
се върнете към това въведение.
|
||||
|
||||
Ако направите промени в текста на един файл и тогава намерите друг
|
||||
|
@ -630,7 +630,7 @@ contiene los mensajes que han aparecido en la l
|
||||
su sesión de Emacs.
|
||||
|
||||
>> Teclee C-x b *Messages* <Return> para ver el buffer de mensajes.
|
||||
Luego teclee C-b TUTORIAL <Return> para regresar a este tutorial.
|
||||
Luego teclee C-x b TUTORIAL <Return> para regresar a este tutorial.
|
||||
|
||||
Si hace cambios al texto de un archivo, y luego encuentra otro
|
||||
archivo, esto no guarda el primer archivo. Sus cambios permanecerán
|
||||
|
14328
lisp/ChangeLog
14328
lisp/ChangeLog
File diff suppressed because it is too large
Load Diff
@ -1,256 +0,0 @@
|
||||
2006-12-04 Miles Bader <miles@gnu.org>
|
||||
|
||||
* Makefile.in (COMPILE_FIRST_STACK_DEPTH): New variable.
|
||||
(compile, compile-always): Use it.
|
||||
|
||||
2005-10-24 Miles Bader <miles@gnu.org>
|
||||
|
||||
* subr.el (functionp): Re-remove.
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-closure): Add optional
|
||||
ADD-LAMBDA argument, which we just pass to `byte-compile-lambda'.
|
||||
(byte-compile-defun): Use ADD-LAMBDA arg to `byte-compile-closure'
|
||||
instead of adding lambda ourselves.
|
||||
|
||||
2004-08-09 Miles Bader <miles@gnu.org>
|
||||
|
||||
Changes from merging the funvec patch:
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-make-closure): Use `curry'
|
||||
instead of `vector' to create compiled closures.
|
||||
|
||||
Merge funvec patch.
|
||||
|
||||
2004-04-29 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-top-level): Add new entries
|
||||
to `byte-compile-lexical-environment' at the start, not end.
|
||||
(byte-compile-delay-out): Correctly default STACK-ADJUST to zero.
|
||||
|
||||
* emacs-lisp/byte-opt.el (byte-opt-update-stack-params): Don't
|
||||
crash on no-op lapcode entries (car is nil).
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-make-lambda-lexenv):
|
||||
Push a lexvar onto lexenv, not a vinfo!
|
||||
|
||||
2004-04-11 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-top-level): Correctly
|
||||
analyze lexically-bound arguments.
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze):
|
||||
Use `append' instead of `nconc'.
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo): Don't
|
||||
use backquote to make a mutable data-structure.
|
||||
(byte-compile-lvarinfo-num-refs, byte-compile-lvarinfo-num-sets):
|
||||
Renamed to use `num-' instead of `num'.
|
||||
(byte-compile-make-lambda-lexenv): Adjusted accordingly.
|
||||
|
||||
2004-04-10 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-compute-lforminfo):
|
||||
Look at variable's global specialp state too.
|
||||
|
||||
2004-04-09 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/byte-opt.el (byte-optimize-lapcode): Default
|
||||
initial-stack-depth to 0.
|
||||
(byte-optimize-lapcode): Discard the right number of values in
|
||||
the stack-set+discard-->discard optimization.
|
||||
|
||||
2004-04-02 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/lisp-mode.el (eval-last-sexp-1): Setup the lexical
|
||||
environment if lexical-binding is enabled.
|
||||
|
||||
2003-10-14 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/macroexp.el (macroexpand-all-1): Special-case
|
||||
`backquote-list*' to avoid stack overflows.
|
||||
|
||||
2003-04-04 Miles Bader <miles@gnu.org>
|
||||
|
||||
* help-fns.el (help-function-arglist): Handle interpreted closures.
|
||||
|
||||
2002-11-20 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-stack-adjustment):
|
||||
Correctly handle discardN* operators.
|
||||
* emacs-lisp/byte-opt.el (byte-optimize-lapcode): Fix stack-depth
|
||||
tracking errors.
|
||||
|
||||
2002-08-26 Miles Bader <miles@gnu.org>
|
||||
|
||||
* international/mule.el (make-char): Macroexpand call to
|
||||
charset-id constructed by `byte-compile' hook.
|
||||
|
||||
* emacs-lisp/macroexp.el (macroexpand-all-1): Expand defconst value.
|
||||
|
||||
* emacs-lisp/byte-opt.el (byte-opt-update-stack-params): New macro.
|
||||
(byte-optimize-lapcode): Keep track of stack-depth in final pass too.
|
||||
Add more optimizations for lexical binding.
|
||||
(byte-compile-inline-expand): Macroexpand result of inlining.
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-lambda): Update call to
|
||||
byte-compile-closure-initial-lexenv-p.
|
||||
(byte-discardN-preserve-tos): Alias to byte-discardN.
|
||||
(byte-compile-push-binding-init): Don't push unused variables on
|
||||
init-lexenv.
|
||||
(byte-compile-push-binding-init): Don't use LFORMINFO if it's nil.
|
||||
(byte-compile-lambda): Don't look at lexical environment unless
|
||||
we're using lexical binding.
|
||||
(byte-compile-defmacro): Correctly generate macros.
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-unbind): Optimize the
|
||||
dynamic-bindings-only case.
|
||||
(byte-compile-bind): Don't special-case unused lexical variables.
|
||||
|
||||
* emacs-lisp/disass.el (disassemble-1): Print arg for discardN ops.
|
||||
|
||||
2002-08-19 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Handle
|
||||
`byte-discardN-preserve-tos' pseudo-op.
|
||||
(byte-compile-side-effect-and-error-free-ops): Add `byte-stack-ref'.
|
||||
(byte-compile-side-effect-free-ops): Add `byte-vec-ref'.
|
||||
(byte-optimize-lapcode): Add some cases for stack-set/ref ops.
|
||||
Add tracking of stack-depth. Unfinished code to collapse
|
||||
lexical-unbinding sequences.
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-lapcode): Handle
|
||||
`byte-discardN-preserve-tos' pseudo-op.
|
||||
(byte-compile-top-level): If there are lexical args, output a TAG
|
||||
op to record the initial stack-depth for the optimizer.
|
||||
|
||||
2002-08-17 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-discardN): Add byte-defop.
|
||||
(byte-compile-lapcode): Include byte-discardN.
|
||||
(byte-compile-lambda): Fixup closure detection.
|
||||
(byte-compile-top-level): Handle arguments for a lexical lambda.
|
||||
(byte-compile-lexical-variable-ref, byte-compile-variable-ref)
|
||||
(byte-compile-variable-set): Use byte-compile-stack-set/ref.
|
||||
(byte-compile-discard): Add new parameters NUM and PRESERVE-TOS.
|
||||
(byte-compile-stack-ref, byte-compile-stack-set): New functions.
|
||||
(byte-compile-push-binding-init): Get the variable list properly
|
||||
from LFORMINFO.
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze):
|
||||
Ignore setq'd variables we're not interested in.
|
||||
(byte-compile-make-lambda-lexenv): Add assertion that closed-over
|
||||
variables be heap allocated.
|
||||
(byte-compile-closure-initial-lexenv-p): Renamed from
|
||||
byte-compile-closure-lexenv-p.
|
||||
(byte-compile-non-stack-bindings-p): Get the variable list
|
||||
properly from LFORMINFO.
|
||||
(byte-compile-maybe-push-heap-environment): Handle the
|
||||
no-closed-over-variables case correctly.
|
||||
(byte-compile-bind): Use byte-compile-stack-set/ref.
|
||||
Don't bother modifying INIT-LEXENV as no one will see the changes.
|
||||
(byte-compile-unbind): Call `byte-compile-discard' to handle
|
||||
unbinding lexical bindings.
|
||||
|
||||
* emacs-lisp/disass.el (disassemble-internal): Handle closures.
|
||||
(disassemble-1): Handle new bytecodes.
|
||||
* emacs-lisp/byte-opt.el (disassemble-offset): Handle new bytecodes.
|
||||
|
||||
2002-06-16 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/macroexp.el (macroexp-accumulate): New macro.
|
||||
(macroexpand-all-forms, macroexpand-all-clauses): Use it.
|
||||
* Makefile.in (compile): Undo previous change.
|
||||
|
||||
2002-06-14 Miles Bader <miles@gnu.org>
|
||||
|
||||
* Makefile.in (COMPILE_FIRST): Add `emacs-lisp/macroexp.el'.
|
||||
(compile): Add a special case that compiles `emacs-lisp/macroexp.el'
|
||||
with an increased max-lisp-eval-depth.
|
||||
|
||||
* emacs-lisp/bytecomp.el: Provide `bytecomp-preload', at the
|
||||
beginning of the file. Require `byte-lexbind' at compile time.
|
||||
Add a few doc string.
|
||||
(byte-compile-push-bytecodes)
|
||||
(byte-compile-push-bytecode-const2): New macros.
|
||||
(byte-compile-lapcode): Use them. Do general code cleanup.
|
||||
(byte-compile-initial-macro-environment): Expand macros in
|
||||
byte-compile-eval before passing to byte-compile-top-level.
|
||||
(byte-compile): Use the `byte-compile-initial-macro-environment'.
|
||||
|
||||
* emacs-lisp/byte-lexbind.el: Require `bytecomp-preload' instead of
|
||||
`bytecomp'.
|
||||
(byte-compile-bind): Use `byte-compile-dynamic-variable-bind' to bind
|
||||
dynamic variables.
|
||||
(byte-compile-maybe-push-heap-environment): Fix function name typo.
|
||||
|
||||
2002-06-13 Miles Bader <miles@gnu.org>
|
||||
|
||||
Byte compiler lexical binding support (not finished yet):
|
||||
* emacs-lisp/bytecomp.el: Require `macroexp'.
|
||||
(byte-compile-lexical-environment)
|
||||
(byte-compile-current-heap-environment)
|
||||
(byte-compile-current-num-closures): New variables.
|
||||
(0, 178, 179, 180, 181): New byte-opcodes.
|
||||
(byte-compile-lapcode): Handle stack-ref/set opcodes. Signal an
|
||||
error if a delay-output placeholder is not filled in yet.
|
||||
(byte-compile-file-form, byte-compile): Expand all macros with
|
||||
`macroexpand-all'.
|
||||
(byte-compile-file-form-defsubst, byte-compile-form): Don't expand
|
||||
macros here.
|
||||
(byte-compile-make-lambda-lexenv): Autoload.
|
||||
(byte-compile-lambda): Initial code for handling lexically-bound
|
||||
arguments and closures; doesn't work yet.
|
||||
(byte-compile-closure-code-p, byte-compile-make-closure)
|
||||
(byte-compile-closure): New functions.
|
||||
(byte-compile-check-variable, byte-compile-dynamic-variable-op)
|
||||
(byte-compile-dynamic-variable-bind)
|
||||
(byte-compile-lexical-variable-ref, byte-compile-variable-set):
|
||||
New functions.
|
||||
(byte-compile-variable-ref): Remove second argument. Now only
|
||||
handles real variable references (not setting or binding).
|
||||
(byte-compile-push-unknown-constant)
|
||||
(byte-compile-resolve-unknown-constant): New functions.
|
||||
(byte-compile-funarg, byte-compile-funarg-2): Functions removed.
|
||||
(byte-compile-function-form): Use either `byte-compile-constant'
|
||||
or `byte-compile-closure'.
|
||||
(byte-compile-setq): Use `byte-compile-variable-set' instead of
|
||||
`byte-compile-variable-ref'.
|
||||
(apply, mapcar, mapatoms, mapconcat, mapc, sort):
|
||||
`byte-defop-compiler-1's removed.
|
||||
(byte-compile-while): Make sure lexically-bound variables inside
|
||||
the loop don't get stored in an environment outside the loop.
|
||||
(byte-compile-compute-lforminfo): Autoload.
|
||||
(byte-compile-push-binding-init): New function.
|
||||
(byte-compile-let, byte-compile-let*): Handle lexical binding.
|
||||
(byte-compile-defun): Use `byte-compile-closure' to do the work.
|
||||
(byte-compile-defmacro): Use `byte-compile-make-closure'.
|
||||
(byte-compile-defvar): Expand the generated call to `push' since
|
||||
we're past macroexpansion already.
|
||||
(byte-compile-stack-adjustment): New function.
|
||||
(byte-compile-out): Make second arg optional. Rewrite for clarity.
|
||||
(byte-compile-delay-out, byte-compile-delayed-out): New functions.
|
||||
|
||||
* emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't
|
||||
expand macros here.
|
||||
|
||||
* emacs-lisp/macroexp.el (macroexpand-all-1): Expand defmacro forms.
|
||||
|
||||
* emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo)
|
||||
(byte-compile-lforminfo-add-var)
|
||||
(byte-compile-lforminfo-note-closure)
|
||||
(byte-compile-compute-lforminfo)
|
||||
(byte-compile-lforminfo-from-lambda)
|
||||
(byte-compile-lforminfo-analyze)
|
||||
(byte-compile-heapenv-add-accessible-env)
|
||||
(byte-compile-heapenv-ensure-access)
|
||||
(byte-compile-rearrange-let-clauses, byte-compile-bind)
|
||||
(byte-compile-unbind): Fix a bunch of typos.
|
||||
|
||||
2002-06-12 Miles Bader <miles@gnu.org>
|
||||
|
||||
* emacs-lisp/byte-lexbind.el, emacs-lisp/macroexp.el: New files.
|
||||
|
||||
* subr.el (functionp): Function removed (now a subr).
|
||||
* help-fns.el (describe-function-1): Handle interpreted closures.
|
||||
|
||||
;; arch-tag: bd1b5b8b-fdb2-425d-9ac2-20689fb0ee70
|
14293
lisp/ChangeLog.trunk
Normal file
14293
lisp/ChangeLog.trunk
Normal file
File diff suppressed because it is too large
Load Diff
@ -663,7 +663,7 @@
|
||||
(cons 'vec (cons (nth 1 facs) (cons (list 'vec fac pow)
|
||||
(cdr (cdr facs)))))
|
||||
(cons 'vec (cons (list 'vec fac pow) (cdr facs))))))))
|
||||
(math-mul (math-pow fac pow) facs)))
|
||||
(math-mul (math-pow fac pow) (math-factor-protect facs))))
|
||||
|
||||
(defun math-factor-poly-coefs (p &optional square-free) ; uses "x"
|
||||
(let (t1 t2 temp)
|
||||
|
@ -183,16 +183,25 @@ Only relevant if reminders are being displayed in a window."
|
||||
(defconst appt-buffer-name "*appt-buf*"
|
||||
"Name of the appointments buffer.")
|
||||
|
||||
;; TODO Turn this into an alist? It would be easier to add more
|
||||
;; optional elements.
|
||||
;; TODO There should be a way to set WARNTIME (and other properties)
|
||||
;; from the diary-file. Implementing that would be a good reason
|
||||
;; to change this to an alist.
|
||||
(defvar appt-time-msg-list nil
|
||||
"The list of appointments for today.
|
||||
Use `appt-add' and `appt-delete' to add and delete appointments.
|
||||
The original list is generated from today's `diary-entries-list', and
|
||||
can be regenerated using the function `appt-check'.
|
||||
Each element of the generated list has the form (MINUTES STRING [FLAG]); where
|
||||
MINUTES is the time in minutes of the appointment after midnight, and
|
||||
STRING is the description of the appointment.
|
||||
FLAG, if non-nil, says that the element was made with `appt-add'
|
||||
so calling `appt-make-list' again should preserve it.")
|
||||
Each element of the generated list has the form
|
||||
\(MINUTES STRING [FLAG] [WARNTIME])
|
||||
where MINUTES is the time in minutes of the appointment after midnight,
|
||||
and STRING is the description of the appointment.
|
||||
FLAG and WARNTIME can only be present if the element was made
|
||||
with `appt-add'. A non-nil FLAG indicates that the element was made
|
||||
with `appt-add', so calling `appt-make-list' again should preserve it.
|
||||
If WARNTIME is non-nil, it is an integer to use in place
|
||||
of `appt-message-warning-time'.")
|
||||
|
||||
(defconst appt-max-time (1- (* 24 60))
|
||||
"11:59pm in minutes - number of minutes in a day minus 1.")
|
||||
@ -313,7 +322,7 @@ displayed in a window:
|
||||
(zerop (mod prev-appt-display-count appt-display-interval))))
|
||||
;; Non-nil means only update the interval displayed in the mode line.
|
||||
(mode-line-only (unless full-check appt-now-displayed))
|
||||
now cur-comp-time appt-comp-time)
|
||||
now cur-comp-time appt-comp-time appt-warn-time)
|
||||
(when (or full-check mode-line-only)
|
||||
(save-excursion
|
||||
;; Convert current time to minutes after midnight (12.01am = 1).
|
||||
@ -353,6 +362,8 @@ displayed in a window:
|
||||
;; calculate the number of minutes until the appointment.
|
||||
(when (and appt-issue-message appt-time-msg-list)
|
||||
(setq appt-comp-time (caar (car appt-time-msg-list))
|
||||
appt-warn-time (or (nth 3 (car appt-time-msg-list))
|
||||
appt-message-warning-time)
|
||||
min-to-app (- appt-comp-time cur-comp-time))
|
||||
(while (and appt-time-msg-list
|
||||
(< appt-comp-time cur-comp-time))
|
||||
@ -360,21 +371,21 @@ displayed in a window:
|
||||
(if appt-time-msg-list
|
||||
(setq appt-comp-time (caar (car appt-time-msg-list)))))
|
||||
;; If we have an appointment between midnight and
|
||||
;; `appt-message-warning-time' minutes after midnight, we
|
||||
;; `appt-warn-time' minutes after midnight, we
|
||||
;; must begin to issue a message before midnight. Midnight
|
||||
;; is considered 0 minutes and 11:59pm is 1439
|
||||
;; minutes. Therefore we must recalculate the minutes to
|
||||
;; appointment variable. It is equal to the number of
|
||||
;; minutes before midnight plus the number of minutes after
|
||||
;; midnight our appointment is.
|
||||
(if (and (< appt-comp-time appt-message-warning-time)
|
||||
(> (+ cur-comp-time appt-message-warning-time)
|
||||
(if (and (< appt-comp-time appt-warn-time)
|
||||
(> (+ cur-comp-time appt-warn-time)
|
||||
appt-max-time))
|
||||
(setq min-to-app (+ (- (1+ appt-max-time) cur-comp-time)
|
||||
appt-comp-time)))
|
||||
;; Issue warning if the appointment time is within
|
||||
;; appt-message-warning time.
|
||||
(when (and (<= min-to-app appt-message-warning-time)
|
||||
(when (and (<= min-to-app appt-warn-time)
|
||||
(>= min-to-app 0))
|
||||
(setq appt-now-displayed t
|
||||
appt-display-count (1+ prev-appt-display-count))
|
||||
@ -470,14 +481,28 @@ Usually just deletes the appointment buffer."
|
||||
"[0-9]?[0-9]\\(h\\([0-9][0-9]\\)?\\|[:.][0-9][0-9]\\)\\(am\\|pm\\)?")
|
||||
|
||||
;;;###autoload
|
||||
(defun appt-add (new-appt-time new-appt-msg)
|
||||
"Add an appointment for today at NEW-APPT-TIME with message NEW-APPT-MSG.
|
||||
The time should be in either 24 hour format or am/pm format."
|
||||
(interactive "sTime (hh:mm[am/pm]): \nsMessage: ")
|
||||
(unless (string-match appt-time-regexp new-appt-time)
|
||||
(defun appt-add (time msg &optional warntime)
|
||||
"Add an appointment for today at TIME with message MSG.
|
||||
The time should be in either 24 hour format or am/pm format.
|
||||
Optional argument WARNTIME is an integer (or string) giving the number
|
||||
of minutes before the appointment at which to start warning.
|
||||
The default is `appt-message-warning-time'."
|
||||
(interactive "sTime (hh:mm[am/pm]): \nsMessage:
|
||||
sMinutes before the appointment to start warning: ")
|
||||
(unless (string-match appt-time-regexp time)
|
||||
(error "Unacceptable time-string"))
|
||||
(let ((time-msg (list (list (appt-convert-time new-appt-time))
|
||||
(concat new-appt-time " " new-appt-msg) t)))
|
||||
(and (stringp warntime)
|
||||
(setq warntime (unless (string-equal warntime "")
|
||||
(string-to-number warntime))))
|
||||
(and warntime
|
||||
(not (integerp warntime))
|
||||
(error "Argument WARNTIME must be an integer, or nil"))
|
||||
(let ((time-msg (list (list (appt-convert-time time))
|
||||
(concat time " " msg) t)))
|
||||
;; It is presently non-sensical to have multiple warnings about
|
||||
;; the same appointment with just different delays, but it might
|
||||
;; not always be so. TODO
|
||||
(if warntime (setq time-msg (append time-msg (list warntime))))
|
||||
(unless (member time-msg appt-time-msg-list)
|
||||
(setq appt-time-msg-list
|
||||
(appt-sort-list (nconc appt-time-msg-list (list time-msg)))))))
|
||||
|
@ -282,7 +282,7 @@ Not documented
|
||||
;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
|
||||
;;;;;; do* do loop return-from return block etypecase typecase ecase
|
||||
;;;;;; case load-time-value eval-when destructuring-bind function*
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "fbeedbf769c72fee9b4e0671957c1077")
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "36cafd5054969b5bb0b1ce6a21605fed")
|
||||
;;; Generated autoloads from cl-macs.el
|
||||
|
||||
(autoload 'gensym "cl-macs" "\
|
||||
|
@ -438,7 +438,7 @@ It is a list of elements of the form either:
|
||||
;;;###autoload
|
||||
(defmacro destructuring-bind (args expr &rest body)
|
||||
(let* ((bind-lets nil) (bind-forms nil) (bind-inits nil)
|
||||
(bind-defs nil) (bind-block 'cl-none))
|
||||
(bind-defs nil) (bind-block 'cl-none) (bind-enquote nil))
|
||||
(cl-do-arglist (or args '(&aux)) expr)
|
||||
(append '(progn) bind-inits
|
||||
(list (nconc (list 'let* (nreverse bind-lets))
|
||||
|
@ -885,17 +885,12 @@ already is one.)"
|
||||
(edebug-storing-offsets (1- (point)) 'quote)
|
||||
(edebug-read-storing-offsets stream)))
|
||||
|
||||
(defvar edebug-read-backquote-level 0
|
||||
"If non-zero, we're in a new-style backquote.
|
||||
It should never be negative. This controls how we read comma constructs.")
|
||||
|
||||
(defun edebug-read-backquote (stream)
|
||||
;; Turn `thing into (\` thing)
|
||||
(forward-char 1)
|
||||
(list
|
||||
(edebug-storing-offsets (1- (point)) '\`)
|
||||
(let ((edebug-read-backquote-level (1+ edebug-read-backquote-level)))
|
||||
(edebug-read-storing-offsets stream))))
|
||||
(edebug-read-storing-offsets stream)))
|
||||
|
||||
(defun edebug-read-comma (stream)
|
||||
;; Turn ,thing into (\, thing). Handle ,@ and ,. also.
|
||||
@ -910,12 +905,9 @@ It should never be negative. This controls how we read comma constructs.")
|
||||
(forward-char 1)))
|
||||
;; Generate the same structure of offsets we would have
|
||||
;; if the resulting list appeared verbatim in the input text.
|
||||
(if (zerop edebug-read-backquote-level)
|
||||
(edebug-storing-offsets opoint symbol)
|
||||
(list
|
||||
(edebug-storing-offsets opoint symbol)
|
||||
(let ((edebug-read-backquote-level (1- edebug-read-backquote-level)))
|
||||
(edebug-read-storing-offsets stream)))))))
|
||||
(list
|
||||
(edebug-storing-offsets opoint symbol)
|
||||
(edebug-read-storing-offsets stream)))))
|
||||
|
||||
(defun edebug-read-function (stream)
|
||||
;; Turn #'thing into (function thing)
|
||||
@ -937,17 +929,7 @@ It should never be negative. This controls how we read comma constructs.")
|
||||
(prog1
|
||||
(let ((elements))
|
||||
(while (not (memq (edebug-next-token-class) '(rparen dot)))
|
||||
(if (and (eq (edebug-next-token-class) 'backquote)
|
||||
(null elements)
|
||||
(zerop edebug-read-backquote-level))
|
||||
(progn
|
||||
;; Old style backquote.
|
||||
(forward-char 1) ; Skip backquote.
|
||||
;; Call edebug-storing-offsets here so that we
|
||||
;; produce the same offsets we would have had
|
||||
;; if the backquote were an ordinary symbol.
|
||||
(push (edebug-storing-offsets (1- (point)) '\`) elements))
|
||||
(push (edebug-read-storing-offsets stream) elements)))
|
||||
(push (edebug-read-storing-offsets stream) elements))
|
||||
(setq elements (nreverse elements))
|
||||
(if (eq 'dot (edebug-next-token-class))
|
||||
(let (dotted-form)
|
||||
@ -4455,7 +4437,7 @@ With prefix argument, make it a temporary breakpoint."
|
||||
(add-hook 'cl-load-hook
|
||||
(function (lambda () (require 'cl-specs)))))
|
||||
|
||||
;;; edebug-cl-read and cl-read are available from liberte@cs.uiuc.edu
|
||||
;; edebug-cl-read and cl-read are available from liberte@cs.uiuc.edu
|
||||
(if (featurep 'cl-read)
|
||||
(add-hook 'edebug-setup-hook
|
||||
(function (lambda () (require 'edebug-cl-read))))
|
||||
@ -4466,8 +4448,8 @@ With prefix argument, make it a temporary breakpoint."
|
||||
|
||||
;;; Finalize Loading
|
||||
|
||||
;;; Finally, hook edebug into the rest of Emacs.
|
||||
;;; There are probably some other things that could go here.
|
||||
;; Finally, hook edebug into the rest of Emacs.
|
||||
;; There are probably some other things that could go here.
|
||||
|
||||
;; Install edebug read and eval functions.
|
||||
(edebug-install-read-eval-functions)
|
||||
|
@ -134,7 +134,7 @@ Assumes the caller has bound `macroexpand-all-environment'."
|
||||
(maybe-cons fun
|
||||
(maybe-cons (macroexpand-all-forms (cadr form) 2)
|
||||
nil
|
||||
(cadr form))
|
||||
(cdr form))
|
||||
form)
|
||||
form))
|
||||
((memq fun '(let let*))
|
||||
@ -146,7 +146,7 @@ Assumes the caller has bound `macroexpand-all-environment'."
|
||||
((eq fun 'quote)
|
||||
form)
|
||||
((and (consp fun) (eq (car fun) 'lambda))
|
||||
;; embedded lambda
|
||||
;; Embedded lambda in function position.
|
||||
(maybe-cons (macroexpand-all-forms fun 2)
|
||||
(macroexpand-all-forms (cdr form))
|
||||
form))
|
||||
|
217
lisp/emacs-lisp/package-x.el
Normal file
217
lisp/emacs-lisp/package-x.el
Normal file
@ -0,0 +1,217 @@
|
||||
;;; package-x.el --- Package extras
|
||||
|
||||
;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Tom Tromey <tromey@redhat.com>
|
||||
;; Created: 10 Mar 2007
|
||||
;; Version: 0.9
|
||||
;; Keywords: tools
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 3, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file currently contains parts of the package system most
|
||||
;; people won't need, such as package uploading.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Note that this only works if you have the password, which you
|
||||
;; probably don't :-).
|
||||
(defvar package-archive-upload-base nil
|
||||
"Base location for uploading to package archive.")
|
||||
|
||||
(defun package--encode (string)
|
||||
"Encode a string by replacing some characters with XML entities."
|
||||
;; We need a special case for translating "&" to "&".
|
||||
(let ((index))
|
||||
(while (setq index (string-match "[&]" string index))
|
||||
(setq string (replace-match "&" t nil string))
|
||||
(setq index (1+ index))))
|
||||
(while (string-match "[<]" string)
|
||||
(setq string (replace-match "<" t nil string)))
|
||||
(while (string-match "[>]" string)
|
||||
(setq string (replace-match ">" t nil string)))
|
||||
(while (string-match "[']" string)
|
||||
(setq string (replace-match "'" t nil string)))
|
||||
(while (string-match "[\"]" string)
|
||||
(setq string (replace-match """ t nil string)))
|
||||
string)
|
||||
|
||||
(defun package--make-rss-entry (title text)
|
||||
(let ((date-string (format-time-string "%a, %d %B %Y %T %z")))
|
||||
(concat "<item>\n"
|
||||
"<title>" (package--encode title) "</title>\n"
|
||||
;; FIXME: should have a link in the web page.
|
||||
"<link>" package-archive-base "news.html</link>\n"
|
||||
"<description>" (package--encode text) "</description>\n"
|
||||
"<pubDate>" date-string "</pubDate>\n"
|
||||
"</item>\n")))
|
||||
|
||||
(defun package--make-html-entry (title text)
|
||||
(concat "<li> " (format-time-string "%B %e") " - "
|
||||
title " - " (package--encode text)
|
||||
" </li>\n"))
|
||||
|
||||
(defun package--update-file (file location text)
|
||||
(save-excursion
|
||||
(let ((old-buffer (find-buffer-visiting file)))
|
||||
(with-current-buffer (let ((find-file-visit-truename t))
|
||||
(or old-buffer (find-file-noselect file)))
|
||||
(goto-char (point-min))
|
||||
(search-forward location)
|
||||
(forward-line)
|
||||
(insert text)
|
||||
(let ((file-precious-flag t))
|
||||
(save-buffer))
|
||||
(unless old-buffer
|
||||
(kill-buffer (current-buffer)))))))
|
||||
|
||||
(defun package-maint-add-news-item (title description)
|
||||
"Add a news item to the ELPA web pages.
|
||||
TITLE is the title of the news item.
|
||||
DESCRIPTION is the text of the news item.
|
||||
You need administrative access to ELPA to use this."
|
||||
(interactive "sTitle: \nsText: ")
|
||||
(package--update-file (concat package-archive-upload-base "elpa.rss")
|
||||
"<description>"
|
||||
(package--make-rss-entry title description))
|
||||
(package--update-file (concat package-archive-upload-base "news.html")
|
||||
"New entries go here"
|
||||
(package--make-html-entry title description)))
|
||||
|
||||
(defun package--update-news (package version description)
|
||||
"Update the ELPA web pages when a package is uploaded."
|
||||
(package-maint-add-news-item (concat package " version " version)
|
||||
description))
|
||||
|
||||
(defun package-upload-buffer-internal (pkg-info extension)
|
||||
"Upload a package whose contents are in the current buffer.
|
||||
PKG-INFO is the package info, see `package-buffer-info'.
|
||||
EXTENSION is the file extension, a string. It can be either
|
||||
\"el\" or \"tar\"."
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
(let* ((file-type (cond
|
||||
((equal extension "el") 'single)
|
||||
((equal extension "tar") 'tar)
|
||||
(t (error "Unknown extension `%s'" extension))))
|
||||
(file-name (aref pkg-info 0))
|
||||
(pkg-name (intern file-name))
|
||||
(requires (aref pkg-info 1))
|
||||
(desc (if (string= (aref pkg-info 2) "")
|
||||
(read-string "Description of package: ")
|
||||
(aref pkg-info 2)))
|
||||
(pkg-version (aref pkg-info 3))
|
||||
(commentary (aref pkg-info 4))
|
||||
(split-version (package-version-split pkg-version))
|
||||
(pkg-buffer (current-buffer))
|
||||
|
||||
;; Download latest archive-contents.
|
||||
(buffer (url-retrieve-synchronously
|
||||
(concat package-archive-base "archive-contents"))))
|
||||
|
||||
;; Parse archive-contents.
|
||||
(set-buffer buffer)
|
||||
(package-handle-response)
|
||||
(re-search-forward "^$" nil 'move)
|
||||
(forward-char)
|
||||
(delete-region (point-min) (point))
|
||||
(let ((contents (package-read-from-string
|
||||
(buffer-substring-no-properties (point-min)
|
||||
(point-max))))
|
||||
(new-desc (vector split-version requires desc file-type)))
|
||||
(if (> (car contents) package-archive-version)
|
||||
(error "Unrecognized archive version %d" (car contents)))
|
||||
(let ((elt (assq pkg-name (cdr contents))))
|
||||
(if elt
|
||||
(if (package-version-compare split-version
|
||||
(package-desc-vers (cdr elt))
|
||||
'<=)
|
||||
(error "New package has smaller version: %s" pkg-version)
|
||||
(setcdr elt new-desc))
|
||||
(setq contents (cons (car contents)
|
||||
(cons (cons pkg-name new-desc)
|
||||
(cdr contents))))))
|
||||
|
||||
;; Now CONTENTS is the updated archive contents. Upload
|
||||
;; this and the package itself. For now we assume ELPA is
|
||||
;; writable via file primitives.
|
||||
(let ((print-level nil)
|
||||
(print-length nil))
|
||||
(write-region (concat (pp-to-string contents) "\n")
|
||||
nil
|
||||
(concat package-archive-upload-base
|
||||
"archive-contents")))
|
||||
|
||||
;; If there is a commentary section, write it.
|
||||
(when commentary
|
||||
(write-region commentary nil
|
||||
(concat package-archive-upload-base
|
||||
(symbol-name pkg-name) "-readme.txt")))
|
||||
|
||||
(set-buffer pkg-buffer)
|
||||
(kill-buffer buffer)
|
||||
(write-region (point-min) (point-max)
|
||||
(concat package-archive-upload-base
|
||||
file-name "-" pkg-version
|
||||
"." extension)
|
||||
nil nil nil 'excl)
|
||||
|
||||
;; Write a news entry.
|
||||
(package--update-news (concat file-name "." extension)
|
||||
pkg-version desc)
|
||||
|
||||
;; special-case "package": write a second copy so that the
|
||||
;; installer can easily find the latest version.
|
||||
(if (string= file-name "package")
|
||||
(write-region (point-min) (point-max)
|
||||
(concat package-archive-upload-base
|
||||
file-name "." extension)
|
||||
nil nil nil 'ask)))))))
|
||||
|
||||
(defun package-upload-buffer ()
|
||||
"Upload a single .el file to ELPA from the current buffer."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
;; Find the package in this buffer.
|
||||
(let ((pkg-info (package-buffer-info)))
|
||||
(package-upload-buffer-internal pkg-info "el")))))
|
||||
|
||||
(defun package-upload-file (file)
|
||||
(interactive "fPackage file name: ")
|
||||
(with-temp-buffer
|
||||
(insert-file-contents-literally file)
|
||||
(let ((info (cond
|
||||
((string-match "\\.tar$" file) (package-tar-file-info file))
|
||||
((string-match "\\.el$" file) (package-buffer-info))
|
||||
(t (error "Unrecognized extension `%s'"
|
||||
(file-name-extension file))))))
|
||||
(package-upload-buffer-internal info (file-name-extension file)))))
|
||||
|
||||
(defun package-gnus-summary-upload ()
|
||||
"Upload a package contained in the current *Article* buffer.
|
||||
This should be invoked from the gnus *Summary* buffer."
|
||||
(interactive)
|
||||
(with-current-buffer gnus-article-buffer
|
||||
(package-upload-buffer)))
|
||||
|
||||
(provide 'package-x)
|
||||
|
||||
;;; package.el ends here
|
1453
lisp/emacs-lisp/package.el
Normal file
1453
lisp/emacs-lisp/package.el
Normal file
File diff suppressed because it is too large
Load Diff
116
lisp/facemenu.el
116
lisp/facemenu.el
@ -479,6 +479,73 @@ These special properties include `invisible', `intangible' and `read-only'."
|
||||
nil
|
||||
col)))
|
||||
|
||||
(defun color-rgb-to-hsv (r g b)
|
||||
"For R, G, B color components return a list of hue, saturation, value.
|
||||
R, G, B input values should be in [0..65535] range.
|
||||
Output values for hue are integers in [0..360] range.
|
||||
Output values for saturation and value are integers in [0..100] range."
|
||||
(let* ((r (/ r 65535.0))
|
||||
(g (/ g 65535.0))
|
||||
(b (/ b 65535.0))
|
||||
(max (max r g b))
|
||||
(min (min r g b))
|
||||
(h (cond ((= max min) 0)
|
||||
((= max r) (mod (+ (* 60 (/ (- g b) (- max min))) 360) 360))
|
||||
((= max g) (+ (* 60 (/ (- b r) (- max min))) 120))
|
||||
((= max b) (+ (* 60 (/ (- r g) (- max min))) 240))))
|
||||
(s (cond ((= max 0) 0)
|
||||
(t (- 1 (/ min max)))))
|
||||
(v max))
|
||||
(list (round h) (round s 0.01) (round v 0.01))))
|
||||
|
||||
(defcustom list-colors-sort nil
|
||||
"Color sort order for `list-colors-display'.
|
||||
`nil' means default implementation-dependent order (defined in `x-colors').
|
||||
`name' sorts by color name.
|
||||
`rgb' sorts by red, green, blue components.
|
||||
`(rgb-dist . COLOR)' sorts by the RGB distance to the specified color.
|
||||
`hsv' sorts by hue, saturation, value.
|
||||
`(hsv-dist . COLOR)' sorts by the HSV distance to the specified color
|
||||
and excludes grayscale colors."
|
||||
:type '(choice (const :tag "Unsorted" nil)
|
||||
(const :tag "Color Name" name)
|
||||
(const :tag "Red-Green-Blue" rgb)
|
||||
(cons :tag "Distance on RGB cube"
|
||||
(const :tag "Distance from Color" rgb-dist)
|
||||
(color :tag "Source Color Name"))
|
||||
(const :tag "Hue-Saturation-Value" hsv)
|
||||
(cons :tag "Distance on HSV cylinder"
|
||||
(const :tag "Distance from Color" hsv-dist)
|
||||
(color :tag "Source Color Name")))
|
||||
:group 'facemenu
|
||||
:version "24.1")
|
||||
|
||||
(defun list-colors-sort-key (color)
|
||||
"Return a list of keys for sorting colors depending on `list-colors-sort'.
|
||||
COLOR is the name of the color. When return value is nil,
|
||||
filter out the color from the output."
|
||||
(cond
|
||||
((null list-colors-sort) color)
|
||||
((eq list-colors-sort 'name)
|
||||
(downcase color))
|
||||
((eq list-colors-sort 'rgb)
|
||||
(color-values color))
|
||||
((eq (car-safe list-colors-sort) 'rgb-dist)
|
||||
(color-distance color (cdr list-colors-sort)))
|
||||
((eq list-colors-sort 'hsv)
|
||||
(apply 'color-rgb-to-hsv (color-values color)))
|
||||
((eq (car-safe list-colors-sort) 'hsv-dist)
|
||||
(let* ((c-rgb (color-values color))
|
||||
(c-hsv (apply 'color-rgb-to-hsv c-rgb))
|
||||
(o-hsv (apply 'color-rgb-to-hsv
|
||||
(color-values (cdr list-colors-sort)))))
|
||||
(unless (and (eq (nth 0 c-rgb) (nth 1 c-rgb)) ; exclude grayscale
|
||||
(eq (nth 1 c-rgb) (nth 2 c-rgb)))
|
||||
;; 3D Euclidean distance (sqrt is not needed for sorting)
|
||||
(+ (expt (- 180 (abs (- 180 (abs (- (nth 0 c-hsv) ; wrap hue
|
||||
(nth 0 o-hsv)))))) 2)
|
||||
(expt (- (nth 1 c-hsv) (nth 1 o-hsv)) 2)
|
||||
(expt (- (nth 2 c-hsv) (nth 2 o-hsv)) 2)))))))
|
||||
|
||||
(defun list-colors-display (&optional list buffer-name callback)
|
||||
"Display names of defined colors, and show what they look like.
|
||||
@ -492,10 +559,38 @@ If the optional argument BUFFER-NAME is nil, it defaults to
|
||||
If the optional argument CALLBACK is non-nil, it should be a
|
||||
function to call each time the user types RET or clicks on a
|
||||
color. The function should accept a single argument, the color
|
||||
name."
|
||||
name.
|
||||
|
||||
You can change the color sort order by customizing `list-colors-sort'."
|
||||
(interactive)
|
||||
(when (and (null list) (> (display-color-cells) 0))
|
||||
(setq list (list-colors-duplicates (defined-colors)))
|
||||
(when list-colors-sort
|
||||
;; Schwartzian transform with `(color key1 key2 key3 ...)'.
|
||||
(setq list (mapcar
|
||||
'car
|
||||
(sort (delq nil (mapcar
|
||||
(lambda (c)
|
||||
(let ((key (list-colors-sort-key
|
||||
(car c))))
|
||||
(when key
|
||||
(cons c (if (consp key) key
|
||||
(list key))))))
|
||||
list))
|
||||
(lambda (a b)
|
||||
(let* ((a-keys (cdr a))
|
||||
(b-keys (cdr b))
|
||||
(a-key (car a-keys))
|
||||
(b-key (car b-keys)))
|
||||
;; Skip common keys at the beginning of key lists.
|
||||
(while (and a-key b-key (equal a-key b-key))
|
||||
(setq a-keys (cdr a-keys) a-key (car a-keys)
|
||||
b-keys (cdr b-keys) b-key (car b-keys)))
|
||||
(cond
|
||||
((and (numberp a-key) (numberp b-key))
|
||||
(< a-key b-key))
|
||||
((and (stringp a-key) (stringp b-key))
|
||||
(string< a-key b-key)))))))))
|
||||
(when (memq (display-visual-class) '(gray-scale pseudo-color direct-color))
|
||||
;; Don't show more than what the display can handle.
|
||||
(let ((lc (nthcdr (1- (display-color-cells)) list)))
|
||||
@ -505,9 +600,11 @@ name."
|
||||
(with-current-buffer buf
|
||||
(erase-buffer)
|
||||
(setq truncate-lines t)
|
||||
;; Display buffer before generating content to allow
|
||||
;; `list-colors-print' to get the right window-width.
|
||||
(pop-to-buffer buf)
|
||||
(list-colors-print list callback)
|
||||
(set-buffer-modified-p nil))
|
||||
(pop-to-buffer buf))
|
||||
(set-buffer-modified-p nil)))
|
||||
(if callback
|
||||
(message "Click on a color to select it.")))
|
||||
|
||||
@ -550,9 +647,16 @@ name."
|
||||
(point)
|
||||
'face (list :foreground (car color)))
|
||||
(indent-to (max (- (window-width) 8) 44))
|
||||
(insert (apply 'format "#%02x%02x%02x"
|
||||
(mapcar (lambda (c) (lsh c -8))
|
||||
color-values)))
|
||||
(insert (propertize
|
||||
(apply 'format "#%02x%02x%02x"
|
||||
(mapcar (lambda (c) (lsh c -8))
|
||||
color-values))
|
||||
'mouse-face 'highlight
|
||||
'help-echo
|
||||
(let ((hsv (apply 'color-rgb-to-hsv
|
||||
(color-values (car color)))))
|
||||
(format "H:%d S:%d V:%d"
|
||||
(nth 0 hsv) (nth 1 hsv) (nth 2 hsv)))))
|
||||
(when callback
|
||||
(make-text-button
|
||||
opoint (point)
|
||||
|
@ -97,7 +97,7 @@ It will be passed one argument, which is the current value of
|
||||
`font-lock-mode'.")
|
||||
|
||||
;; The mode for which font-lock was initialized, or nil if none.
|
||||
(defvar font-lock-mode-major-mode)
|
||||
(defvar font-lock-major-mode)
|
||||
(define-minor-mode font-lock-mode
|
||||
"Toggle Font Lock mode.
|
||||
With arg, turn Font Lock mode off if and only if arg is a non-positive
|
||||
@ -159,9 +159,7 @@ your own function which is called when `font-lock-mode' is toggled via
|
||||
;; Arrange to unfontify this buffer if we change major mode later.
|
||||
(if font-lock-mode
|
||||
(add-hook 'change-major-mode-hook 'font-lock-change-mode nil t)
|
||||
(remove-hook 'change-major-mode-hook 'font-lock-change-mode t))
|
||||
(when font-lock-mode
|
||||
(setq font-lock-mode-major-mode major-mode)))
|
||||
(remove-hook 'change-major-mode-hook 'font-lock-change-mode t)))
|
||||
|
||||
;; Get rid of fontification for the old major mode.
|
||||
;; We do this when changing major modes.
|
||||
@ -213,8 +211,8 @@ this function onto `change-major-mode-hook'."
|
||||
(and mode
|
||||
(boundp 'font-lock-set-defaults)
|
||||
font-lock-set-defaults
|
||||
font-lock-mode-major-mode
|
||||
(not (eq font-lock-mode-major-mode major-mode))))
|
||||
font-lock-major-mode
|
||||
(not (eq font-lock-major-mode major-mode))))
|
||||
(font-lock-mode-internal mode)))
|
||||
|
||||
(defun turn-on-font-lock ()
|
||||
|
@ -1783,15 +1783,18 @@ preserve `hi-lock-mode' highlighting patterns."
|
||||
(kill-local-variable 'font-lock-set-defaults)
|
||||
(font-lock-mode 1))
|
||||
|
||||
(defvar font-lock-mode-major-mode)
|
||||
(defvar font-lock-major-mode nil
|
||||
"Major mode for which the font-lock settings have been setup.")
|
||||
(make-variable-buffer-local 'font-lock-major-mode)
|
||||
|
||||
(defun font-lock-set-defaults ()
|
||||
"Set fontification defaults appropriately for this mode.
|
||||
Sets various variables using `font-lock-defaults' (or, if nil, using
|
||||
`font-lock-defaults-alist') and `font-lock-maximum-decoration'."
|
||||
;; Set fontification defaults if not previously set for correct major mode.
|
||||
(unless (and font-lock-set-defaults
|
||||
(eq font-lock-mode-major-mode major-mode))
|
||||
(setq font-lock-mode-major-mode major-mode)
|
||||
(eq font-lock-major-mode major-mode))
|
||||
(setq font-lock-major-mode major-mode)
|
||||
(set (make-local-variable 'font-lock-set-defaults) t)
|
||||
(make-local-variable 'font-lock-fontified)
|
||||
(make-local-variable 'font-lock-multiline)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-06-15 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* auth-source.el (auth-source-pick): If choice does not contain a
|
||||
questioned keyword, set the check to t.
|
||||
|
||||
2010-06-12 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
* gnus-util.el (gnus-date-get-time): Move up before first use.
|
||||
|
@ -229,7 +229,8 @@ matched as a regex."
|
||||
;; Check keywords.
|
||||
(dolist (k keys match)
|
||||
(let* ((v (plist-get spec k))
|
||||
(choicev (plist-get choice k)))
|
||||
(choicev (if (plist-member choice k)
|
||||
(plist-get choice k) t)))
|
||||
(setq match
|
||||
(and match
|
||||
(or
|
||||
|
@ -272,6 +272,9 @@ Commands:
|
||||
(with-current-buffer buffer
|
||||
(bury-buffer))))
|
||||
|
||||
(set (make-local-variable 'revert-buffer-function)
|
||||
'help-mode-revert-buffer)
|
||||
|
||||
(run-mode-hooks 'help-mode-hook))
|
||||
|
||||
;;;###autoload
|
||||
@ -783,6 +786,17 @@ Show all docs for that symbol as either a variable, function or face."
|
||||
(fboundp sym) (facep sym))
|
||||
(help-do-xref pos #'help-xref-interned (list sym)))))
|
||||
|
||||
(defun help-mode-revert-buffer (ignore-auto noconfirm)
|
||||
(when (or noconfirm (yes-or-no-p "Revert help buffer? "))
|
||||
(let ((pos (point))
|
||||
(item help-xref-stack-item)
|
||||
;; Pretend there is no current item to add to the history.
|
||||
(help-xref-stack-item nil)
|
||||
;; Use the current buffer.
|
||||
(help-xref-following t))
|
||||
(apply (car item) (cdr item))
|
||||
(goto-char pos))))
|
||||
|
||||
(defun help-insert-string (string)
|
||||
"Insert STRING to the help buffer and install xref info for it.
|
||||
This function can be used to restore the old contents of the help buffer
|
||||
|
@ -298,6 +298,8 @@ This variable is used to display the current image type in the mode line.")
|
||||
(define-key map (kbd "DEL") 'image-scroll-down)
|
||||
(define-key map [remap forward-char] 'image-forward-hscroll)
|
||||
(define-key map [remap backward-char] 'image-backward-hscroll)
|
||||
(define-key map [remap right-char] 'image-forward-hscroll)
|
||||
(define-key map [remap left-char] 'image-backward-hscroll)
|
||||
(define-key map [remap previous-line] 'image-previous-line)
|
||||
(define-key map [remap next-line] 'image-next-line)
|
||||
(define-key map [remap scroll-up] 'image-scroll-up)
|
||||
|
11
lisp/info.el
11
lisp/info.el
@ -238,7 +238,9 @@ This only has an effect if `Info-hide-note-references' is non-nil."
|
||||
(defcustom Info-breadcrumbs-depth 4
|
||||
"Depth of breadcrumbs to display.
|
||||
0 means do not display breadcrumbs."
|
||||
:type 'integer)
|
||||
:version "23.1"
|
||||
:type 'integer
|
||||
:group 'info)
|
||||
|
||||
(defcustom Info-search-whitespace-regexp "\\s-+"
|
||||
"If non-nil, regular expression to match a sequence of whitespace chars.
|
||||
@ -800,17 +802,22 @@ otherwise, that defaults to `Top'."
|
||||
"Go to an Info node FILENAME and NODENAME, re-reading disk contents.
|
||||
When *info* is already displaying FILENAME and NODENAME, the window position
|
||||
is preserved, if possible."
|
||||
(pop-to-buffer "*info*")
|
||||
(or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
|
||||
(let ((old-filename Info-current-file)
|
||||
(old-nodename Info-current-node)
|
||||
(old-buffer-name (buffer-name))
|
||||
(pcolumn (current-column))
|
||||
(pline (count-lines (point-min) (line-beginning-position)))
|
||||
(wline (count-lines (point-min) (window-start)))
|
||||
(old-history-forward Info-history-forward)
|
||||
(old-history Info-history)
|
||||
(new-history (and Info-current-file
|
||||
(list Info-current-file Info-current-node (point)))))
|
||||
(kill-buffer (current-buffer))
|
||||
(pop-to-buffer (or old-buffer-name "*info*"))
|
||||
(Info-mode)
|
||||
(Info-find-node filename nodename)
|
||||
(setq Info-history-forward old-history-forward)
|
||||
(setq Info-history old-history)
|
||||
(if (and (equal old-filename Info-current-file)
|
||||
(equal old-nodename Info-current-node))
|
||||
|
@ -1055,7 +1055,7 @@ mail status in mode line"))
|
||||
(define-key menu-bar-options-menu [cua-emulation-mode]
|
||||
(menu-bar-make-mm-toggle cua-mode
|
||||
"Shift movement mark region (CUA)"
|
||||
"Use shifted movement keys to set and extend the region."
|
||||
"Use shifted movement keys to set and extend the region"
|
||||
(:visible (and (boundp 'cua-enable-cua-keys)
|
||||
(not cua-enable-cua-keys)))))
|
||||
|
||||
|
@ -1370,17 +1370,21 @@ of the inserted start-tag or nil if none was inserted."
|
||||
|
||||
(defun nxml-indent-line ()
|
||||
"Indent current line as XML."
|
||||
(let ((indent (nxml-compute-indent))
|
||||
(from-end (- (point-max) (point))))
|
||||
(when (and indent
|
||||
(/= indent (current-indentation)))
|
||||
(beginning-of-line)
|
||||
(let ((bol (point)))
|
||||
(skip-chars-forward " \t")
|
||||
(delete-region bol (point)))
|
||||
(indent-to indent)
|
||||
(when (> (- (point-max) from-end) (point))
|
||||
(goto-char (- (point-max) from-end))))))
|
||||
(let* ((savep (point))
|
||||
(indent (condition-case nil
|
||||
(save-excursion
|
||||
(forward-line 0)
|
||||
(skip-chars-forward " \t")
|
||||
(if (>= (point) savep) (setq savep nil))
|
||||
(or (nxml-compute-indent) 0))
|
||||
(error 0))))
|
||||
(if (not (numberp indent))
|
||||
;; If something funny is used (e.g. `noindent'), return it.
|
||||
indent
|
||||
(if (< indent 0) (setq indent 0)) ;Just in case.
|
||||
(if savep
|
||||
(save-excursion (indent-line-to indent))
|
||||
(indent-line-to indent)))))
|
||||
|
||||
(defun nxml-compute-indent ()
|
||||
"Return the indent for the line containing point."
|
||||
|
@ -3119,7 +3119,7 @@ The default comes from `process-coding-system-alist' and
|
||||
(setq params (append (list sql-database) params)))
|
||||
(if (not (string= "" sql-server))
|
||||
(setq params (append (list (concat "--host=" sql-server)) params)))
|
||||
(if (not (and sql-port (numberp sql-port)))
|
||||
(if (and sql-port (numberp sql-port))
|
||||
(setq params (append (list (concat "--port=" (number-to-string sql-port))) params)))
|
||||
(if (not (string= "" sql-password))
|
||||
(setq params (append (list (concat "--password=" sql-password)) params)))
|
||||
|
@ -1166,6 +1166,9 @@ the `--debug-init' option to view a complete error backtrace."
|
||||
(eq face-ignored-fonts old-face-ignored-fonts))
|
||||
(clear-face-cache)))
|
||||
|
||||
;; Load ELPA packages.
|
||||
(and user-init-file package-enable-at-startup (package-initialize))
|
||||
|
||||
(setq after-init-time (current-time))
|
||||
(run-hooks 'after-init-hook)
|
||||
|
||||
|
@ -660,8 +660,8 @@ re-start Emacs."
|
||||
"[^A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]"
|
||||
"[.]" nil nil nil iso-8859-2)
|
||||
("portugues" ; Portuguese mode
|
||||
"[a-zA-Z\301\302\311\323\340\341\342\351\352\355\363\343\372]"
|
||||
"[^a-zA-Z\301\302\311\323\340\341\342\351\352\355\363\343\372]"
|
||||
"[a-zA-Z\301\302\307\311\323\340\341\342\351\352\355\363\343\347\372]"
|
||||
"[^a-zA-Z\301\302\307\311\323\340\341\342\351\352\355\363\343\347\372]"
|
||||
"[']" t ("-C") "~latin1" iso-8859-1)
|
||||
("russian" ; Russian.aff (KOI8-R charset)
|
||||
"[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
|
||||
@ -982,8 +982,8 @@ Assumes that value contains no whitespace."
|
||||
;; This returns nil if the data file does not exist.
|
||||
;; Can someone please explain the return value format when the
|
||||
;; file does exist -- rms?
|
||||
(let* ((lang ;; Strip out region, variant, etc.
|
||||
(and (string-match "^[[:alpha:]]+" dict-name)
|
||||
(let* ((lang ;; Strip out variant, etc.
|
||||
(and (string-match "^[[:alpha:]_]+" dict-name)
|
||||
(match-string 0 dict-name)))
|
||||
(data-file
|
||||
(concat (or ispell-aspell-data-dir
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-06-12 Štěpán Němec <stepnem@gmail.com> (tiny change)
|
||||
|
||||
* url-vars.el (url-privacy-level): Fix doc typo. (Bug#6406)
|
||||
|
||||
2010-05-19 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* url-util.el (url-unhex-string): Don't accidentally decode as latin-1.
|
||||
|
@ -128,7 +128,7 @@ email -- the email address
|
||||
os -- the operating system info
|
||||
lastloc -- the last location
|
||||
agent -- do not send the User-Agent string
|
||||
cookie -- never accept HTTP cookies
|
||||
cookies -- never accept HTTP cookies
|
||||
|
||||
Samples:
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
|
||||
;; Maintainer: FSF
|
||||
;; Keywords: convenience files
|
||||
;; Keywords: convenience files vc
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
@ -316,7 +316,7 @@ use; you may override this using the second optional arg MODE."
|
||||
|
||||
;;;###autoload
|
||||
(defun vc-annotate (file rev &optional display-mode buf move-point-to)
|
||||
"Display the edit history of the current file using colors.
|
||||
"Display the edit history of the current FILE using colors.
|
||||
|
||||
This command creates a buffer that shows, for each line of the current
|
||||
file, when it was last edited and by whom. Additionally, colors are
|
||||
@ -326,7 +326,7 @@ default, the time scale stretches back one year into the past;
|
||||
everything that is older than that is shown in blue.
|
||||
|
||||
With a prefix argument, this command asks two questions in the
|
||||
minibuffer. First, you may enter a revision number; then the buffer
|
||||
minibuffer. First, you may enter a revision number REV; then the buffer
|
||||
displays and annotates that revision instead of the working revision
|
||||
\(type RET in the minibuffer to leave that default unchanged). Then,
|
||||
you are prompted for the time span in days which the color range
|
||||
@ -348,9 +348,9 @@ mode-specific menu. `vc-annotate-color-map' and
|
||||
(list buffer-file-name
|
||||
(let ((def (vc-working-revision buffer-file-name)))
|
||||
(if (null current-prefix-arg) def
|
||||
(read-string
|
||||
(vc-read-revision
|
||||
(format "Annotate from revision (default %s): " def)
|
||||
nil nil def)))
|
||||
(list buffer-file-name) nil def)))
|
||||
(if (null current-prefix-arg)
|
||||
vc-annotate-display-mode
|
||||
(float (string-to-number
|
||||
|
@ -170,7 +170,7 @@ want to force an empty list of arguments, use t."
|
||||
(?? . unregistered)
|
||||
;; This is what vc-svn-parse-status does.
|
||||
(?~ . edited)))
|
||||
(re (if remote "^\\(.\\)...... \\([ *]\\) +\\(?:[-0-9]+\\)? \\(.*\\)$"
|
||||
(re (if remote "^\\(.\\)......? \\([ *]\\) +\\(?:[-0-9]+\\)? \\(.*\\)$"
|
||||
;; Subexp 2 is a dummy in this case, so the numbers match.
|
||||
"^\\(.\\)....\\(.\\) \\(.*\\)$"))
|
||||
result)
|
||||
|
24222
src/ChangeLog
24222
src/ChangeLog
File diff suppressed because it is too large
Load Diff
@ -1,104 +0,0 @@
|
||||
2008-04-23 Miles Bader <miles@gnu.org>
|
||||
|
||||
* eval.c (Ffunctionp): Return nil for special forms.
|
||||
(Qunevalled): New variable.
|
||||
(syms_of_eval): Initialize it.
|
||||
|
||||
2007-10-18 Miles Bader <miles@gnu.org>
|
||||
|
||||
* eval.c (FletX): Test the type of VARLIST rather than just !NILP.
|
||||
(Flet): Use XCAR instead of Fcar.
|
||||
|
||||
2007-10-16 Miles Bader <miles@gnu.org>
|
||||
|
||||
* alloc.c (make_funvec, Fpurecopy): Set the pseudo-vector type.
|
||||
|
||||
2006-02-10 Miles Bader <miles@gnu.org>
|
||||
|
||||
* eval.c (Ffunctionp): Supply new 2nd arg to Findirect_function.
|
||||
|
||||
2005-03-04 Miles Bader <miles@gnu.org>
|
||||
|
||||
* eval.c (FletX): Update Vinterpreter_lexical_environment for each
|
||||
variable we bind, instead of all at once like `let'.
|
||||
|
||||
2004-08-09 Miles Bader <miles@gnu.org>
|
||||
|
||||
Changes from merging the funvec patch:
|
||||
|
||||
* eval.c (Feval, Ffuncall): Don't special-case vectors.
|
||||
(funcall_lambda): Use FUNVEC_SIZE.
|
||||
(Fcurry): Remove function.
|
||||
|
||||
Merge funvec patch.
|
||||
|
||||
2004-04-10 Miles Bader <miles@gnu.org>
|
||||
|
||||
* eval.c (Fspecialp): New function.
|
||||
(syms_of_eval): Initialize it.
|
||||
|
||||
2004-04-03 Miles Bader <miles@gnu.org>
|
||||
|
||||
* eval.c (Feval): If a variable isn't bound lexically, fall back
|
||||
to looking it up dynamically even if it isn't declared special.
|
||||
|
||||
2002-08-26 Miles Bader <miles@gnu.org>
|
||||
|
||||
* bytecode.c (Fbyte_code): Fsub1 can GC, so protect it.
|
||||
|
||||
2002-06-12 Miles Bader <miles@gnu.org>
|
||||
|
||||
Lexical binding changes to the byte-code interpreter:
|
||||
|
||||
* bytecode.c (Bstack_ref, Bstack_set, Bstack_set2, Bvec_ref, Bvec_set)
|
||||
(BdiscardN): New constants.
|
||||
(exec_byte_code): Renamed from `Fbyte_code'.
|
||||
Implement above new bytecodes.
|
||||
Add ARGS-TEMPLATE, NARGS and ARGS parameters, and optionally use
|
||||
them push initial args on the stack.
|
||||
(Fbyte_code): New function, just call `exec_byte_code'.
|
||||
Add additional optional arguments for `exec_byte_code'.
|
||||
(Qand_optional, Qand_rest): New extern declarations.
|
||||
* eval.c (Fcurry, Ffunctionp): New functions.
|
||||
(syms_of_eval): Initialize them.
|
||||
(funcall_lambda): Call `exec_byte_code' instead of Fbyte_code.
|
||||
If a compiled-function object has a `push-args' slot, call the
|
||||
byte-code interpreter without binding any arguments.
|
||||
(Ffuncall): Add support for curried functions.
|
||||
* lisp.h (Fbyte_code): Declare max-args as MANY.
|
||||
(exec_byte_code): New declaration.
|
||||
|
||||
Lexical binding changes to the lisp interpreter:
|
||||
|
||||
* lisp.h (struct Lisp_Symbol): Add `declared_special' field.
|
||||
(apply_lambda): Add new 3rd arg to decl.
|
||||
* alloc.c (Fmake_symbol): Initialize `declared_special' field.
|
||||
* eval.c (Vinterpreter_lexical_environment): New variable.
|
||||
(syms_of_eval): Initialize it.
|
||||
(Fsetq): Modify SYM's lexical binding if appropriate.
|
||||
(Ffunction): Return a closure if within a lexical environment.
|
||||
(Flet, FletX): Lexically bind non-defvar'd variables if inside a
|
||||
lexical environment.
|
||||
(Feval): Return lexical binding of variables, if they have one.
|
||||
Pass current lexical environment to embedded lambdas. Handle closures.
|
||||
(Ffuncall): Pass nil lexical environment to lambdas. Handle closures.
|
||||
(funcall_lambda): Add new LEXENV argument, and lexically bind
|
||||
arguments if it's non-nil. Bind `interpreter-lexenv' if it changed.
|
||||
(apply_lambda): Add new LEXENV argument and pass it to funcall_lambda.
|
||||
(Fdefvaralias, Fdefvar, Fdefconst): Mark the variable as special.
|
||||
(Qinternal_interpreter_environment, Qclosure): New constants.
|
||||
(syms_of_eval): Initialize them.
|
||||
(Fdefun, Fdefmacro): Use a closure if lexical binding is active.
|
||||
* lread.c (defvar_bool, defvar_lisp_nopro, defvar_per_buffer)
|
||||
(defvar_kboard, defvar_int): Mark the variable as special.
|
||||
(Vlexical_binding, Qlexical_binding): New variables.
|
||||
(syms_of_lread): Initialize them.
|
||||
(Fload): Bind `lexically-bound' to nil unless specified otherwise
|
||||
in the file header.
|
||||
(lisp_file_lexically_bound_p): New function.
|
||||
(Qinternal_interpreter_environment): New variable.
|
||||
* doc.c (Qclosure): New extern declaration.
|
||||
(Fdocumentation, store_function_docstring): Handle interpreted
|
||||
closures.
|
||||
|
||||
;; arch-tag: 7cf884aa-6b48-40cb-bfca-265a1e99b3c5
|
24131
src/ChangeLog.trunk
Normal file
24131
src/ChangeLog.trunk
Normal file
File diff suppressed because it is too large
Load Diff
12
src/lread.c
12
src/lread.c
@ -2819,7 +2819,17 @@ read1 (readcharfun, pch, first_in_list)
|
||||
}
|
||||
|
||||
case '`':
|
||||
if (first_in_list)
|
||||
/* Transition from old-style to new-style:
|
||||
If we see "(`" it used to mean old-style, which usually works
|
||||
fine because ` should almost never appear in such a position
|
||||
for new-style. But occasionally we need "(`" to mean new
|
||||
style, so we try to distinguish the two by the fact that we
|
||||
can either write "( `foo" or "(` foo", where the first
|
||||
intends to use new-style whereas the second intends to use
|
||||
old-style. For Emacs-25, we should completely remove this
|
||||
first_in_list exception (old-style can still be obtained via
|
||||
"(\`" anyway). */
|
||||
if (first_in_list && (c = READCHAR, UNREAD (c), c == ' '))
|
||||
{
|
||||
Vold_style_backquotes = Qt;
|
||||
goto default_label;
|
||||
|
@ -341,11 +341,11 @@ $(BLD)/bidi.$(O) : \
|
||||
$(SRC)/bidi.c \
|
||||
$(CONFIG_H) \
|
||||
$(SRC)/lisp.h \
|
||||
$(SRC)/bidimirror.h \
|
||||
$(SRC)/biditype.h \
|
||||
$(SRC)/buffer.h \
|
||||
$(SRC)/character.h \
|
||||
$(SRC)/dispextern.h \
|
||||
$(SRC)/biditype.h \
|
||||
$(SRC)/bidimirror.h \
|
||||
$(SRC)/w32gui.h
|
||||
|
||||
$(BLD)/buffer.$(O) : \
|
||||
|
Loading…
Reference in New Issue
Block a user