Merge branch 'master' into cairo

This commit is contained in:
Jan D 2015-04-26 13:55:01 +02:00
commit f92ac2e82e
348 changed files with 21631 additions and 17480 deletions

View file

@ -3,12 +3,11 @@
(fill-column . 70)))
(c-mode . ((c-file-style . "GNU")))
(objc-mode . ((c-file-style . "GNU")))
(log-edit-mode . ((log-edit-rewrite-fixes
"[ \n](bug#\\([0-9]+\\))" . "debbugs:\\1")
(log-edit-font-lock-gnu-style . t)
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
(log-edit-setup-add-author . t)))
(change-log-mode . ((add-log-time-zone-rule . t)
(fill-column . 74)
(bug-reference-url-format . "http://debbugs.gnu.org/%s")
(mode . bug-reference)))
(diff-mode . ((mode . whitespace))))
(diff-mode . ((mode . whitespace)))
(emacs-lisp-mode . ((indent-tabs-mode . nil))))

5
.gitignore vendored
View file

@ -217,6 +217,7 @@ lisp/international/uni-*.el
*.ps
*.sc
*.scs
*.t2d/
*.tg
*.tgs
*.toc
@ -229,7 +230,8 @@ doc/man/emacs.1
doc/misc/cc-mode.ss
etc/DOC
etc/refcards/emacsver.tex
info/dir
gnustmp*
/info/
# Version control and locks.
*.orig
@ -237,6 +239,7 @@ info/dir
*~
.#*
\#*\#
ChangeLog
[0-9]*.patch
# Built by 'make install'.

View file

@ -7,19 +7,22 @@ http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
* Information for Emacs Developers.
An "Emacs Developer" is someone who contributes a lot of code or
documentation to the Emacs repository. Generally, they have write
documentation to the Emacs repository. Generally, they have write
access to the Emacs git repository on Savannah
https://savannah.gnu.org/git/?group=emacs.
** Write access to the Emacs repository.
Once you become a frequent contributor to Emacs, we can consider
giving you write access to the version-control repository. Request
access on the emacs-devel@gnu.org mailing list.
giving you write access to the version-control repository. Request
access on the emacs-devel@gnu.org mailing list. Also, be sure to
subscribe to the emacs-devel@gnu.org mailing list and include the
"emacs-announce" topic, so that you get the announcements about
feature freeze and other important events.
** Using the Emacs repository
Emacs uses git for the source code repository.
Emacs uses Git for the source code repository.
See http://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs to get
started, and http://www.emacswiki.org/emacs/GitForEmacsDevs for more
@ -27,50 +30,84 @@ advanced information.
Alternately, see admin/notes/git-workflow.
If committing changes written by someone else, make the ChangeLog
entry in their name, not yours. git distinguishes between the author
If committing changes written by someone else, make the commit in
their name, not yours. Git distinguishes between the author
and the committer; use the --author option on the commit command to
specify the actual author; the committer defaults to you.
** commit messages
** Commit messages
When using git, commit messages should use ChangeLog format, with the
following modifications:
Emacs development no longer stores descriptions of new changes in
ChangeLog files. Instead, a single ChangeLog file is generated from
the commit messages when a release is prepared. So changes you commit
should not touch any of the ChangeLog files in the repository, but
instead should contain the log entries in the commit message. Here is
an example of a commit message (indented):
- Start with a single unindented summary line explaining the change,
then an empty line, then unindented ChangeLog entries.
Deactivate shifted region
You can use various Emacs functions to ease this process; see (info
"(emacs)Change Log Commands") or
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
Do not silently extend a region that is not highlighted;
this can happen after a shift (Bug#19003).
* doc/emacs/mark.texi (Shift Selection): Document the change.
* lisp/window.el (handle-select-window):
* src/frame.c (Fhandle_switch_frame, Fselected_frame):
Deactivate the mark.
Below are some rules and recommendations for formatting commit
messages:
- Start with a single unindented summary line explaining the change;
do not end this line with a period. If that line starts with a
semi-colon and a space "; ", the log message will be ignored when
generating the ChangeLog file. Use this for minor commits that do
not need separate ChangeLog entries, such as changes in etc/NEWS.
- After the summary line, there should be an empty line, then
unindented ChangeLog entries.
- Limit lines in commit messages to 78 characters, unless they consist
of a single word of at most 140 characters. If you have trouble
fitting the summary into 78 characters, add a summarizing paragraph
below the empty line and before the individual file descriptions.
of a single word of at most 140 characters; this is enforced by a
commit hook. It's nicer to limit the summary line to 50 characters;
this isn't enforced. If the change can't be summarized so briefly,
add a paragraph after the empty line and before the individual file
descriptions.
- If only a single file is changed, the summary line can be the normal
file first line (starting with the asterisk). Then there is no
individual files section.
- Explaining the rationale for a design choice is best done in comments
in the source code. However, sometimes it is useful to describe just
the rationale for a change; that can be done in the commit message
between the summary line and the file entries.
- If the commit has more than one author, the commit message should
contain separate lines to mention the other authors, like the
following:
Co-authored-by: Joe Schmoe <j.schmoe@example.org>
- If the commit is a tiny change that is exempt from copyright paperwork,
the commit message should contain a separate line like the following:
Copyright-paperwork-exempt: yes
- The commit message should contain "Bug#NNNNN" if it is related to
bug number NNNNN in the debbugs database. This string is often
parenthesized, as in "(Bug#19003)".
- Commit messages should contain only printable UTF-8 characters.
- Commit messages should not contain the "Signed-off-by:" lines that
are used in some other projects.
** ChangeLog notes
- Explaining the rationale for a design choice is best done in comments
in the source code. However, sometimes it is useful to describe just
the rationale for a change; that can be done in the commit message
between the summary line and the file entries.
- Emacs generally follows the GNU coding standards when it comes to
ChangeLogs:
http://www.gnu.org/prep/standards/html_node/Change-Logs.html . One
exception is that we still sometimes quote `like-this' (as the
standards used to recommend) rather than 'like-this' (as they do
now), because `...' is so widely used elsewhere in Emacs.
http://www.gnu.org/prep/standards/html_node/Change-Logs.html or
"(info (standards)Change Logs"). One exception is that we still
sometimes quote `like-this' (as the standards used to recommend)
rather than 'like-this' (as they do now), because `...' is so widely
used elsewhere in Emacs.
- Some of the rules in the GNU coding standards section 5.2
"Commenting Your Work" also apply to ChangeLog entries: they must be
@ -78,48 +115,58 @@ following modifications:
ending with a period (except the summary line should not end in a
period).
It is tempting to relax this rule for commit messages, since they
are somewhat transient. However, they are preserved indefinitely,
and have a reasonable chance of being read in the future, so it's
better that they have good presentation.
- There are multiple ChangeLogs in the emacs source; roughly one per
high-level directory. The ChangeLog entry for a commit belongs in the
lowest ChangeLog that is higher than or at the same level as any file
changed by the commit.
They are preserved indefinitely, and have a reasonable chance of
being read in the future, so it's better that they have good
presentation.
- Use the present tense; describe "what the change does", not "what
the change did".
- Preferred form for several entries with the same content:
* help.el (view-lossage):
* kmacro.el (kmacro-edit-lossage):
* edmacro.el (edit-kbd-macro): Fix docstring, lossage is now 300 keys.
* lisp/help.el (view-lossage):
* lisp/kmacro.el (kmacro-edit-lossage):
* lisp/edmacro.el (edit-kbd-macro): Fix docstring, lossage is now 300.
(Rather than anything involving "ditto" and suchlike.)
- If the commit fixes a bug, add a separate line
Fixes: bug#NNNN
where NNNN is the bug number.
- In ChangeLog entries, there is no standard or recommended way to
identify revisions.
- There is no standard or recommended way to identify revisions in
ChangeLog entries. Using Git SHA1 values limits the usability of
the references to Git, and will become much less useful if Emacs
switches to a different VCS. So we recommend against that.
One way to identify revisions is by quoting their summary line.
Another is with an action stamp - an RFC3339 date followed by !
followed by the committer's email - for example,
"2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit"
"2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit"
will suffice.
- There is no need to make separate ChangeLog entries for files such
as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration
of files such as 'configure'. "There is no need" means you don't
have to, but you can if you want to.
- There is no need to mention files such as NEWS, MAINTAINERS, and
FOR-RELEASE, or to indicate regeneration of files such as
'configure', in the ChangeLog entry. "There is no need" means you
don't have to, but you can if you want to.
** branches
** Generating ChangeLog entries
- You can use various Emacs functions to ease the process of writing
ChangeLog entries; see (info "(emacs)Change Log Commands") or
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
- If you use Emacs VC, one way to format ChangeLog entries is to create
a top-level ChangeLog file manually, and update it with 'C-x 4 a' as
usual. Do not register the ChangeLog file under git; instead, use
'C-c C-a' to insert its contents into into your *vc-log* buffer.
Or if 'log-edit-hook' includes 'log-edit-insert-changelog' (which it
does by default), they will be filled in for you automatically.
- Alternatively, you can use the vc-dwim command to maintain commit
messages. When you create a source directory, run the shell command
'git-changelog-symlink-init' to create a symbolic link from
ChangeLog to .git/c/ChangeLog. Edit this ChangeLog via its symlink
with Emacs commands like 'C-x 4 a', and commit the change using the
shell command 'vc-dwim --commit'. Type 'vc-dwim --help' for more.
** Branches
Development normally takes places on the trunk.
Sometimes specialized features are developed on separate branches
@ -130,9 +177,9 @@ Development is discussed on the emacs-devel mailing list.
Sometime before the release of a new major version of Emacs a "feature
freeze" is imposed on the trunk, to prepare for creating a release
branch. No new features may be added to the trunk after this point,
until the release branch is created. Announcements about the freeze
(and other important events) are made on the info-gnu-emacs mailing
list, and not anywhere else.
until the release branch is created. Announcements about the freeze
(and other important events) are made on the emacs-devel mailing
list under the "emacs-announce" topic, and not anywhere else.
The trunk branch is named "master" in git; release branches are named
"emacs-nn" where "nn" is the major version.
@ -151,13 +198,13 @@ then exclude that commit from the merge to trunk.
** Other process information
See all the files in admin/notes/* . In particular, see
See all the files in admin/notes/* . In particular, see
admin/notes/newfile, see admin/notes/repo.
*** git vs rename
git does not explicitly represent a file renaming; it uses a percent
changed heuristic to deduce that a file was renamed. So if you are
Git does not explicitly represent a file renaming; it uses a percent
changed heuristic to deduce that a file was renamed. So if you are
planning to make extensive changes to a file after renaming it (or
moving it to another directory), you should:
@ -168,7 +215,7 @@ moving it to another directory), you should:
- make other changes
- merge the feature branch to trunk, _not_ squashing the commits into
one. The commit message on this merge should summarize the renames
one. The commit message on this merge should summarize the renames
and all the changes.
** Emacs Mailing lists.
@ -182,6 +229,10 @@ to the tracker at http://debbugs.gnu.org .
You can subscribe to the mailing lists, or see the list archives,
by following links from http://savannah.gnu.org/mail/?group=emacs .
To email a patch you can use a shell command like 'git format-patch -1'
to create a file, and then attach the file to your email. This nicely
packages the patch's commit message and changes.
** Document your changes.
Any change that matters to end-users should have an entry in etc/NEWS.
@ -191,11 +242,11 @@ Doc-strings should be updated together with the code.
Think about whether your change requires updating the manuals. If you
know it does not, mark the NEWS entry with "---". If you know
that *all* the necessary documentation updates have been made, mark
the entry with "+++". Otherwise do not mark it.
the entry with "+++". Otherwise do not mark it.
Please see (info "(elisp)Documentation Tips") or
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
for more specific tips on Emacs's doc style. Use `checkdoc' to check
for more specific tips on Emacs's doc style. Use 'checkdoc' to check
for documentation errors before submitting a patch.
** Test your changes.
@ -217,7 +268,9 @@ top-level directory. Most tests are in the directory
The best way to understand Emacs Internals is to read the code,
but the nodes "Tips" and "GNU Emacs Internals" in the Appendix
of the Emacs Lisp Reference Manual may also help.
of the Emacs Lisp Reference Manual may also help. Some source files,
such as xdisp.c, have large commentaries describing the design and
implementation in more detail.
The file etc/DEBUG describes how to debug Emacs bugs.

View file

@ -3,6 +3,12 @@
* configure.ac: Allow jpeg with cairo.
Allow tiff and gif with cairo.
2015-04-07 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib
* lib/stddef.in.h: Update from gnulib, incorporating:
2015-04-02 stddef: port to pre-C11 GCC on x86
2015-04-05 Jan Djärv <jan.h.d@swipnet.se>
* configure.ac: Allow rsvg with cairo. Move back HAVE_RSVG.
@ -12,6 +18,16 @@
* configure.ac (HAVE_RSVG): Move after cairo.
(USE_CAIRO): Disable rsvg, don't disable Xpm.
2015-04-03 Paul Eggert <eggert@cs.ucla.edu>
Port 'configure' to clang 3.5
* configure.ac: Add -Wno-unknown-attributes if clang;
otherwise clang 3.5.0 (Fedora 21 x86-64) complains
"/usr/include/glib-2.0/glib/gmem.h: ... warning: unknown attribute
'__alloc_size__' ignored". Use -Werror when checking for -nopie;
otherwise clang warns about -nopie instead of failing, and then
later it warns everytime the build uses -nopie.
2015-04-03 Ulrich Müller <ulm@gentoo.org>
* configure.ac (LD_SWITCH_SYSTEM_TEMACS): Add -nopie option if it
@ -53,7 +69,7 @@
(HAVE_PTHREAD, LIB_PTHREAD): Port better to FreeBSD,
by also checking for pthread_create, pthread_self, pthread_sigmask.
Tighten the test for pthread_atfork while we're at it.
Fixes: bug#20136
(Bug#20136)
Merge from gnulib
This incorporates:
@ -74,7 +90,7 @@
Don't require GNU putenv
* configure.ac: Use system putenv even if it lacks GNU features, as
we don't need them. This works around a bug in FreeBSD 10.1 getenv.
Fixes: bug#19874
(Bug#19874)
2015-02-25 Paul Eggert <eggert@cs.ucla.edu>
@ -175,7 +191,7 @@
If gnustep-config works, use 'gnustep-config --objc-flags' and
'gnustep-config --gui-libs' to compute GNUstep configuration
variables, instead of attempting to infer them individually.
Fixes: bug#19507
(Bug#19507)
2015-01-21 Ulrich Müller <ulm@gentoo.org>
@ -203,7 +219,7 @@
* INSTALL: Document this.
* configure.ac: Add AM_SILENT_RULES([yes]).
(AM_DEFAULT_VERBOSITY): Remove now-unnecessary initialization.
Fixes: bug#19501
(Bug#19501)
2015-01-06 Paul Eggert <eggert@cs.ucla.edu>

1684
ChangeLog.2 Normal file

File diff suppressed because it is too large Load diff

298
INSTALL
View file

@ -13,21 +13,21 @@ msdos/INSTALL. For information about building from a repository checkout
BASIC INSTALLATION
On most Unix systems, you build Emacs by first running the `configure'
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.
'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.
Building Emacs requires GNU make, <http://www.gnu.org/software/make/>.
On most systems that Emacs supports, this is the default `make' program.
On most systems that Emacs supports, this is the default 'make' program.
Here's the procedure to build Emacs using `configure' on systems which
Here's the procedure to build Emacs using 'configure' on systems which
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
@ -40,48 +40,48 @@ sections if you need to.
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:
2a. 'cd' to the directory where you unpacked Emacs and invoke the
'configure' script:
./configure
2b. Alternatively, create a separate directory, outside the source
directory, where you want to build Emacs, and invoke `configure'
directory, where you want to build Emacs, and invoke 'configure'
from there:
SOURCE-DIR/configure
where SOURCE-DIR is the top-level Emacs source directory.
3. When `configure' finishes, it prints several lines of details
3. When 'configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully
looking for anything suspicious, such as wrong CPU and operating
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 may have to pass to `configure'
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
If 'configure' didn't find some image support libraries, such as
Xpm and jpeg, refer to "Image support libraries" below.
If the details printed by `configure' don't make any sense to
you, but there are no obvious errors, assume that `configure' did
If the details printed by 'configure' don't make any sense to
you, but there are no obvious errors, assume that 'configure' did
its job and proceed.
4. Invoke the `make' program:
4. Invoke the 'make' program:
make
5. If `make' succeeds, it will build an executable program `emacs'
in the `src' directory. You can try this program, to make sure
5. If 'make' succeeds, it will build an executable program 'emacs'
in the 'src' directory. You can try this program, to make sure
it works:
src/emacs -Q
6. Assuming that the program `src/emacs' starts and displays its
6. Assuming that the program 'src/emacs' starts and displays its
opening screen, you can install the program and its auxiliary
files into their installation directories:
@ -101,7 +101,7 @@ sections if you need to.
make distclean
Note that the install automatically saves space by compressing
(provided you have the `gzip' program) those installed Lisp source (.el)
(provided you have the 'gzip' program) those installed Lisp source (.el)
files that have corresponding .elc versions, as well as the Info files.
@ -114,7 +114,7 @@ On GNU and Unix systems, Emacs needs the optional libraries "m17n-db",
Indic and Khmer, and also for scripts that require Arabic shaping
support (Arabic and Farsi). On some systems, particularly GNU/Linux,
these libraries may be already present or available as additional
packages. Note that if there is a separate `dev' or `devel' package,
packages. Note that if there is a separate 'dev' or 'devel' package,
for use at compilation time rather than run time, you will need that
as well as the corresponding run time package; typically the dev
package will contain header files and a library archive. Otherwise,
@ -148,7 +148,7 @@ XBM images whose support is built-in.
On some systems, particularly on GNU/Linux, these libraries may
already be present or available as additional packages. If
there is a separate `dev' or `devel' package, for use at compilation
there is a separate 'dev' or 'devel' package, for use at compilation
time rather than run time, you will need that as well as the
corresponding run time package; typically the dev package will
contain header files and a library archive. Otherwise, you can
@ -195,15 +195,15 @@ number of free Unicode fonts.
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'
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 emacs24'. On Red Hat systems, the
corresponding command is `yum-builddep emacs'.
like 'apt-get build-dep emacs24'. On Red Hat systems, the
corresponding command is 'yum-builddep emacs'.
DETAILED BUILDING AND INSTALLATION:
@ -214,37 +214,37 @@ the file nt/INSTALL. For MS-DOS and MS Windows 3.X, see msdos/INSTALL.)
1) See the basic installation summary above for the disk space requirements.
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
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.
3a) To build in the top-level Emacs source directory, go to that
directory and run the program `configure' as follows:
directory and run the program 'configure' as follows:
./configure [--OPTION[=VALUE]] ...
If `configure' cannot determine your system type, try again
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
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
system has X, and arrange to use it if present.
The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
The '--x-includes=DIR' and '--x-libraries=DIR' options tell the build
process where the compiler should look for the include files and
object libraries used with the X Window System. Normally, `configure'
object libraries used with the X Window System. Normally, 'configure'
is able to find them; these options are necessary if you have your X
Window System files installed in unusual places. These options also
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 `gtk' (the default), `athena', or `motif' (`yes' and
`lucid' are synonyms for `athena'). Compiling with Motif causes a
configure Emacs; use the option '--with-x-toolkit=TOOLKIT', where
TOOLKIT is 'gtk' (the default), 'athena', or 'motif' ('yes' and
'lucid' are synonyms for 'athena'). Compiling with 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 Motif, if you have the Xaw3d library installed (see
@ -257,12 +257,12 @@ Emacs will autolaunch a D-Bus session bus, when the environment
variable DISPLAY is set, but no session bus is running. This might be
inconvenient for Emacs when running as daemon or running via a remote
ssh connection. In order to completely prevent the use of D-Bus, configure
Emacs with the options `--without-dbus --without-gconf --without-gsettings'.
Emacs with the options '--without-dbus --without-gconf --without-gsettings'.
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
POP3 are not supported. For Kerberos-authenticated POP add
`--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
'--with-kerberos', for Hesiod support add '--with-hesiod'. While POP3
is always enabled, whether Emacs actually uses POP is controlled by
individual users--see the Rmail chapter of the Emacs manual.
@ -322,28 +322,28 @@ that goes awry. 'make V=1' also enables the extra chatter.
Use --enable-link-time-optimization to enable link-time optimizer. If
you're using GNU compiler, this feature is supported since version 4.5.0.
If `configure' can determine number of online CPUS on your system, final
If 'configure' can determine number of online CPUS on your system, final
link-time optimization and code generation is executed in parallel using
one job per each available online CPU.
This option is also supported for clang. You should have GNU binutils
with `gold' linker and plugin support, and clang with LLVMgold.so plugin.
with 'gold' linker and plugin support, and clang with LLVMgold.so plugin.
Read http://llvm.org/docs/GoldPlugin.html for details. Also note that
this feature is still experimental, so prepare to build binutils and
clang from the corresponding source code repositories.
The `--prefix=PREFIXDIR' option specifies where the installation process
should put emacs and its data files. This defaults to `/usr/local'.
The '--prefix=PREFIXDIR' option specifies where the installation process
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).
(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 `23.2').
(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
i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise.
i686-pc-linux-gnu), unless the '--exec-prefix' option says otherwise.
The `--exec-prefix=EXECDIR' option allows you to specify a separate
The '--exec-prefix=EXECDIR' option allows you to specify a separate
portion of the directory tree for installing architecture-specific
files, like executables and utility programs. If specified,
- Emacs (and the other utilities users run) go in EXECDIR/bin, and
@ -358,26 +358,26 @@ For example, the command
configures Emacs to build for a 32-bit GNU/Linux distribution,
without sound support.
`configure' doesn't do any compilation or installation itself.
'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'.
'./Makefile' in the top-level directory and several subdirectories;
and './src/config.h'.
When it is done, `configure' prints a description of what it did and
creates a shell script `config.status' which, when run, recreates the
same configuration. If `configure' exits with an error after
disturbing the status quo, it removes `config.status'. `configure'
also creates a file `config.cache' that saves the results of its tests
to make reconfiguring faster, and a file `config.log' containing compiler
output (useful mainly for debugging `configure'). You can give
`configure' the option `--cache-file=FILE' to use the results of the
tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
disable caching, for debugging `configure'.
When it is done, 'configure' prints a description of what it did and
creates a shell script 'config.status' which, when run, recreates the
same configuration. If 'configure' exits with an error after
disturbing the status quo, it removes 'config.status'. 'configure'
also creates a file 'config.cache' that saves the results of its tests
to make reconfiguring faster, and a file 'config.log' containing compiler
output (useful mainly for debugging 'configure'). You can give
'configure' the option '--cache-file=FILE' to use the results of the
tests in FILE instead of 'config.cache'. Set FILE to '/dev/null' to
disable caching, for debugging 'configure'.
If the description of the system configuration printed by `configure'
If the description of the system configuration printed by 'configure'
is not right, or if it claims some of the features or libraries are not
available when you know they are, look at the `config.log' file for
the trace of the failed tests performed by `configure' to check
available when you know they are, look at the 'config.log' file for
the trace of the failed tests performed by 'configure' to check
whether these features are supported. Typically, some test fails
because the compiler cannot find some function in the system
libraries, or some macro-processor definition in the system headers.
@ -385,29 +385,29 @@ libraries, or some macro-processor definition in the system headers.
Some tests might fail because the compiler should look in special
directories for some header files, or link against optional
libraries, or use special compilation options. You can force
`configure' and the build process which follows it to do that by
'configure' and the build process which follows it to do that by
setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
before running `configure'. CPP is the command which invokes the
before running 'configure'. CPP is the command which invokes the
preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
compilation options, LDFLAGS are options used when linking, LIBS are
libraries to link against, and CC is the command which invokes the
compiler. By default, gcc is used if available.
Here's an example of a `configure' invocation, assuming a Bourne-like
Here's an example of a 'configure' invocation, assuming a Bourne-like
shell such as Bash, which uses these variables:
./configure \
CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
CFLAGS='-O3' LIBS='-lfoo -lbar'
(this is all one shell command). This tells `configure' to instruct the
preprocessor to look in the `/foo/myinclude' directory for header
(this is all one shell command). This tells 'configure' to instruct the
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
to look in '/bar/mylib' for libraries, pass the -O3 optimization
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
For some libraries, like Gtk+, fontconfig and ALSA, 'configure' uses
pkg-config to find where those libraries are installed.
If you want pkg-config to look in special directories, you have to set
PKG_CONFIG_PATH to point to the directories where the .pc-files for
@ -417,27 +417,27 @@ those libraries are. For example:
PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig'
3b) To build in a separate directory, go to that directory
and run the program `configure' as follows:
and run the program 'configure' as follows:
SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
SOURCE-DIR refers to the top-level Emacs source directory which is
where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in.
where Emacs's configure script is located. 'configure' looks for the
Emacs source code in the directory that 'configure' is in.
4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
4) Put into './lisp/site-init.el' or './lisp/site-load.el' any Emacs
Lisp code you want Emacs to load before it is dumped out. Use
site-load.el for additional libraries if you arrange for their
documentation strings to be in the etc/DOC file (see
src/Makefile.in if you wish to figure out how to do that). For all
else, use site-init.el. Do not load byte-compiled code which
was built with a non-nil value of `byte-compile-dynamic'.
was built with a non-nil value of 'byte-compile-dynamic'.
It is not a good idea to edit the normal .el files that come with Emacs.
Instead, use a file like site-init.el to change settings.
To change the value of a variable that is already defined in Emacs,
you should use the Lisp function `setq', not `defvar'. For example,
you should use the Lisp function 'setq', not 'defvar'. For example,
(setq news-inews-program "/usr/bin/inews")
@ -449,46 +449,46 @@ variable gets by default! Make sure you know what kind of value the
variable should have. If you don't pay attention to what you are
doing, you'll make a mistake.
The `site-*.el' files are nonexistent in the distribution. You do not
The 'site-*.el' files are nonexistent in the distribution. You do not
need to create them if you have nothing to put in them.
5) Refer to the file `./etc/TERMS' for information on fields you may
5) Refer to the file './etc/TERMS' for information on fields you may
wish to add to various termcap entries. (This is unlikely to be necessary.)
6) Run `make' in the top directory of the Emacs distribution to finish
6) Run 'make' in the top directory of the Emacs distribution to finish
building Emacs in the standard way. The final executable file is
named `src/emacs'. You can execute this file "in place" without
named 'src/emacs'. You can execute this file "in place" without
copying it, if you wish; then it automatically uses the sibling
directories ../lisp, ../lib-src, ../info.
Or you can "install" the executable and the other files into their
installed locations, with `make install'. By default, Emacs's files
installed locations, with 'make install'. By default, Emacs's files
are installed in the following directories:
`/usr/local/bin' holds the executable programs users normally run -
`emacs', `etags', `ctags', `emacsclient'.
'/usr/local/bin' holds the executable programs users normally run -
'emacs', 'etags', 'ctags', 'emacsclient'.
`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
`VERSION' stands for the number of the Emacs version
you are installing, like `23.1' or `23.2'. Since the
'/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
'VERSION' stands for the number of the Emacs version
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
at the same time; in particular, you don't have to
make Emacs unavailable while installing a new version.
`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
'/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
file, and other architecture-independent files Emacs
might need while running.
`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
'/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 value
deduced by the `configure' program to identify the
'VERSION' is the number of the Emacs version you are
installing, and 'CONFIGURATION-NAME' is the value
deduced by the 'configure' program to identify the
architecture and operating system of your machine,
like `i686-pc-linux-gnu' 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
@ -497,35 +497,35 @@ are installed in the following directories:
useful for sites at which different kinds of machines
share the file system Emacs is installed on.
`/usr/local/share/info' holds the on-line documentation for Emacs,
'/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.
`/usr/local/share/man/man1' holds the man pages for the programs installed
in `/usr/local/bin'.
'/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
files in these directories.
`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
'/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
files installed for Emacs version VERSION only.
`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
'/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
files installed for all Emacs versions.
When Emacs is installed, it searches for its Lisp files
in `/usr/local/share/emacs/VERSION/site-lisp', then in
`/usr/local/share/emacs/site-lisp', and finally in
`/usr/local/share/emacs/VERSION/lisp'.
in '/usr/local/share/emacs/VERSION/site-lisp', then in
'/usr/local/share/emacs/site-lisp', and finally in
'/usr/local/share/emacs/VERSION/lisp'.
If these directories are not what you want, you can specify where to
install Emacs's libraries and data files or where Emacs should search
for its Lisp files by giving values for `make' variables as part of
the command. See the section below called `MAKE VARIABLES' for more
for its Lisp files by giving values for 'make' variables as part of
the command. See the section below called 'MAKE VARIABLES' for more
information on this.
7) Check the file `dir' in your site's info directory (usually
7) Check the file 'dir' in your site's info directory (usually
/usr/local/share/info) to make sure that it has a menu entry for the
Emacs info files.
@ -534,51 +534,51 @@ then you might need to make the movemail program setuid or setgid
to enable it to write the lock files. We believe this is safe.
9) You are done! You can remove executables and object files from
the build directory by typing `make clean'. To also remove the files
that `configure' created (so you can compile Emacs for a different
configuration), type `make distclean'.
the build directory by typing 'make clean'. To also remove the files
that 'configure' created (so you can compile Emacs for a different
configuration), type 'make distclean'.
MAKE VARIABLES
You can change where the build process installs Emacs and its data
files by specifying values for `make' variables as part of the `make'
files by specifying values for 'make' variables as part of the 'make'
command line. For example, if you type
make install bindir=/usr/local/gnubin
the `bindir=/usr/local/gnubin' argument indicates that the Emacs
executable files should go in `/usr/local/gnubin', not
`/usr/local/bin'.
the 'bindir=/usr/local/gnubin' argument indicates that the Emacs
executable files should go in '/usr/local/gnubin', not
'/usr/local/bin'.
Here is a complete list of the variables you may want to set.
`bindir' indicates where to put executable programs that users can
'bindir' indicates where to put executable programs that users can
run. This defaults to /usr/local/bin.
`datadir' indicates where to put the architecture-independent
'datadir' indicates where to put the architecture-independent
read-only data files that Emacs refers to while it runs; it
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 tutorials, DOC file, etc.
`VERSION' is the number of the Emacs version you are installing,
like `23.1' or `23.2'. Since these files vary from one version
subdirectories under 'datadir':
- 'emacs/VERSION/lisp', containing the Emacs Lisp library, and
- 'emacs/VERSION/etc', containing the tutorials, DOC file, etc.
'VERSION' is the number of the Emacs version you are installing,
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
unavailable while installing a new version.
`libexecdir' indicates where to put architecture-specific data files that
Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
We create the following subdirectories under `libexecdir':
- `emacs/VERSION/CONFIGURATION-NAME', containing executable
'libexecdir' indicates where to put architecture-specific data files that
Emacs refers to as it runs; it defaults to '/usr/local/libexec'.
We create the following subdirectories under 'libexecdir':
- 'emacs/VERSION/CONFIGURATION-NAME', containing 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 value deduced by the
`configure' program to identify the architecture and operating
system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'.
'VERSION' is the number of the Emacs version you are installing,
and 'CONFIGURATION-NAME' is the value deduced by the
'configure' program to identify the architecture and operating
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
@ -587,57 +587,57 @@ Here is a complete list of the variables you may want to set.
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'.
'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/share/man/man1'.
'mandir' indicates where to put the man pages for Emacs and its
utilities (like 'etags'); it defaults to
'/usr/local/share/man/man1'.
`prefix' doesn't give a path for any specific part of Emacs; instead,
'prefix' doesn't give a path for any specific part of Emacs; instead,
its value is used to determine the defaults for all the
architecture-independent path variables - `datadir',
`sharedstatedir', `infodir', and `mandir'. Its default value is
`/usr/local'; the other variables add on `lib' or `man' to it
architecture-independent path variables - 'datadir',
'sharedstatedir', 'infodir', and 'mandir'. Its default value is
'/usr/local'; the other variables add on 'lib' or 'man' to it
by default.
For example, suppose your site generally places GNU software
under `/usr/users/software/gnusoft' instead of `/usr/local'.
under '/usr/users/software/gnusoft' instead of '/usr/local'.
By including
`prefix=/usr/users/software/gnusoft'
in the arguments to `make', you can instruct the build process
'prefix=/usr/users/software/gnusoft'
in the arguments to 'make', you can instruct the build process
to place all of the Emacs data files in the appropriate
directories under that path.
`exec_prefix' serves the same purpose as `prefix', but instead
'exec_prefix' serves the same purpose as 'prefix', but instead
determines the default values for the architecture-dependent
path variables - `bindir' and `libexecdir'.
path variables - 'bindir' and 'libexecdir'.
The above variables serve analogous purposes in the makefiles for all
GNU software; the following variables are specific to Emacs.
`archlibdir' indicates where Emacs installs and expects the executable
'archlibdir' indicates where Emacs installs and expects the executable
files and other architecture-dependent data it uses while
running. Its default value, based on `libexecdir' (which
see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
running. Its default value, based on 'libexecdir' (which
see), is '/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
(where VERSION and CONFIGURATION-NAME are as described above).
`GZIP_PROG' is the name of the executable that compresses installed info,
'GZIP_PROG' is the name of the executable that compresses installed info,
manual, and .el files. It defaults to gzip. Setting it to
the empty string suppresses compression.
Remember that you must specify any variable values you need each time
you run `make' in the top directory. If you run `make' once to build
emacs, test it, and then run `make' again to install the files, you
you run 'make' in the top directory. If you run 'make' once to build
emacs, test it, and then run 'make' again to install the files, you
must provide the same variable settings each time. To make the
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'.
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/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'.
before you run 'make'.
The top-level Makefile stores the variable settings it used in the
Makefiles for the subdirectories, so you don't have to specify them
@ -646,7 +646,7 @@ when running make in the subdirectories.
PROBLEMS
See the file `./etc/PROBLEMS' for a list of various problems sometimes
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.

View file

@ -30,13 +30,13 @@
# by building, but normally aren't because the distribution comes
# with them.
#
# Delete `.dvi' files here if they are not part of the distribution.
# Delete '.dvi' files here if they are not part of the distribution.
#
# make distclean
# Delete all files from the current directory that are created by
# configuring or building the program. If you have unpacked the
# source and built the program without creating any other files,
# `make distclean' should leave only the files that were in the
# 'make distclean' should leave only the files that were in the
# distribution.
#
# make maintainer-clean
@ -67,7 +67,7 @@ CDPATH=
# If Make doesn't predefine MAKE, set it here.
@SET_MAKE@
# ==================== Things `configure' Might Edit ====================
# ==================== Things 'configure' Might Edit ====================
cache_file = @cache_file@
CONFIGURE_FLAGS = --cache-file=$(cache_file)
@ -84,11 +84,11 @@ EXEEXT=@EXEEXT@
### to install files in.
### This should be the number of the Emacs version we're building,
### like `18.59' or `19.0'.
### like '24.5' or '25.0.50'.
version=@version@
### This should be the name of the configuration we're building Emacs
### for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
### for, like 'x86_64-unknown-linux-gnu' or 'powerpc-ibm-aix7.1.2.0'.
configuration=@configuration@
### The nt/ subdirectory gets built only for MinGW
@ -122,7 +122,7 @@ ns_self_contained=@ns_self_contained@
# not need to change them. This defaults to /usr/local.
prefix=@prefix@
# Like `prefix', but used for architecture-specific files.
# Like 'prefix', but used for architecture-specific files.
exec_prefix=@exec_prefix@
# Where to install Emacs and other binaries that people will want to
@ -171,7 +171,7 @@ bitmapdir=@bitmapdir@
# Where to find the source code. The source code for Emacs's C kernel is
# expected to be in ${srcdir}/src, and the source code for Emacs's
# utility programs is expected to be in ${srcdir}/lib-src. This is
# set by the configure script's `--srcdir' option.
# set by the configure script's '--srcdir' option.
# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
srcdir=@srcdir@
@ -316,7 +316,7 @@ etc-emacsver:
removenullpaths=sed -e 's/^:*//' -e 's/:*$$//g' -e 's/::*/:/g'
# Generate epaths.h from epaths.in. This target is invoked by `configure'.
# Generate epaths.h from epaths.in. This target is invoked by 'configure'.
# See comments in configure.ac for why it is done this way, as opposed
# to just letting configure generate epaths.h from epaths.in in a
# similar way to how Makefile is made from Makefile.in.
@ -350,7 +350,7 @@ epaths-force:
# The w32 build needs a slightly different editing, and it uses
# nt/epaths.nt as the template.
#
# Use the value of ${locallisppath} supplied by `configure',
# Use the value of ${locallisppath} supplied by 'configure',
# to support the --enable-locallisppath argument.
#
# In this case, the paths written to 'src/epaths.h' must be in native
@ -377,10 +377,10 @@ lib-src src: $(NTDIR) lib
src: lib-src
# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
# We need to build 'emacs' in 'src' to compile the *.elc files in 'lisp'.
lisp: src
# These targets should be "${SUBDIR} without `src'".
# These targets should be "${SUBDIR} without 'src'".
lib lib-src lisp nt: Makefile
$(MAKE) -C $@ all
@ -684,6 +684,7 @@ install-man:
thisdir=`/bin/pwd`; \
cd ${mansrcdir}; \
for page in *.1; do \
test "$$page" = ChangeLog.1 && continue; \
dest=`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1; \
(cd "$${thisdir}"; \
${INSTALL_DATA} ${mansrcdir}/$${page} "$(DESTDIR)${man1dir}/$${dest}"); \
@ -732,8 +733,8 @@ install-etc:
install-strip:
$(MAKE) INSTALL_STRIP=-s install
### Delete all the installed files that the `install' target would
### create (but not the noninstalled files such as `make all' would create).
### Delete all the installed files that the 'install' target would
### create (but not the noninstalled files such as 'make all' would create).
###
### Don't delete the lisp and etc directories if they're in the source tree.
uninstall: uninstall-$(NTDIR) uninstall-doc
@ -802,10 +803,10 @@ $(1)_$(2):
$$(MAKE) -C $(1) $(2)
endef
### `mostlyclean'
### Like `clean', but may refrain from deleting a few files that people
### normally don't want to recompile. For example, the `mostlyclean'
### target for GCC does not delete `libgcc.a', because recompiling it
### 'mostlyclean'
### Like 'clean', but may refrain from deleting a few files that people
### normally don't want to recompile. For example, the 'mostlyclean'
### target for GCC does not delete 'libgcc.a', because recompiling it
### is rarely necessary and takes a lot of time.
mostlyclean_dirs = src oldXMenu lwlib lib lib-src nt doc/emacs doc/misc \
doc/lispref doc/lispintro
@ -817,14 +818,14 @@ mostlyclean: $(mostlyclean_dirs:=_mostlyclean)
[ ! -d $$dir ] || $(MAKE) -C $$dir mostlyclean; \
done
### `clean'
### 'clean'
### Delete all files from the current directory that are normally
### created by building the program. Don't delete the files that
### record the configuration. Also preserve files that could be made
### by building, but normally aren't because the distribution comes
### with them.
###
### Delete `.dvi' files here if they are not part of the distribution.
### Delete '.dvi' files here if they are not part of the distribution.
clean_dirs = $(mostlyclean_dirs) nextstep
$(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
@ -833,19 +834,19 @@ clean: $(clean_dirs:=_clean)
for dir in test/automated; do \
[ ! -d $$dir ] || $(MAKE) -C $$dir clean; \
done
-rm -f etc/emacs.tmpdesktop etc/emacs.tmpappdata
-rm -f *.tmp etc/*.tmp*
-rm -rf info-dir.*
### `bootclean'
### 'bootclean'
### Delete all files that need to be remade for a clean bootstrap.
top_bootclean=\
rm -f config.cache config.log ${srcdir}/doc/man/emacs.1
### `distclean'
### 'distclean'
### Delete all files from the current directory that are created by
### configuring or building the program. If you have unpacked the
### source and built the program without creating any other files,
### `make distclean' should leave only the files that were in the
### 'make distclean' should leave only the files that were in the
### distribution.
top_distclean=\
${top_bootclean}; \
@ -861,8 +862,8 @@ distclean: $(distclean_dirs:=_distclean)
done
${top_distclean}
### `bootstrap-clean'
### Delete everything that can be reconstructed by `make' and that
### 'bootstrap-clean'
### Delete everything that can be reconstructed by 'make' and that
### needs to be deleted in order to force a bootstrap from a clean state.
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean)))
@ -875,16 +876,16 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
rm -f ${srcdir}/etc/refcards/emacsver.tex
${top_bootclean}
### `maintainer-clean'
### 'maintainer-clean'
### Delete everything from the current directory that can be
### reconstructed with this Makefile. This typically includes
### everything deleted by distclean, plus more: C source files
### produced by Bison, tags tables, info files, and so on.
###
### One exception, however: `make maintainer-clean' should not delete
### `configure' even if `configure' can be remade using a rule in the
### Makefile. More generally, `make maintainer-clean' should not delete
### anything that needs to exist in order to run `configure' and then
### One exception, however: 'make maintainer-clean' should not delete
### 'configure' even if 'configure' can be remade using a rule in the
### Makefile. More generally, 'make maintainer-clean' should not delete
### anything that needs to exist in order to run 'configure' and then
### begin to build the program.
top_maintainer_clean=\
${top_distclean}; \
@ -1087,6 +1088,51 @@ bootstrap: bootstrap-clean
$(MAKE) MAKEFILE_NAME=force-Makefile force-Makefile
$(MAKE) all
.PHONY: ChangeLog change-history change-history-commit
.PHONY: master-branch-is-current no-ChangeLog unchanged-history-files
# The newest revision that should not appear in the generated ChangeLog.
gen_origin = 2c1b8604946efbcd8ec5dd6c6dda7541ce4fc3c0
# Convert git commit log to ChangeLog file. make-dist uses this.
ChangeLog:
$(AM_V_GEN)distprefix=$(distprefix) srcprefix=$(srcdir)/ \
$(srcdir)/build-aux/gitlog-to-emacslog $(gen_origin)
# The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ...,
# ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX). $(CHANGELOG_N) stands for
# the newest (highest-numbered) ChangeLog history file.
CHANGELOG_HISTORY_INDEX_MAX = 2
CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
# Check that we are in a good state for changing history.
no-ChangeLog:
test ! -f ChangeLog
master-branch-is-current:
git branch | grep -q '^\* master$$'
unchanged-history-files:
x=$$(git diff-files --name-only $(CHANGELOG_N) Makefile.in) && \
test -z "$$x"
# Copy newer commit messages to the start of the ChangeLog history file,
# and consider them to be older.
change-history: no-ChangeLog master-branch-is-current unchanged-history-files \
ChangeLog
(sed '/^;; [L]ocal Variables:/,$$d' <ChangeLog && cat $(CHANGELOG_N)) \
>$(CHANGELOG_N).tmp
new_origin=$$(git log --pretty=format:%H HEAD^!) && \
sed 's/^\(gen_origin *= *\).*/\1'"$$new_origin/" \
<Makefile.in >Makefile.in.tmp
mv $(CHANGELOG_N).tmp $(CHANGELOG_N)
mv Makefile.in.tmp Makefile.in
$(MAKE) $@-commit
# If 'make change-history' fails because the newest ChangeLog history
# file contains invalid text, fix the file by hand and then run
# 'make change-history-commit'.
change-history-commit:
git commit -m'; make $@' $(CHANGELOG_N) Makefile.in
.PHONY: check-declare
check-declare:

56
README
View file

@ -22,71 +22,71 @@ in code we don't use often. Please send bug reports to the mailing
list bug-gnu-emacs@gnu.org. If possible, use M-x report-emacs-bug.
See the "Bugs" section of the Emacs manual for more information on how
to report bugs. (The file `BUGS' in this directory explains how you
to report bugs. (The file 'BUGS' in this directory explains how you
can find and read that section using the Info files that come with
Emacs.) For a list of mailing lists related to Emacs, see
<http://savannah.gnu.org/mail/?group=emacs>. For the complete
list of GNU mailing lists, see <http://lists.gnu.org/>.
The `etc' subdirectory contains several other files, named in capital
The 'etc' subdirectory contains several other files, named in capital
letters, which you might consider looking at when installing GNU
Emacs.
The file `configure' is a shell script to acclimate Emacs to the
The file 'configure' is a shell script to acclimate Emacs to the
oddities of your processor and operating system. It creates the file
`Makefile' (a script for the `make' program), which automates the
'Makefile' (a script for the 'make' program), which automates the
process of building and installing Emacs. See INSTALL for more
detailed information.
The file `configure.ac' is the input used by the autoconf program to
construct the `configure' script.
The file 'configure.ac' is the input used by the autoconf program to
construct the 'configure' script.
The shell script `autogen.sh' generates 'configure' and other files by
The shell script 'autogen.sh' generates 'configure' and other files by
running the GNU build tools autoconf and automake, which in turn use
GNU m4 and Perl. If you want to use it, you will need to install
recent versions of these build tools. This should be needed only if
you edit files like `configure.ac' that specify Emacs's autobuild
you edit files like 'configure.ac' that specify Emacs's autobuild
procedure.
The file `Makefile.in' is a template used by `configure' to create
`Makefile'.
The file 'Makefile.in' is a template used by 'configure' to create
'Makefile'.
The file `make-dist' is a shell script to build a distribution tar
The file 'make-dist' is a shell script to build a distribution tar
file from the current Emacs tree, containing only those files
appropriate for distribution. If you make extensive changes to Emacs,
this script will help you distribute your version to others.
There are several subdirectories:
`src' holds the C code for Emacs (the Emacs Lisp interpreter and
'src' holds the C code for Emacs (the Emacs Lisp interpreter and
its primitives, the redisplay code, and some basic editing
functions).
`lisp' holds the Emacs Lisp code for Emacs (most everything else).
`leim' holds the original source files for the generated files
'lisp' holds the Emacs Lisp code for Emacs (most everything else).
'leim' holds the original source files for the generated files
in lisp/leim. These form the library of Emacs input methods,
required to type international characters that can't be
directly produced by your keyboard.
`lib' holds source code for libraries used by Emacs and its utilities
`lib-src' holds the source code for some utility programs for use by or
'lib' holds source code for libraries used by Emacs and its utilities
'lib-src' holds the source code for some utility programs for use by or
with Emacs, like movemail and etags.
`etc' holds miscellaneous architecture-independent data files Emacs
'etc' holds miscellaneous architecture-independent data files Emacs
uses, like the tutorial text and tool bar images.
The contents of the `lisp', `leim', `info', and `doc'
The contents of the 'lisp', 'leim', 'info', and 'doc'
subdirectories are architecture-independent too.
`info' holds the Info documentation tree for Emacs.
`doc/emacs' holds the source code for the Emacs Manual. If you modify the
manual sources, you will need the `makeinfo' program to produce
an updated manual. `makeinfo' is part of the GNU Texinfo
'info' holds the Info documentation tree for Emacs.
'doc/emacs' holds the source code for the Emacs Manual. If you modify the
manual sources, you will need the 'makeinfo' program to produce
an updated manual. 'makeinfo' is part of the GNU Texinfo
package; you need a suitably recent version of Texinfo.
`doc/lispref' holds the source code for the Emacs Lisp reference manual.
`doc/lispintro' holds the source code for the Introduction to Programming
'doc/lispref' holds the source code for the Emacs Lisp reference manual.
'doc/lispintro' holds the source code for the Introduction to Programming
in Emacs Lisp manual.
`msdos' holds configuration files for compiling Emacs under MS-DOS.
`nextstep' holds instructions and some other files for compiling the
'msdos' holds configuration files for compiling Emacs under MS-DOS.
'nextstep' holds instructions and some other files for compiling the
Nextstep port of Emacs, for GNUstep and Mac OS X Cocoa.
`nt' holds various command files and documentation files that pertain
'nt' holds various command files and documentation files that pertain
to building and running Emacs on Windows 9X/ME/NT/2000/XP.
`test' holds tests for various aspects of Emacs's functionality.
'test' holds tests for various aspects of Emacs's functionality.
Building Emacs on non-Posix platforms requires tools that aren't part
of the standard distribution of the OS. The platform-specific README

View file

@ -28,10 +28,6 @@
(defvar add-log-time-format) ; in add-log
;; Does this information need to be in every ChangeLog, as opposed to
;; just the top-level one? Only if you allow changes the same
;; day as the release.
;; http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00161.html
(defun add-release-logs (root version &optional date)
"Add \"Version VERSION released.\" change log entries in ROOT.
Root must be the root of an Emacs source tree.
@ -203,6 +199,7 @@ Optional argument TYPE is type of output (nil means all)."
(ps-dir (expand-file-name "ps" dest))
(pdf-dir (expand-file-name "pdf" dest))
(emacs (expand-file-name "doc/emacs/emacs.texi" root))
(emacs-xtra (expand-file-name "doc/emacs/emacs-xtra.texi" root))
(elisp (expand-file-name "doc/lispref/elisp.texi" root))
(eintr (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
(misc (manual-misc-manuals root)))
@ -216,10 +213,14 @@ Optional argument TYPE is type of output (nil means all)."
(manual-html-node emacs (expand-file-name "emacs" html-node-dir)))
(if (member type '(nil "emacs" "emacs-mono"))
(manual-html-mono emacs (expand-file-name "emacs.html" html-mono-dir)))
(if (member type '(nil "emacs" "emacs-pdf" "pdf"))
(manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir)))
(if (member type '(nil "emacs" "emacs-ps" "ps"))
(manual-ps emacs (expand-file-name "emacs.ps" ps-dir)))
(when (member type '(nil "emacs" "emacs-pdf" "pdf"))
(manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir))
;; emacs-xtra exists only in pdf/ps format.
;; In other formats it is included in the Emacs manual.
(manual-pdf emacs-xtra (expand-file-name "emacs-xtra.pdf" pdf-dir)))
(when (member type '(nil "emacs" "emacs-ps" "ps"))
(manual-ps emacs (expand-file-name "emacs.ps" ps-dir))
(manual-ps emacs-xtra (expand-file-name "emacs-xtra.ps" ps-dir)))
(if (member type '(nil "elisp" "elisp-node"))
(manual-html-node elisp (expand-file-name "elisp" html-node-dir)))
(if (member type '(nil "elisp" "elisp-mono"))
@ -601,7 +602,7 @@ style=\"text-align:left\">")
(copy-file "../doc/misc/texinfo.tex" stem)
(or (equal type "emacs") (copy-file "../doc/emacs/emacsver.texi" stem))
(dolist (file (directory-files (format "../doc/%s" type) t))
(if (or (string-match-p "\\(\\.texi\\'\\|/ChangeLog\\|/README\\'\\)" file)
(if (or (string-match-p "\\(\\.texi\\'\\|/README\\'\\)" file)
(and (equal type "lispintro")
(string-match-p "\\.\\(eps\\|pdf\\)\\'" file)))
(copy-file file stem)))

View file

@ -27,6 +27,9 @@
;; Use M-x authors RET to create an *Authors* buffer that can used as
;; or merged with Emacs's AUTHORS file.
;; FIXME: This needs to modernized in the light of current practice,
;; which generates a single top-level ChangeLog file from commit logs.
;;; Code:
(defvar authors-coding-system 'utf-8
@ -76,7 +79,7 @@ files.")
("Gerd Möllmann" "Gerd Moellmann")
("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth")
("Hrvoje Nikšić" "Hrvoje Niksic")
;; lisp/org/ChangeLog 2010-11-11.
;; lisp/org/ChangeLog.1 2010-11-11.
(nil "aaa bbb")
(nil "Code Extracted") ; lisp/newcomment.el's "Author:" header
("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
@ -650,6 +653,7 @@ Changes to files in this list are not listed.")
"calc/calc-maint.el"
"emacs-lisp/cl-specs.el"
"emacs-lisp/eieio-comp.el"
"emacs-lisp/eieio-generic.el"
"erc-hecomplete.el"
"eshell/esh-maint.el"
"language/persian.el"
@ -800,6 +804,7 @@ in the repository.")
("play/yow.el" . "yow.el")
("patcomp.el" . "patcomp.el")
("emulation/ws-mode.el" . "ws-mode.el")
("vc/vc-arch.el" . "vc-arch.el")
;; From lisp to etc/forms.
("forms-d2.el" . "forms-d2.el")
("forms-pass.el" . "forms-pass.el")
@ -811,6 +816,9 @@ in the repository.")
("eshell/esh-test.el" . "automated/eshell.el")
("automated/cl-lib.el" . "automated/cl-lib-tests.el")
("automated/package-x-test.el" . "automated/package-test.el")
("indent/js-indent-first-initialiser-t.js" . "indent/js-indent-init-t.js")
("indent/js-indent-first-initialiser-dynamic.js" .
"indent/js-indent-init-dynamic.js")
;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
("INSTALL-CVS" . "INSTALL.REPO")
("INSTALL.CVS" . "INSTALL.REPO")
@ -971,10 +979,8 @@ Elements with LAX non-nil are only used in `authors-lax-changelogs'.")
;; Eg the progmodes/ (etc) directories did not exist before 1997.
;; Also, lib-src/ did not exist, the files were in etc/.
;; And various other things.
;; Maybe this should just be any ChangeLog with a . extension,
;; assuming we always fix logs fully before rotating them?
(defconst authors-lax-changelogs
'("erc/ChangeLog\\.0[1-8]\\'"
'("erc/ChangeLog\\.1\\'"
"gnus/ChangeLog\\.[1-2]\\'"
"lisp/ChangeLog\\.\\([1-9]\\|1[0-5]\\)\\'"
"mh-e/ChangeLog\\.1\\'"

View file

@ -31,30 +31,45 @@ General steps (for each step, check for possible errors):
M-x authors RET
If there is an "*Authors Errors*" buffer, address the issues.
If there was a ChangeLog typo, fix it. If a file was deleted or
renamed, consider adding an appropriate entry to authors-ignored-files,
authors-valid-file-names, or authors-renamed-files-alist.
If there was a ChangeLog typo, run "make change-history" and then
fix the newest ChangeLog history file. If a file was deleted or
renamed, consider adding an appropriate entry to
authors-ignored-files, authors-valid-file-names, or
authors-renamed-files-alist.
If necessary, repeat M-x authors after making those changes.
Save the "*Authors*" buffer as etc/AUTHORS.
Check the diff looks reasonable. Maybe add entries to
authors-ambiguous-files or authors-aliases, and repeat.
Commit any fixes to ChangeLogs or authors.el.
Commit any fixes to authors.el.
3. Set the version number (M-x load-file RET admin/admin.el RET, then
M-x set-version RET). For a release, add released ChangeLog
entries (M-x add-release-logs RET).
entries (create a ChangeLog symlink a la vc-dwim, then run M-x
add-release-logs RET, then run the shell command 'vc-dwim --commit').
For a pretest, start at version .90. After .99, use .990 (so that
it sorts).
The final pretest should be a release candidate. Set the version
number to that of the actual release. Pick a date about a week
from now when you intend to make the release. Use M-x add-release-logs
to add the ChangeLog entries for that date to the tar file (but
not yet to the repository). Name the tar file as
emacs-XX.Y-rc1.tar. If all goes well in the following week, you
can simply rename the file and use it for the actual release.
from now when you intend to make the release. Use vc-dwim and
M-x add-release-logs as described above to add commit messages
that will appear in the tarball's automatically-generated ChangeLog
file as entries for that date.
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
following week, you can simply rename the file and use it for the
actual release. If you need another release candidate, remember
to adjust the ChangeLog entries.
If you need to change only a file(s) that cannot possibly affect
the build (README, ChangeLog, NEWS, etc.) then rather than doing
an entirely new build, it is better to unpack the existing
tarfile, modify the file(s), and tar it back up again.
Never replace an existing tarfile! If you need to fix something,
always upload it with a different name.
4. autoreconf -i -I m4 --force
make bootstrap
@ -65,8 +80,7 @@ General steps (for each step, check for possible errors):
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed
by M-x set-version. For a release, also commit the ChangeLog
files in all directories.
by M-x set-version.
If someone else made a commit between step 1 and now,
you need to repeat from step 4 onwards. (You can commit the files
@ -154,8 +168,38 @@ General steps (for each step, check for possible errors):
of past announcements. The first pretest announcement, and the
release announcement, should have more detail.
12. For a release, update the Emacs homepage emacs.html in the web repository.
Also update history.html, and add the new NEWS file as news/NEWS.xx.y.
Regenerate the html manuals (use make-manuals from admin.el).
If there are new manuals, add appropriate index pages.
Delete any old manual pages that are no longer present.
12. After a release, update the Emacs pages as below.
UPDATING THE EMACS WEB PAGES AFTER A RELEASE
As soon as possible after a release, the Emacs web pages should be updated.
Anyone with write access to the Emacs code repository can do this.
For instructions, see <http://savannah.gnu.org/cvs/?group=emacs>.
Changes go live more or less as soon as they are committed.
The pages to update are:
emacs.html (for a new major release, a more thorough update is needed)
history.html
add the new NEWS file as news/NEWS.xx.y
Use M-x make-manuals from admin/admin.el to regenerate the html
manuals in manual/. If there are new manuals, add appropriate index
pages in manual/ and add them to manual/index.html. In the
manual/html_node directory, delete any old manual pages that are no
longer present.
Tar up the generated html_node/emacs/ and elisp/ directories and update
the files manual/elisp.html_node.tar.gz and emacs.html_node.tar.gz.
Use M-x make-manuals-dist from from admin/admin.el to update the
manual/texi/ tarfiles.
Add compressed copies of the main info pages from the tarfile to manual/info/.
Update the refcards/pdf/ and ps/ directories, and also
refcards/emacs-refcards.tar.gz (use make -C etc/refcards pdf ps dist).
Browsing <http://web.cvs.savannah.gnu.org/viewvc/?root=emacs> is one
way to check for any files that still need updating.

View file

@ -31,7 +31,7 @@ GNULIB_MODULES='
crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
dtoastr dtotimespec dup2 environ execinfo faccessat
fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync
getloadavg getopt-gnu gettime gettimeofday
getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog
intprops largefile lstat
manywarnings memrchr mkostemp mktime
pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat

View file

@ -10,10 +10,10 @@ instructions.
* Install changes only on one branch, let them get merged elsewhere if needed.
In particular, install bug-fixes only on the release branch (if there
is one) and let them get synced to the trunk; do not install them by
hand on the trunk as well. E.g. if there is an active "emacs-24" branch
is one) and let them get synced to the master; do not install them by
hand on the master as well. E.g. if there is an active "emacs-24" branch
and you have a bug-fix appropriate for the next emacs-24.x release,
install it only on the emacs-24 branch, not on the trunk as well.
install it only on the emacs-24 branch, not on the master as well.
Installing things manually into more than one branch makes merges more
difficult.
@ -21,10 +21,10 @@ difficult.
http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01124.html
The exception is, if you know that the change will be difficult to
merge to the trunk (eg because the trunk code has changed a lot).
In that case, it's helpful if you can apply the change to both trunk
merge to the master (eg because the master code has changed a lot).
In that case, it's helpful if you can apply the change to both master
and branch yourself (when committing the branch change, indicate
in the commit log that it should not be merged to the trunk, by
in the commit log that it should not be merged to the master, by
including the phrase "Not to be merged to master", or any other phrase
that matches "merge").
@ -32,14 +32,14 @@ that matches "merge").
If your branch has only a single commit, or many different real
commits, it is fine to do a merge. If your branch has only a very
small number of "real" commits, but several "merge from trunks", it is
preferred that you take your branch's diff, apply it to the trunk, and
small number of "real" commits, but several "merge from masters", it is
preferred that you take your branch's diff, apply it to the master, and
commit directly, not merge. This keeps the history cleaner.
In general, when working on some feature in a separate branch, it is
preferable not to merge from trunk until you are done with the
preferable not to merge from master until you are done with the
feature. Unless you really need some change that was done on the
trunk while you were developing on the branch, you don't really need
master while you were developing on the branch, you don't really need
those merges; just merge once, when you are done with the feature, and
Bazaar will take care of the rest. Bazaar is much better in this than
CVS, so interim merges are unnecessary.
@ -66,22 +66,14 @@ variable in admin/merge-gnulib before running it.
If you remove a gnulib module, or if a gnulib module
removes a file, then remove the corresponding files by hand.
* How to merge changes from emacs-24 to trunk
* How to merge changes from emacs-24 to master
[The section on git merge procedure has not yet been written]
Inspect the change log entries (e.g. in case too many entries have been
included or whitespace between entries needs fixing). If someone made
multiple change log entries on different days in the branch, you may
wish to collapse them all to a single entry for that author in the
trunk (because in the trunk they all appear under the same date).
Obviously, if there are multiple changes to the same file by different
authors, don't break the logical ordering in doing this.
[The section on git merge procedure has not yet been written.]
You may see conflicts in autoload md5sums in comments. Strictly
speaking, the right thing to do is merge everything else, resolve the
conflict by choosing either the trunk or branch version, then run
`make -C lisp autoloads' to update the md5sums to the correct trunk
conflict by choosing either the master or branch version, then run
`make -C lisp autoloads' to update the md5sums to the correct master
value before committing.
* Re-adding a file that has been removed from the repository
@ -124,3 +116,21 @@ again.
This is a semi-automated way to find the revision that introduced a bug.
Browse `git help bisect' for technical instructions.
* Maintaining ChangeLog history
Older ChangeLog entries are kept in history files named ChangeLog.1,
ChangeLog.2, etc., and can be edited just as any other source files
can. Newer ChangeLog entries are stored in the repository as commit
messages, which cannot be edited directly.
'make ChangeLog' copies newer ChangeLog entries into a file
'ChangeLog' that is intended to be put into the distribution tarball.
This ChangeLog file is not put into the repository.
'make change-history' copies all newer ChangeLog entries into the
start of the newest ChangeLog history file. These ChangeLog entries
are thereafter considered to be old, so later uses of 'make ChangeLog'
and/or 'make change-history' will no longer copy the entries. To
alter ChangeLog history, run 'make change-history', then edit
the ChangeLog history files manually and commit your changes.

View file

@ -102,7 +102,8 @@
(tail table)
(block-names '(("^<CJK Ideograph" . CJK\ IDEOGRAPH)
("^<Hangul Syllable" . HANGUL\ SYLLABLE)
("^<.*Surrogate" . nil)
("^<.*High Surrogate" . HIGH\ SURROGATE)
("^<.*Low Surrogate" . LOW\ SURROGATE)
("^<.*Private Use" . PRIVATE\ USE)))
val char name)
(setq unidata-text-file (expand-file-name unidata-text-file unidata-dir))
@ -137,11 +138,8 @@
(if (string-match (caar l) block-name)
(setq name (cdar l) l nil)
(setq l (cdr l))))
(if (not name)
;; As this is a surrogate pair range, ignore it.
(setq val nil)
(setcar val (cons first char))
(setcar (cdr val) name))))
(setcar val (cons first char))
(setcar (cdr val) name)))
(when val
(setcdr tail (list val))
@ -783,6 +781,10 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
(format "%s-%04X" sym char))
((eq sym 'CJK\ COMPATIBILITY\ IDEOGRAPH)
(format "%s-%04X" sym char))
((eq sym 'HIGH\ SURROGATE)
(format "%s-%04X" sym char))
((eq sym 'LOW\ SURROGATE)
(format "%s-%04X" sym char))
((eq sym 'VARIATION\ SELECTOR)
(format "%s-%d" sym (+ (- char #xe0100) 17))))))))

View file

@ -29,41 +29,55 @@ fi
# Use a UTF-8 locale if available, so that the UTF-8 check works.
# Use U+00A2 CENT SIGN to test whether the locale works.
cent_sign_utf8_octal='\302\242'
at_sign=`
printf "${cent_sign_utf8_octal}@" |
$awk '{print substr($0, 2)}' 2>/dev/null
`
cent_sign_utf8_format='\302\242\n'
cent_sign=`printf "$cent_sign_utf8_format"`
print_at_sign='BEGIN {print substr("'$cent_sign'@", 2)}'
at_sign=`$awk "$print_at_sign" </dev/null 2>/dev/null`
if test "$at_sign" != @; then
at_sign=`
printf "${cent_sign_utf8_octal}@" |
LC_ALL=en_US.UTF-8 $awk '{print substr($0, 2)}' 2>/dev/null
`
at_sign=`LC_ALL=en_US.UTF-8 $awk "$print_at_sign" </dev/null 2>/dev/null`
if test "$at_sign" = @; then
LC_ALL=en_US.UTF-8; export LC_ALL
LC_ALL=en_US.UTF-8
else
LC_ALL=C
fi
export LC_ALL
fi
# Check the log entry.
exec $awk '
exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
BEGIN {
# These regular expressions assume traditional Unix unibyte behavior.
# They are needed for old or broken versions of awk, e.g.,
# mawk 1.3.3 (1996), or gawk on MSYS (2015), and/or for systems that
# cannot use UTF-8 as the codeset for the locale.
space = "[ \f\n\r\t\v]"
non_space = "[^ \f\n\r\t\v]"
# The non_print below rejects control characters and surrogates
# UTF-8 for: 0x01-0x1f 0x7f 0x80-0x9f 0xd800-0xdbff 0xdc00-0xdfff
non_print = "[\1-\37\177]|\302[\200-\237]|\355[\240-\277][\200-\277]"
# Prefer POSIX regular expressions if available, as they do a
# better job of checking. Similarly, prefer POSIX negated
# expressions if UTF-8 also works.
if (" " ~ /[[:space:]]/) {
space = "[[:space:]]"
non_space = "[^[:space:]]"
non_print = "[^[:print:]]"
} else {
# mawk 1.3.3 does not support POSIX bracket expressions.
# Approximate them as best we can.
space = "[ \f\n\r\t\v]"
non_space = "[^ \f\n\r\t\v]"
non_print = "[\1-\37\177]"
if (at_sign == "@" && cent_sign ~ /^[[:print:]]$/) {
non_space = "[^[:space:]]"
non_print = "[^[:print:]]"
}
}
}
/^#/ { next }
/^#/ {
# Ignore every line after a scissors line.
if (/^# *---* *(>[8%]|[8%]<) *---* *$/) { exit }
# Ignore comment lines.
next
}
!/^.*$/ {
print "Invalid character (not UTF-8) in commit message; see 'CONTRIBUTE'"
print "Invalid character (not UTF-8) in commit message"
status = 1
}
@ -77,13 +91,13 @@ exec $awk '
sub(/^squash! /, "")
if ($0 ~ "^" space) {
print "White space at start of commit message'\''s first line; see 'CONTRIBUTE'"
print "White space at start of commit message'\''s first line"
status = 1
}
}
nlines == 2 && $0 ~ non_space {
print "Nonempty second line in commit message; see 'CONTRIBUTE'"
print "Nonempty second line in commit message"
status = 1
}
@ -97,30 +111,33 @@ exec $awk '
}
78 < length && $0 ~ space {
print "Line longer than 78 characters in commit message; see 'CONTRIBUTE'"
print "Line longer than 78 characters in commit message"
status = 1
}
140 < length {
print "Word longer than 140 characters in commit message; see 'CONTRIBUTE'"
print "Word longer than 140 characters in commit message"
status = 1
}
/^Signed-off-by: / {
print "'\''Signed-off-by:'\'' in commit message; see 'CONTRIBUTE'"
print "'\''Signed-off-by:'\'' in commit message"
status = 1
}
$0 ~ non_print {
print "Unprintable character in commit message; see 'CONTRIBUTE'"
print "Unprintable character in commit message"
status = 1
}
END {
if (nlines == 0) {
print "Empty commit message; see 'CONTRIBUTE'"
print "Empty commit message"
status = 1
}
if (status != 0) {
print "Commit aborted; please see the file 'CONTRIBUTE'"
}
exit status
}
' <"$1"

View file

@ -34,13 +34,15 @@ if test "$nbadchars" -ne 0; then
exit 1
fi
new_names=`$git_diff HEAD` || exit
case "
$new_names" in
*/-* | *'
'-*)
echo "File name component begins with '-'."
exit 1;;
esac
for new_name in `$git_diff HEAD`; do
case $new_name in
-* | */-*)
echo "$new_name: File name component begins with '-'."
exit 1;;
ChangeLog | */ChangeLog)
echo "$new_name: Please use git commit messages, not ChangeLog files."
exit 1;;
esac
done
exec git diff-index --check --cached HEAD --

445
build-aux/gitlog-to-changelog Executable file
View file

@ -0,0 +1,445 @@
eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
& eval 'exec perl -wS "$0" $argv:q'
if 0;
# Convert git log output to ChangeLog format.
my $VERSION = '2015-04-09 16:03'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
# do its job. Otherwise, update this string manually.
# Copyright (C) 2008-2015 Free Software Foundation, Inc.
# This program 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 of the License, or
# (at your option) any later version.
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
# Written by Jim Meyering
use strict;
use warnings;
use Getopt::Long;
use POSIX qw(strftime);
(my $ME = $0) =~ s|.*/||;
# use File::Coda; # http://meyering.net/code/Coda/
END {
defined fileno STDOUT or return;
close STDOUT and return;
warn "$ME: failed to close standard output: $!\n";
$? ||= 1;
}
sub usage ($)
{
my ($exit_code) = @_;
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
if ($exit_code != 0)
{
print $STREAM "Try '$ME --help' for more information.\n";
}
else
{
print $STREAM <<EOF;
Usage: $ME [OPTIONS] [ARGS]
Convert git log output to ChangeLog format. If present, any ARGS
are passed to "git log". To avoid ARGS being parsed as options to
$ME, they may be preceded by '--'.
OPTIONS:
--amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
makes a change to SHA1's commit log text or metadata.
--append-dot append a dot to the first line of each commit message if
there is no other punctuation or blank at the end.
--no-cluster never cluster commit messages under the same date/author
header; the default is to cluster adjacent commit messages
if their headers are the same and neither commit message
contains multiple paragraphs.
--srcdir=DIR the root of the source tree, from which the .git/
directory can be derived.
--since=DATE convert only the logs since DATE;
the default is to convert all log entries.
--until=DATE convert only the logs older than DATE.
--ignore-matching=PAT ignore commit messages whose first lines match PAT.
--format=FMT set format string for commit subject and body;
see 'man git-log' for the list of format metacharacters;
the default is '%s%n%b%n'
--strip-tab remove one additional leading TAB from commit message lines.
--strip-cherry-pick remove data inserted by "git cherry-pick";
this includes the "cherry picked from commit ..." line,
and the possible final "Conflicts:" paragraph.
--help display this help and exit
--version output version information and exit
EXAMPLE:
$ME --since=2008-01-01 > ChangeLog
$ME -- -n 5 foo > last-5-commits-to-branch-foo
SPECIAL SYNTAX:
The following types of strings are interpreted specially when they appear
at the beginning of a log message line. They are not copied to the output.
Copyright-paperwork-exempt: Yes
Append the "(tiny change)" notation to the usual "date name email"
ChangeLog header to mark a change that does not require a copyright
assignment.
Co-authored-by: Joe User <user\@example.com>
List the specified name and email address on a second
ChangeLog header, denoting a co-author.
Signed-off-by: Joe User <user\@example.com>
These lines are simply elided.
In a FILE specified via --amend, comment lines (starting with "#") are ignored.
FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
a line) referring to a commit in the current project, and CODE refers to one
or more consecutive lines of Perl code. Pairs must be separated by one or
more blank line.
Here is sample input for use with --amend=FILE, from coreutils:
3a169f4c5d9159283548178668d2fae6fced3030
# fix typo in title:
s/all tile types/all file types/
1379ed974f1fa39b12e2ffab18b3f7a607082202
# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
# Change the author to be Paul. Note the escaped "@":
s,Jim .*>,Paul Eggert <eggert\\\@cs.ucla.edu>,
EOF
}
exit $exit_code;
}
# If the string $S is a well-behaved file name, simply return it.
# If it contains white space, quotes, etc., quote it, and return the new string.
sub shell_quote($)
{
my ($s) = @_;
if ($s =~ m![^\w+/.,-]!)
{
# Convert each single quote to '\''
$s =~ s/\'/\'\\\'\'/g;
# Then single quote the string.
$s = "'$s'";
}
return $s;
}
sub quoted_cmd(@)
{
return join (' ', map {shell_quote $_} @_);
}
# Parse file F.
# Comment lines (starting with "#") are ignored.
# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
# (alone on a line) referring to a commit in the current project, and
# CODE refers to one or more consecutive lines of Perl code.
# Pairs must be separated by one or more blank line.
sub parse_amend_file($)
{
my ($f) = @_;
open F, '<', $f
or die "$ME: $f: failed to open for reading: $!\n";
my $fail;
my $h = {};
my $in_code = 0;
my $sha;
while (defined (my $line = <F>))
{
$line =~ /^\#/
and next;
chomp $line;
$line eq ''
and $in_code = 0, next;
if (!$in_code)
{
$line =~ /^([0-9a-fA-F]{40})$/
or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
$fail = 1, next;
$sha = lc $1;
$in_code = 1;
exists $h->{$sha}
and (warn "$ME: $f:$.: duplicate SHA1\n"),
$fail = 1, next;
}
else
{
$h->{$sha} ||= '';
$h->{$sha} .= "$line\n";
}
}
close F;
$fail
and exit 1;
return $h;
}
# git_dir_option $SRCDIR
#
# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
# is undef). Return as a list (0 or 1 element).
sub git_dir_option($)
{
my ($srcdir) = @_;
my @res = ();
if (defined $srcdir)
{
my $qdir = shell_quote $srcdir;
my $cmd = "cd $qdir && git rev-parse --show-toplevel";
my $qcmd = shell_quote $cmd;
my $git_dir = qx($cmd);
defined $git_dir
or die "$ME: cannot run $qcmd: $!\n";
$? == 0
or die "$ME: $qcmd had unexpected exit code or signal ($?)\n";
chomp $git_dir;
push @res, "--git-dir=$git_dir/.git";
}
@res;
}
{
my $since_date;
my $until_date;
my $format_string = '%s%n%b%n';
my $amend_file;
my $append_dot = 0;
my $cluster = 1;
my $ignore_matching;
my $strip_tab = 0;
my $strip_cherry_pick = 0;
my $srcdir;
GetOptions
(
help => sub { usage 0 },
version => sub { print "$ME version $VERSION\n"; exit },
'since=s' => \$since_date,
'until=s' => \$until_date,
'format=s' => \$format_string,
'amend=s' => \$amend_file,
'append-dot' => \$append_dot,
'cluster!' => \$cluster,
'ignore-matching=s' => \$ignore_matching,
'strip-tab' => \$strip_tab,
'strip-cherry-pick' => \$strip_cherry_pick,
'srcdir=s' => \$srcdir,
) or usage 1;
defined $since_date
and unshift @ARGV, "--since=$since_date";
defined $until_date
and unshift @ARGV, "--until=$until_date";
# This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
# that makes a correction in the log or attribution of that commit.
my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
my @cmd = ('git',
git_dir_option $srcdir,
qw(log --log-size),
'--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV);
open PIPE, '-|', @cmd
or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
. "(Is your Git too old? Version 1.5.1 or later is required.)\n");
my $prev_multi_paragraph;
my $prev_date_line = '';
my @prev_coauthors = ();
while (1)
{
defined (my $in = <PIPE>)
or last;
$in =~ /^log size (\d+)$/
or die "$ME:$.: Invalid line (expected log size):\n$in";
my $log_nbytes = $1;
my $log;
my $n_read = read PIPE, $log, $log_nbytes;
$n_read == $log_nbytes
or die "$ME:$.: unexpected EOF\n";
# Extract leading hash.
my ($sha, $rest) = split ':', $log, 2;
defined $sha
or die "$ME:$.: malformed log entry\n";
$sha =~ /^[0-9a-fA-F]{40}$/
or die "$ME:$.: invalid SHA1: $sha\n";
# If this commit's log requires any transformation, do it now.
my $code = $amend_code->{$sha};
if (defined $code)
{
eval 'use Safe';
my $s = new Safe;
# Put the unpreprocessed entry into "$_".
$_ = $rest;
# Let $code operate on it, safely.
my $r = $s->reval("$code")
or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n";
# Note that we've used this entry.
delete $amend_code->{$sha};
# Update $rest upon success.
$rest = $_;
}
# Remove lines inserted by "git cherry-pick".
if ($strip_cherry_pick)
{
$rest =~ s/^\s*Conflicts:\n.*//sm;
$rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m;
}
my @line = split /\s*\n/, $rest;
my $author_line = shift @line;
defined $author_line
or die "$ME:$.: unexpected EOF\n";
$author_line =~ /^(\d+) (.*>)$/
or die "$ME:$.: Invalid line "
. "(expected date/author/email):\n$author_line\n";
# Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
# `(tiny change)' annotation.
my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
? ' (tiny change)' : '');
my $date_line = sprintf "%s %s$tiny\n",
strftime ("%Y-%m-%d", localtime ($1)), $2;
my @coauthors = grep /^Co-authored-by:.*$/, @line;
# Omit meta-data lines we've already interpreted.
@line = grep !/^(?:Signed-off-by:[ ].*>$
|Co-authored-by:[ ]
|Copyright-paperwork-exempt:[ ]
)/x, @line;
# Remove leading and trailing blank lines.
if (@line)
{
while ($line[0] =~ /^\s*$/) { shift @line; }
while ($line[$#line] =~ /^\s*$/) { pop @line; }
}
# Ignore commits that match the --ignore-matching pattern, if specified.
if (! (defined $ignore_matching
&& @line && $line[0] =~ /$ignore_matching/))
{
# Record whether there are two or more paragraphs.
my $multi_paragraph = grep /^\s*$/, @line;
# Format 'Co-authored-by: A U Thor <email@example.com>' lines in
# standard multi-author ChangeLog format.
for (@coauthors)
{
s/^Co-authored-by:\s*/\t /;
s/\s*</ </;
/<.*?@.*\..*>/
or warn "$ME: warning: missing email address for "
. substr ($_, 5) . "\n";
}
# If clustering of commit messages has been disabled, if this header
# would be different from the previous date/name/etc. header,
# or if this or the previous entry consists of two or more paragraphs,
# then print the header.
if ( ! $cluster
|| $date_line ne $prev_date_line
|| "@coauthors" ne "@prev_coauthors"
|| $multi_paragraph
|| $prev_multi_paragraph)
{
$prev_date_line eq ''
or print "\n";
print $date_line;
@coauthors
and print join ("\n", @coauthors), "\n";
}
$prev_date_line = $date_line;
@prev_coauthors = @coauthors;
$prev_multi_paragraph = $multi_paragraph;
# If there were any lines
if (@line == 0)
{
warn "$ME: warning: empty commit message:\n $date_line\n";
}
else
{
if ($append_dot)
{
# If the first line of the message has enough room, then
if (length $line[0] < 72)
{
# append a dot if there is no other punctuation or blank
# at the end.
$line[0] =~ /[[:punct:]\s]$/
or $line[0] .= '.';
}
}
# Remove one additional leading TAB from each line.
$strip_tab
and map { s/^\t// } @line;
# Prefix each non-empty line with a TAB.
@line = map { length $_ ? "\t$_" : '' } @line;
print "\n", join ("\n", @line), "\n";
}
}
defined ($in = <PIPE>)
or last;
$in ne "\n"
and die "$ME:$.: unexpected line:\n$in";
}
close PIPE
or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
# FIXME-someday: include $PROCESS_STATUS in the diagnostic
# Complain about any unused entry in the --amend=F specified file.
my $fail = 0;
foreach my $sha (keys %$amend_code)
{
warn "$ME:$amend_file: unused entry: $sha\n";
$fail = 1;
}
exit $fail;
}
# Local Variables:
# mode: perl
# indent-tabs-mode: nil
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "my $VERSION = '"
# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "'; # UTC"
# End:

81
build-aux/gitlog-to-emacslog Executable file
View file

@ -0,0 +1,81 @@
#!/bin/sh
# Convert git log output to ChangeLog format for GNU Emacs.
# Copyright (C) 2014-2015 Free Software Foundation, Inc.
# Author: Paul Eggert
# This program 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 of the License, or
# (at your option) any later version.
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
LC_ALL=C
export LC_ALL
gen_origin=${1?}
# If this is not a Git repository, just generate an empty ChangeLog.
test -d ${srcprefix}.git || {
# Remove any old ChangeLog, in case it is a vc-dwim symlink.
rm -f "${distprefix}ChangeLog" || exit
>"${distprefix}ChangeLog"
exit
}
# Use Gnulib's packaged ChangeLog generator.
${srcprefix}build-aux/gitlog-to-changelog --ignore-matching='^; ' \
--format='%B' \
"$gen_origin.." >"${distprefix}ChangeLog.tmp" || exit
if test -s "${distprefix}ChangeLog.tmp"; then
# Fix up bug references.
# This would be better as eg a --transform option to gitlog-to-changelog,
# but... effort. FIXME does not handle rare cases like:
# Fixes: debbugs:19434 debbugs:19519
sed 's/ Fixes: \(debbugs:\|bug#\)\([0-9][0-9]*\)/ (Bug#\2)/' \
"${distprefix}ChangeLog.tmp" > "${distprefix}ChangeLog.tmp2"
mv "${distprefix}ChangeLog.tmp2" "${distprefix}ChangeLog.tmp"
# Find the years covered by the generated ChangeLog, so that
# a proper copyright notice can be output.
years=`
sed -n 's/^\([0-9][0-9]*\).*/\1/p' "${distprefix}ChangeLog.tmp" |
sort -nu
`
start_year=
end_year=
for year in $years; do
: ${start_year:=$year}
end_year=$year
done
if test "$start_year" = "$end_year"; then
year_range=$start_year
else
year_range=$start_year-$end_year
fi
# Append a proper copyright notice.
sed -n '
1i\
/^;; Local Variables:/,${
s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/
p
}
' <ChangeLog.2 >>"${distprefix}ChangeLog.tmp" || exit
fi
# Install the generated ChangeLog.
mv -i "${distprefix}ChangeLog.tmp" "${distprefix}ChangeLog"

View file

@ -1,6 +1,6 @@
dnl Autoconf script for GNU Emacs
dnl To rebuild the `configure' script from this, execute the command
dnl autoconf
dnl To rebuild the 'configure' script from this, execute the command
dnl autoconf
dnl in the directory containing this script.
dnl If you changed any AC_DEFINES, also run autoheader.
dnl
@ -269,11 +269,6 @@ if test "$with_hesiod" != no; then
AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
fi
OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
if test "$with_mmdf" != no; then
AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
fi
OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
if test "$with_mail_unlink" != no; then
AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
@ -288,8 +283,8 @@ AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE],
default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW, Cygwin.])],
[ case "${withval}" in
yes|no|alsa|oss|bsd-ossaudio) val=$withval ;;
*) AC_MSG_ERROR([`--with-sound=$withval' is invalid;
this option's value should be `yes', `no', `alsa', `oss', or `bsd-ossaudio'.])
*) AC_MSG_ERROR(['--with-sound=$withval' is invalid;
this option's value should be 'yes', 'no', 'alsa', 'oss', or 'bsd-ossaudio'.])
;;
esac
with_sound=$val
@ -312,10 +307,10 @@ AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
gtk2 ) val=gtk2 ;;
gtk3 ) val=gtk3 ;;
* )
AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk',
`gtk2' or `gtk3'. `yes' and `gtk' are synonyms.
`athena' and `lucid' are synonyms.])
AC_MSG_ERROR(['--with-x-toolkit=$withval' is invalid;
this option's value should be 'yes', 'no', 'lucid', 'athena', 'motif', 'gtk',
'gtk2' or 'gtk3'. 'yes' and 'gtk' are synonyms.
'athena' and 'lucid' are synonyms.])
;;
esac
with_x_toolkit=$val
@ -365,10 +360,10 @@ AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
g | gf | gfi | gfil | gfile ) val=gfile ;;
i | in | ino | inot | inoti | inotif | inotify ) val=inotify ;;
w | w3 | w32 ) val=w32 ;;
* ) AC_MSG_ERROR([`--with-file-notification=$withval' is invalid;
this option's value should be `yes', `no', `gfile', `inotify' or `w32'.
`yes' is a synonym for `w32' on MS-Windows, for `no' on Nextstep,
otherwise for the first of `gfile' or `inotify' that is usable.])
* ) AC_MSG_ERROR(['--with-file-notification=$withval' is invalid;
this option's value should be 'yes', 'no', 'gfile', 'inotify' or 'w32'.
'yes' is a synonym for 'w32' on MS-Windows, for 'no' on Nextstep,
otherwise for the first of 'gfile' or 'inotify' that is usable.])
;;
esac
with_file_notification=$val
@ -464,8 +459,8 @@ do
ac_gc_check_cons_list=1 ;
ac_glyphs_debug=1 ;;
# these enable particular checks
stringbytes) ac_gc_check_stringbytes=1 ;;
stringoverrun) ac_gc_check_string_overrun=1 ;;
stringbytes) ac_gc_check_stringbytes=1 ;;
stringoverrun) ac_gc_check_string_overrun=1 ;;
stringfreelist) ac_gc_check_string_free_list=1 ;;
xmallocoverrun) ac_xmalloc_overrun=1 ;;
conslist) ac_gc_check_cons_list=1 ;;
@ -536,7 +531,7 @@ AC_SUBST(PROFILING_CFLAGS)
AC_ARG_ENABLE(autodepend,
[AS_HELP_STRING([--enable-autodepend],
[automatically generate dependencies to .h-files.
Requires gcc, enabled if found.])],
Requires gcc, enabled if found.])],
[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
AC_ARG_ENABLE(gtk-deprecation-warnings,
@ -544,7 +539,7 @@ AC_ARG_ENABLE(gtk-deprecation-warnings,
[Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
[ac_enable_gtk_deprecation_warnings="${enableval}"],[])
dnl This used to use changequote, but, apart from `changequote is evil'
dnl This used to use changequote, but, apart from 'changequote is evil'
dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
dnl the great gob of text. Thus it's not processed for possible expansion.
dnl Just make sure the brackets remain balanced.
@ -651,7 +646,7 @@ case "${canonical}" in
mips-sgi-irix6.5 )
opsys=irix6-5
# Without defining _LANGUAGE_C, things get masked out in the headers
# so that, for instance, grepping for `free' in stdlib.h fails and
# so that, for instance, grepping for 'free' in stdlib.h fails and
# AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
;;
@ -705,9 +700,9 @@ case "${canonical}" in
# MinGW overrides and adds some system headers in nt/inc.
GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
;;
*-sysv4.2uw* ) opsys=unixware ;;
*-sysv5uw* ) opsys=unixware ;;
*-sysv5OpenUNIX* ) opsys=unixware ;;
*-sysv4.2uw* ) opsys=unixware ;;
*-sysv5uw* ) opsys=unixware ;;
*-sysv5OpenUNIX* ) opsys=unixware ;;
## Otherwise, we'll fall through to the generic opsys code at the bottom.
esac
;;
@ -748,9 +743,9 @@ fi
dnl quotation ends
if test $unported = yes; then
AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
AC_MSG_ERROR([Emacs does not support '${canonical}' systems.
If you think it should, please send a report to ${PACKAGE_BUGREPORT}.
Check `etc/MACHINES' for recognized configuration names.])
Check 'etc/MACHINES' for recognized configuration names.])
fi
#### Choose a compiler.
@ -884,6 +879,7 @@ if test "$gl_gcc_warnings" != yes; then
gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
gl_WARN_ADD([-Wno-pointer-sign])
gl_WARN_ADD([-Wno-string-plus-int])
gl_WARN_ADD([-Wno-unknown-attributes])
fi
else
isystem='-isystem '
@ -1195,9 +1191,9 @@ if test "$MAKEINFO" = "no"; then
HAVE_MAKEINFO=no
elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
source tree does not seem to have pre-built manuals in the `info' directory.
source tree does not seem to have pre-built manuals in the 'info' directory.
Either install a suitable version of makeinfo, or re-run configure
with the `--without-makeinfo' option to build without the manuals.] )
with the '--without-makeinfo' option to build without the manuals.] )
fi
fi
AC_SUBST(HAVE_MAKEINFO)
@ -1221,8 +1217,8 @@ fi
dnl We need -znocombreloc if we're using a relatively recent GNU ld.
dnl If we can link with the flag, it shouldn't do any harm anyhow.
dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
dnl (Don't use '-z nocombreloc' as -z takes no arg on Irix.)
dnl Treat GCC specially since it just gives a non-fatal 'unrecognized option'
dnl if not built to support GNU ld.
dnl For a long time, -znocombreloc was added to LDFLAGS rather than
@ -1318,7 +1314,7 @@ esac
LD_SWITCH_SYSTEM=
case "$opsys" in
freebsd|dragonfly)
## Let `ld' find image libs and similar things in /usr/local/lib.
## Let 'ld' find image libs and similar things in /usr/local/lib.
## The system compiler, GCC, has apparently been modified to not
## look there, contrary to what a stock GCC would do.
### It's not our place to do this. See bug#10313#17.
@ -1486,7 +1482,7 @@ esac
AC_SUBST(LIB_MATH)
AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
[The type of system you are compiling for; sets `system-type'.])
[The type of system you are compiling for; sets 'system-type'.])
pre_PKG_CONFIG_CFLAGS=$CFLAGS
@ -1541,12 +1537,12 @@ if test "${with_sound}" != "no"; then
LIBS="$ALSA_LIBS $LIBS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
emacs_alsa_normal=yes,
emacs_alsa_normal=no)
emacs_alsa_normal=no)
if test "$emacs_alsa_normal" != yes; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
[[snd_lib_error_set_handler (0);]])],
emacs_alsa_subdir=yes,
emacs_alsa_subdir=no)
emacs_alsa_subdir=no)
if test "$emacs_alsa_subdir" != yes; then
AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
fi
@ -1622,7 +1618,7 @@ if test "$ac_cv_header_sys_sysinfo_h" = yes; then
fi
dnl On Solaris 8 there's a compilation warning for term.h because
dnl it doesn't define `bool'.
dnl it doesn't define 'bool'.
AC_CHECK_HEADERS(term.h, , , -)
AC_HEADER_TIME
AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
@ -1836,7 +1832,7 @@ fail;
CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
[AC_MSG_ERROR([`--with-ns' was specified, but the include
[AC_MSG_ERROR(['--with-ns' was specified, but the include
files are missing or cannot be compiled.])])
macfont_file=""
@ -1857,7 +1853,7 @@ fail;
AC_MSG_RESULT([$ns_osx_have_106])
if test $ns_osx_have_106 = no; then
AC_MSG_ERROR([`OSX 10.6 or newer is required']);
AC_MSG_ERROR([OSX 10.6 or newer is required]);
fi
fi
fi
@ -1915,7 +1911,7 @@ if test "${with_w32}" != no; then
case "${opsys}" in
cygwin)
AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
[AC_MSG_ERROR([`--with-w32' was specified, but windows.h
[AC_MSG_ERROR(['--with-w32' was specified, but windows.h
cannot be found.])])
;;
mingw32)
@ -2361,7 +2357,7 @@ fail;
fi
### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
### Use -lrsvg-2 if available, unless '--with-rsvg=no' is specified.
HAVE_RSVG=no
if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
if test "${with_rsvg}" != "no"; then
@ -2377,7 +2373,7 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" =
CFLAGS="$CFLAGS $RSVG_CFLAGS"
# Windows loads librsvg dynamically
if test "${opsys}" = "mingw32"; then
RSVG_LIBS=
RSVG_LIBS=
fi
fi
fi
@ -2607,21 +2603,21 @@ if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
AC_MSG_CHECKING([whether GSettings is in gio])
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[/* Check that gsettings really is present. */
#include <glib-object.h>
[[/* Check that gsettings really is present. */
#include <glib-object.h>
#include <gio/gio.h>
]],
[[
]],
[[
GSettings *settings;
GVariant *val = g_settings_get_value (settings, "");
]])],
[], HAVE_GSETTINGS=no)
]])],
[], HAVE_GSETTINGS=no)
AC_MSG_RESULT([$HAVE_GSETTINGS])
if test "$HAVE_GSETTINGS" = "yes"; then
AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
SETTINGS_LIBS="$GSETTINGS_LIBS"
SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
SETTINGS_LIBS="$GSETTINGS_LIBS"
fi
CFLAGS=$old_CFLAGS
LIBS=$old_LIBS
@ -2701,7 +2697,7 @@ fi
dnl MS Windows native file monitor is available for mingw32 only.
case $with_file_notification,$opsys in
w32,cygwin)
AC_MSG_ERROR([`--with-file-notification=w32' was specified, but
AC_MSG_ERROR(['--with-file-notification=w32' was specified, but
this is only supported on MS-Windows native and MinGW32 builds.
Consider using gfile instead.])
;;
@ -2745,7 +2741,7 @@ esac
case $with_file_notification,$NOTIFY_OBJ in
yes,* | no,* | *,?*) ;;
*) AC_MSG_ERROR([File notification `$with_file_notification' requested but requirements not found.]) ;;
*) AC_MSG_ERROR([File notification '$with_file_notification' requested but requirements not found.]) ;;
esac
if test -n "$NOTIFY_OBJ"; then
@ -2947,7 +2943,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
HAVE_XIM=no)
dnl `--with-xim' now controls only the initial value of use_xim at run time.
dnl '--with-xim' now controls only the initial value of use_xim at run time.
if test "${with_xim}" != "no"; then
AC_DEFINE(USE_XIM, 1,
@ -2995,7 +2991,7 @@ fi
### Start of font-backend (under X11) section.
if test "${HAVE_X11}" = "yes"; then
## Use -lXft if available, unless `--with-xft=no'.
## Use -lXft if available, unless '--with-xft=no'.
HAVE_XFT=maybe
if test "x${with_x}" = "xno"; then
with_xft="no";
@ -3119,7 +3115,7 @@ if test "${HAVE_X11}" = "yes"; then
fi
fi
### Use -lXpm if available, unless `--with-xpm=no'.
### Use -lXpm if available, unless '--with-xpm=no'.
### mingw32 doesn't use -lXpm, since it loads the library dynamically.
### In the Cygwin-w32 build, we need to use /usr/include/noX/X11/xpm.h
### rather than /usr/include/X11/xpm.h, so we set CPPFLAGS (and
@ -3210,52 +3206,47 @@ fi
AC_SUBST(LIBXPM)
### Use -ljpeg if available, unless `--with-jpeg=no'.
### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
### Use -ljpeg if available, unless '--with-jpeg=no'.
HAVE_JPEG=no
LIBJPEG=
if test "${opsys}" = "mingw32"; then
if test "${with_jpeg}" != "no"; then
dnl Checking for jpeglib.h can lose because of a redefinition of
dnl HAVE_STDLIB_H.
AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
fi
AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
if test "${HAVE_JPEG}" = "yes"; then
AC_DEFINE(HAVE_JPEG)
AC_EGREP_CPP([version 6b or later],
[#include <jpeglib.h>
#if JPEG_LIB_VERSION >= 62
version 6b or later
#endif
],
[AC_DEFINE(HAVE_JPEG)],
[AC_MSG_WARN([libjpeg found, but not version 6b or later])
HAVE_JPEG=no])
fi
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
if test "${with_jpeg}" != "no"; then
dnl Checking for jpeglib.h can lose because of a redefinition of
dnl HAVE_STDLIB_H.
AC_CHECK_HEADER(jerror.h,
[AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
fi
AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
if test "${HAVE_JPEG}" = "yes"; then
AC_DEFINE(HAVE_JPEG)
AC_EGREP_CPP([version 6b or later],
[#include <jpeglib.h>
#if JPEG_LIB_VERSION >= 62
version 6b or later
#endif
],
[AC_DEFINE(HAVE_JPEG)],
[AC_MSG_WARN([libjpeg found, but not version 6b or later])
HAVE_JPEG=no])
fi
if test "${HAVE_JPEG}" = "yes"; then
LIBJPEG=-ljpeg
if test "${with_jpeg}" != "no"; then
AC_CACHE_CHECK([for jpeglib 6b or later],
[emacs_cv_jpeglib],
[OLD_LIBS=$LIBS
for emacs_cv_jpeglib in yes -ljpeg no; do
case $emacs_cv_jpeglib in
yes) ;;
no) break;;
*) LIBS="$LIBS $emacs_cv_jpeglib";;
esac
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#undef HAVE_STDLIB_H /* Avoid config.h/jpeglib.h collision. */
#include <stdio.h> /* jpeglib.h needs FILE and size_t. */
#include <jpeglib.h>
#include <jerror.h>
char verify[JPEG_LIB_VERSION < 62 ? -1 : 1];
struct jpeg_decompress_struct cinfo;
]],
[[
jpeg_create_decompress (&cinfo);
WARNMS (&cinfo, JWRN_JPEG_EOF);
jpeg_destroy_decompress (&cinfo);
]])],
[emacs_link_ok=yes],
[emacs_link_ok=no])
LIBS=$OLD_LIBS
test $emacs_link_ok = yes && break
done])
if test "$emacs_cv_jpeglib" != no; then
HAVE_JPEG=yes
AC_DEFINE([HAVE_JPEG], 1,
[Define to 1 if you have the jpeg library (typically -ljpeg).])
### mingw32 doesn't use -ljpeg, since it loads the library
### dynamically when needed, and doesn't want a run-time
### dependency on the jpeglib DLL.
test "$emacs_cv_jpeglib" != yes && test "${opsys}" != "mingw32" \
&& LIBJPEG=$emacs_cv_jpeglib
fi
fi
AC_SUBST(LIBJPEG)
@ -3279,7 +3270,7 @@ if test "${HAVE_ZLIB}" = "yes"; then
fi
AC_SUBST(LIBZ)
### Use -lpng if available, unless `--with-png=no'.
### Use -lpng if available, unless '--with-png=no'.
HAVE_PNG=no
LIBPNG=
PNG_CFLAGS=
@ -3343,7 +3334,7 @@ fi
AC_SUBST(LIBPNG)
AC_SUBST(PNG_CFLAGS)
### Use -ltiff if available, unless `--with-tiff=no'.
### Use -ltiff if available, unless '--with-tiff=no'.
### mingw32 doesn't use -ltiff, since it loads the library dynamically.
HAVE_TIFF=no
LIBTIFF=
@ -3371,7 +3362,7 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
fi
AC_SUBST(LIBTIFF)
### Use -lgif or -lungif if available, unless `--with-gif=no'.
### Use -lgif or -lungif if available, unless '--with-gif=no'.
### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
HAVE_GIF=no
LIBGIF=
@ -3429,7 +3420,7 @@ as options to configure])
fi
fi
### Use -lgpm if available, unless `--with-gpm=no'.
### Use -lgpm if available, unless '--with-gpm=no'.
HAVE_GPM=no
LIBGPM=
if test "${with_gpm}" != "no"; then
@ -3567,7 +3558,7 @@ if test "${with_xml2}" != "no"; then
CPPFLAGS="$CPPFLAGS -I$xcsdkdir/usr/include/libxml2"
AC_CHECK_HEADER(libxml/HTMLparser.h,
[AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, ,
[#include <libxml/HTMLparser.h>])])
[#include <libxml/HTMLparser.h>])])
CPPFLAGS="$SAVE_CPPFLAGS"
if test "${HAVE_LIBXML2}" = "yes"; then
LIBXML2_CFLAGS="-I'$xcsdkdir/usr/include/libxml2'"
@ -3611,7 +3602,7 @@ fi
AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
if test $have_mail = yes; then
LIBS_MAIL=-lmail
AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the 'mail' library (-lmail).])
OLD_LIBS=$LIBS
LIBS="$LIBS_MAIL $LIBS"
@ -3624,7 +3615,7 @@ dnl Debian, at least:
AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
if test $have_lockfile = yes; then
LIBS_MAIL=-llockfile
AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the 'lockfile' library (-llockfile).])
else
# If we have the shared liblockfile, assume we must use it for mail
# locking (e.g. Debian). If we couldn't link against liblockfile
@ -3636,7 +3627,7 @@ else
if test $ac_cv_prog_liblockfile = yes; then
AC_MSG_ERROR([Shared liblockfile found but can't link against it.
This probably means that movemail could lose mail.
There may be a `development' package to install containing liblockfile.])
There may be a 'development' package to install containing liblockfile.])
fi
fi
AC_CHECK_HEADERS_ONCE(maillock.h)
@ -3654,12 +3645,12 @@ case "$opsys" in
## On GNU/Linux systems, both methods are used by various mail programs.
## I assume most people are using newer mailers that have heard of flock.
## Change this if you need to.
## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
## Debian contains a patch which says: "On Debian/GNU/Linux systems,
## configure gets the right answers, and that means *NOT* using flock.
## Using flock is guaranteed to be the wrong thing. See Debian Policy
## for details.'' and then uses `#ifdef DEBIAN'. Unfortunately the
## for details." and then uses '#ifdef DEBIAN'. Unfortunately the
## Debian maintainer hasn't provided a clean fix for Emacs.
## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
## movemail.c will use 'maillock' when MAILDIR, HAVE_LIBMAIL and
## HAVE_MAILLOCK_H are defined, so the following appears to be the
## correct logic. -- fx
## We must check for HAVE_LIBLOCKFILE too, as movemail does.
@ -3719,7 +3710,7 @@ AC_CACHE_CHECK([for __builtin_unwind_init],
emacs_cv_func___builtin_unwind_init=no)])
if test $emacs_cv_func___builtin_unwind_init = yes; then
AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
[Define to 1 if you have the `__builtin_unwind_init' function.])
[Define to 1 if you have the '__builtin_unwind_init' function.])
fi
AC_CHECK_HEADERS_ONCE(sys/un.h)
@ -3778,7 +3769,7 @@ else
fi
AC_MSG_RESULT([$msg])
if test "X$msg" = Xno; then
AC_MSG_ERROR([The required function `tputs' was not found in any library.
AC_MSG_ERROR([The required function 'tputs' was not found in any library.
The following libraries were tried (in order):
libtinfo, libncurses, libterminfo, libtermcap, libcurses
Please try installing whichever of these libraries is most appropriate
@ -4063,7 +4054,7 @@ LIBS="$LIBS $GFILENOTIFY_LIBS $CAIRO_LIBS"
AC_MSG_CHECKING([whether GLib is linked in])
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[#include <glib.h>
]],
]],
[[g_print ("Hello world");]])],
[links_glib=yes],
[links_glib=no])
@ -4314,15 +4305,15 @@ case $opsys in
esac
dnl If the system's imake configuration file defines `NeedWidePrototypes'
dnl as `NO', we must define NARROWPROTO manually. Such a define is
dnl generated in the Makefile generated by `xmkmf'. If we don't define
dnl If the system's imake configuration file defines 'NeedWidePrototypes'
dnl as 'NO', we must define NARROWPROTO manually. Such a define is
dnl generated in the Makefile generated by 'xmkmf'. If we don't define
dnl NARROWPROTO, we will see the wrong function prototypes for X functions
dnl taking float or double parameters.
case $opsys in
cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
file defines `NeedWidePrototypes' as `NO'.])
file defines 'NeedWidePrototypes' as 'NO'.])
;;
esac
@ -4909,8 +4900,8 @@ AC_CACHE_CHECK([for struct alignment],
[emacs_cv_struct_alignment],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <stddef.h>
struct __attribute__ ((aligned (8))) s { char c; };
struct t { char c; struct s s; };
struct __attribute__ ((aligned (8))) s { char c; };
struct t { char c; struct s s; };
char verify[offsetof (struct t, s) == 8 ? 1 : -1];
]])],
[emacs_cv_struct_alignment=yes],
@ -5053,16 +5044,24 @@ case "$opsys" in
*) LD_SWITCH_SYSTEM_TEMACS= ;;
esac
AC_CACHE_CHECK([whether the linker accepts -nopie],
# -nopie fixes a temacs segfault on Gentoo, OpenBSD, and other systems
# with "hardened" GCC configurations for some reason (Bug#18784).
# We don't know why -nopie works, but not segfaulting is better than
# segfaulting. Use ac_c_werror_flag=yes when trying -nopie, otherwise
# clang keeps warning that it does not understand -nopie, and pre-4.6
# GCC has a similar problem (Bug#20338).
AC_CACHE_CHECK([whether $CC accepts -nopie],
[emacs_cv_prog_cc_nopie],
[emacs_save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -nopie"
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[emacs_cv_prog_cc_nopie=yes],
[emacs_cv_prog_cc_nopie=no])
LDFLAGS=$emacs_save_LDFLAGS])
[emacs_save_c_werror_flag=$ac_c_werror_flag
emacs_save_LDFLAGS=$LDFLAGS
ac_c_werror_flag=yes
LDFLAGS="$LDFLAGS -nopie"
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[emacs_cv_prog_cc_nopie=yes],
[emacs_cv_prog_cc_nopie=no])
ac_c_werror_flag=$emacs_save_c_werror_flag
LDFLAGS=$emacs_save_LDFLAGS])
if test "$emacs_cv_prog_cc_nopie" = yes; then
# Disable PIE to avoid segfaults in temacs (bug#18784)
LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -nopie"
fi
@ -5140,7 +5139,7 @@ else
fi
echo "
Configured for \`${canonical}'.
Configured for '${canonical}'.
Where should the build process find the source code? ${srcdir}
What compiler should emacs be built with? ${CC} ${CFLAGS}
@ -5266,7 +5265,7 @@ AC_CONFIG_FILES([$srcdir/doc/man/emacs.1])
dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
dnl (else you get "no `Makefile.am' found for any configure output").
dnl (else you get "no 'Makefile.am' found for any configure output").
dnl This will work, but you get a config.status that is not quite right
dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
dnl That doesn't have any obvious consequences for Emacs, but on the whole
@ -5306,9 +5305,9 @@ dnl rather than just letting configure generate it from epaths.in.
dnl One reason is that the various paths are not fully expanded (see above);
dnl eg gamedir=${prefix}/var/games/emacs.
dnl Secondly, the GNU Coding standards require that one should be able
dnl to run `make prefix=/some/where/else' and override the values set
dnl by configure. This also explains the `move-if-change' test and
dnl the use of force in the `epaths-force' rule in Makefile.in.
dnl to run 'make prefix=/some/where/else' and override the values set
dnl by configure. This also explains the 'move-if-change' test and
dnl the use of force in the 'epaths-force' rule in Makefile.in.
AC_CONFIG_COMMANDS([src/epaths.h], [
if test "${opsys}" = "mingw32"; then
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32

View file

@ -23,7 +23,7 @@ SHELL = @SHELL@
# update the sed rules in the dist target below.
# Where to find the source code. $(srcdir) will be the doc/emacs subdirectory
# of the source tree. This is set by configure's `--srcdir' option.
# of the source tree. This is set by configure's '--srcdir' option.
srcdir=@srcdir@
top_srcdir = @top_srcdir@

View file

@ -1201,7 +1201,7 @@ Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
@item
Kim F. Storm made many improvements to the Emacs display engine,
process support, and networking support. He also wrote
process support, and networking support. He also wrote
@file{bindat.el}, a package for encoding and decoding binary data;
CUA mode, which allows Emacs to emulate the standard CUA key
bindings; @file{ido.el}, a package for selecting buffers and files

View file

@ -947,7 +947,7 @@ of the window. Disabled breakpoints are indicated with @samp{b}.
(The margin is only displayed if a breakpoint is present.)
A solid arrow in the left fringe of a source buffer indicates the
line of the innermost frame where the debugged program has stopped. A
line of the innermost frame where the debugged program has stopped. A
hollow arrow indicates the current execution line of a higher-level
frame. If you drag the arrow in the fringe with @kbd{Mouse-1}, that
causes execution to advance to the line where you release the button.
@ -1138,7 +1138,7 @@ size for these data items.
When @code{gdb-many-windows} is non-@code{nil}, the locals buffer
shares its window with the registers buffer, just like breakpoints and
threads buffers. To switch from one to the other, click with
threads buffers. To switch from one to the other, click with
@kbd{Mouse-1} on the relevant button in the header line.
@node Watch Expressions
@ -1457,8 +1457,8 @@ Evaluate all the Emacs Lisp expressions in the buffer.
@end table
@ifinfo
@c This uses ``colon'' instead of a literal `:' because Info cannot
@c cope with a `:' in a menu
@c This uses 'colon' instead of a literal ':' because Info cannot
@c cope with a ':' in a menu.
@kindex M-@key{colon}
@end ifinfo
@ifnotinfo

View file

@ -379,7 +379,7 @@ between years will not work.
If the variable @code{cal-html-print-day-number-flag} is
non-@code{nil}, then the monthly calendars show the day-of-the-year
number. The variable @code{cal-html-year-index-cols} specifies the
number. The variable @code{cal-html-year-index-cols} specifies the
number of columns in the yearly index page.
@cindex calendar and @LaTeX{}
@ -827,7 +827,7 @@ Display Mayan date for selected day (@code{calendar-mayan-print-date}).
Otherwise, move point to the date you want to convert, then type the
appropriate command starting with @kbd{p} from the table above. The
prefix @kbd{p} is a mnemonic for ``print'', since Emacs ``prints'' the
equivalent date in the echo area. @kbd{p o} displays the
equivalent date in the echo area. @kbd{p o} displays the
date in all forms known to Emacs. You can also use @kbd{Mouse-3} and
then choose @kbd{Other calendars} from the menu that appears. This
displays the equivalent forms of the date in all the calendars Emacs

View file

@ -10,7 +10,7 @@
@cindex switches (command line)
@cindex startup (command line arguments)
@cindex invocation (command line arguments)
@c FIXME: Document `--smid'? --xfq
@c FIXME: Document '--smid'? --xfq
Emacs supports command line arguments to request various actions
when invoking Emacs. These are for compatibility with other editors
@ -582,7 +582,7 @@ The name of the news server. Used by the mh and Gnus packages.
@item ORGANIZATION
@vindex ORGANIZATION, environment variable
The name of the organization to which you belong. Used for setting the
`Organization:' header in your posts from the Gnus package.
``Organization:'' header in your posts from the Gnus package.
@item PATH
@vindex PATH, environment variable
A colon-separated list of directories containing executable files.

View file

@ -778,7 +778,7 @@ fill-column's value is 70
Automatically becomes buffer-local when set.
This variable is safe as a file local variable if its value
satisfies the predicate `integerp'.
satisfies the predicate @code{integerp}.
Documentation:
Column beyond which automatic line-wrapping should happen.
@ -2213,10 +2213,10 @@ require one and some contexts require the other.
keys which send non-@acronym{ASCII} characters.
@item True:
@code{t} stands for `true'.
@code{t} stands for ``true''.
@item False:
@code{nil} stands for `false'.
@code{nil} stands for ``false''.
@item Other Lisp objects:
@cindex Lisp object syntax
@ -2247,8 +2247,8 @@ line.
(setq c-tab-always-indent nil)
@end example
Here we have a variable whose value is normally @code{t} for `true'
and the alternative is @code{nil} for `false'.
Here we have a variable whose value is normally @code{t} for ``true''
and the alternative is @code{nil} for ``false''.
@item
Make searches case sensitive by default (in all buffers that do not
@ -2440,9 +2440,7 @@ You can also simply disregard the errors that occur if the
function is not defined.
@example
(condition case ()
(set-face-background 'region "grey75")
(error nil))
(ignore-errors (set-face-background 'region "grey75"))
@end example
A @code{setq} on a variable which does not exist is generally

View file

@ -376,7 +376,7 @@ for @file{..} and typing @kbd{f} there.
@end table
@node Marks vs Flags
@section Dired Marks vs. Flags
@section Dired Marks vs.@: Flags
@cindex marking many files (in Dired)
Instead of flagging a file with @samp{D}, you can @dfn{mark} the

View file

@ -115,7 +115,7 @@ display editor. This manual describes how to edit with Emacs and
some of the ways to customize it; it corresponds to GNU Emacs version
@value{EMACSVER}.
@c See `manual-html-mono' and `manual-html-node' in admin/admin.el.
@c See 'manual-html-mono' and 'manual-html-node' in admin/admin.el.
@ifset WWW_GNU_ORG
@html
The homepage for GNU Emacs is at
@ -239,9 +239,9 @@ Indexes (each index contains a large menu)
* Concept Index:: An item for each concept.
@c Do NOT modify the following 3 lines! They must have this form to
@c be correctly identified by `texinfo-multiple-files-update'. In
@c be correctly identified by 'texinfo-multiple-files-update'. In
@c particular, the detailed menu header line MUST be identical to the
@c value of `texinfo-master-menu-header'. See texnfo-upd.el.
@c value of 'texinfo-master-menu-header'. See texnfo-upd.el.
@detailmenu
--- The Detailed Node Listing ---
@ -391,7 +391,7 @@ Searching and Replacement
* Symbol Search:: Search for a source code symbol.
* Regexp Search:: Search for match for a regexp.
* Regexps:: Syntax of regular expressions.
* Regexp Backslash:: Regular expression constructs starting with `\'.
* Regexp Backslash:: Regular expression constructs starting with '\'.
* Regexp Example:: A complex regular expression explained.
* Search Case:: To ignore case while searching, or not.
* Replace:: Search, and replace some or all matches.
@ -1149,7 +1149,7 @@ The Emacs Initialization File
Dealing with Emacs Trouble
* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete.
* Stuck Recursive:: `[...]' in mode line around the parentheses.
* Stuck Recursive:: '[...]' in mode line around the parentheses.
* Screen Garbled:: Garbage on the screen.
* Text Garbled:: Garbage in the text.
* Memory Full:: How to cope when you run out of memory.

View file

@ -429,7 +429,7 @@ by mistake. One thing you can do is type @kbd{M-~}
(@code{not-modified}), which clears out the indication that the buffer
is modified. If you do this, none of the save commands will believe
that the buffer needs to be saved. (@samp{~} is often used as a
mathematical symbol for `not'; thus @kbd{M-~} is `not', metafied.)
mathematical symbol for ``not''; thus @kbd{M-~} is ``not'', metafied.)
Alternatively, you can cancel all the changes made since the file was
visited or saved, by reading the text from the file again. This is
called @dfn{reverting}. @xref{Reverting}. (You could also undo all
@ -1272,7 +1272,7 @@ minibuffer, and displays the differences between the two files in a
buffer named @file{*diff*}. This works by running the @command{diff}
program, using options taken from the variable @code{diff-switches}.
The value of @code{diff-switches} should be a string; the default is
@code{"-c"} to specify a context diff.
@code{"-u"} to specify a unified context diff.
@c Note that the actual name of the info file is diffutils.info,
@c but it adds a dir entry for diff too.
@c On older systems, only "info diff" works, not "info diffutils".

View file

@ -60,7 +60,7 @@ be preserved if the buffer is lost due to a system error or user error.
@item Autoloading
Emacs can automatically load Lisp libraries when a Lisp program requests a
function from those libraries. This is called `autoloading'.
function from those libraries. This is called ``autoloading''.
@xref{Lisp Libraries}.
@item Backtrace
@ -100,7 +100,7 @@ A base buffer is a buffer whose text is shared by an indirect buffer
Some human languages, such as English, are written from left to right.
Others, such as Arabic, are written from right to left. Emacs
supports both of these forms, as well as any mixture of them---this
is `bidirectional text'. @xref{Bidirectional Editing}.
is ``bidirectional text''. @xref{Bidirectional Editing}.
@item Bind
To bind a key sequence means to give it a binding (q.v.).
@ -135,7 +135,7 @@ X}). Borders are not the same as fringes (q.v.).
@item Buffer
The buffer is the basic editing unit; one buffer corresponds to one text
being edited. You normally have several buffers, but at any time you are
editing only one, the `current buffer', though several can be visible
editing only one, the ``current buffer'', though several can be visible
when you are using multiple windows or frames (q.v.). Most buffers
are visiting (q.v.@:) some file. @xref{Buffers}.
@ -265,7 +265,7 @@ normally (but see @ref{Glossary---Truncation}) takes up more than one
screen line when displayed. We say that the text line is continued, and all
screen lines used for it after the first are called continuation
lines. @xref{Continuation Lines}. A related Emacs feature is
`filling' (q.v.).
``filling'' (q.v.).
@item Control Character
A control character is a character that you type by holding down the
@ -310,8 +310,8 @@ between defuns, the current defun is the one that follows point.
The cursor is the rectangle on the screen which indicates the position
(called point; q.v.@:) at which insertion and deletion takes place.
The cursor is on or under the character that follows point. Often
people speak of `the cursor' when, strictly speaking, they mean
`point'. @xref{Point,Cursor}.
people speak of ``the cursor'' when, strictly speaking, they mean
``point''. @xref{Point,Cursor}.
@item Customization
Customization is making minor changes in the way Emacs works, to
@ -351,7 +351,7 @@ it is interpreted relative to the current buffer's default directory.
@item Defun
A defun is a major definition at the top level in a program. The name
`defun' comes from Lisp, where most such definitions use the construct
``defun'' comes from Lisp, where most such definitions use the construct
@code{defun}. @xref{Defuns}.
@item @key{DEL}
@ -405,7 +405,7 @@ confirmation. The usual reason for disabling a command is that it is
confusing for beginning users. @xref{Disabling}.
@item Down Event
Short for `button down event' (q.v.).
Short for ``button down event'' (q.v.).
@item Drag Event
A drag event is the kind of input event (q.v.@:) generated when you
@ -598,7 +598,7 @@ correspond to any character. @xref{Function Keys}.
@item Global
Global means ``independent of the current environment; in effect
throughout Emacs''. It is the opposite of local (q.v.). Particular
examples of the use of `global' appear below.
examples of the use of ``global'' appear below.
@item Global Abbrev
A global definition of an abbrev (q.v.@:) is effective in all major
@ -824,8 +824,8 @@ lists. @xref{Moving by Parens}.
@item Local
Local means ``in effect only in a particular context''; the relevant
kind of context is a particular function execution, a particular
buffer, or a particular major mode. It is the opposite of `global'
(q.v.). Specific uses of `local' in Emacs terminology appear below.
buffer, or a particular major mode. It is the opposite of ``global''
(q.v.). Specific uses of ``local'' in Emacs terminology appear below.
@item Local Abbrev
A local abbrev definition is effective only if a particular major mode
@ -848,7 +848,7 @@ one of the modifier keys that can accompany any character.
@item @kbd{M-C-}
@kbd{M-C-} in the name of a character is an abbreviation for
Control-Meta; it means the same thing as `@kbd{C-M-}' (q.v.).
Control-Meta; it means the same thing as @kbd{C-M-} (q.v.).
@item @kbd{M-x}
@kbd{M-x} is the key sequence that is used to call an Emacs command by
@ -1121,7 +1121,7 @@ Many commands operate on the text of the region. @xref{Mark,Region}.
@item Register
Registers are named slots in which text, buffer positions, or
rectangles can be saved for later use. @xref{Registers}. A related
Emacs feature is `bookmarks' (q.v.).
Emacs feature is ``bookmarks'' (q.v.).
@anchor{Glossary---Regular Expression}
@item Regular Expression
@ -1233,15 +1233,15 @@ Emacs has commands for moving by or killing by sentences.
@anchor{Glossary---Server}
@item Server
Within Emacs, you can start a `server' process, which listens for
connections from `clients'. This offers a faster alternative to
Within Emacs, you can start a ``server'' process, which listens for
connections from ``clients''. This offers a faster alternative to
starting several Emacs instances. @xref{Emacs Server}, and
@ref{Glossary---Daemon}.
@c This is only covered in the lispref, not the user manual.
@ignore
@item Session Manager
Some window systems (q.v.@:) provide a tool called a `session manager'.
Some window systems (q.v.@:) provide a tool called a ``session manager''.
This offers the ability to save your windows when you log off,
and restore them after you log in again.
@end ignore
@ -1250,7 +1250,7 @@ and restore them after you log in again.
A sexp (short for ``s-expression'') is the basic syntactic unit of
Lisp in its textual form: either a list, or Lisp atom. Sexps are also
the balanced expressions (q.v.@:) of the Lisp language; this is why
the commands for editing balanced expressions have `sexp' in their
the commands for editing balanced expressions have @samp{sexp} in their
name. @xref{Expressions,Sexps}.
@item Simultaneous Editing
@ -1327,7 +1327,7 @@ Emacs does not make a termscript file unless you tell it to.
@xref{Bugs}.
@item Text
`Text' has two meanings (@pxref{Text}):
``Text'' has two meanings (@pxref{Text}):
@itemize @bullet
@item
@ -1420,7 +1420,7 @@ that you can customize Emacs by setting it to a new value.
@item Variable
A variable is an object in Lisp that can store an arbitrary value.
Emacs uses some variables for internal purposes, and has others (known
as `user options'; q.v.@:) just so that you can set their values to
as ``user options''; q.v.@:) just so that you can set their values to
control the behavior of Emacs. The variables used in Emacs that you
are likely to be interested in are listed in the Variables Index in
this manual (@pxref{Variable Index}). @xref{Variables}, for
@ -1448,7 +1448,7 @@ Emacs divides a frame (q.v.@:) into one or more windows, each of which
can display the contents of one buffer (q.v.@:) at any time.
@xref{Screen}, for basic information on how Emacs uses the screen.
@xref{Windows}, for commands to control the use of windows. Some
other editors use the term ``window'' for what we call a `frame'
other editors use the term ``window'' for what we call a ``frame''
(q.v.@:) in Emacs.
@item Window System

View file

@ -83,7 +83,7 @@ memory, because they are the easiest machines to make it run on. The extra
effort to make it run on smaller machines will be left to someone who wants
to use it on them.
To avoid horrible confusion, please pronounce the `G' in the word `GNU'
To avoid horrible confusion, please pronounce the ``G'' in the word ``GNU''
when it is the name of this project.
@unnumberedsec Why I Must Write GNU

View file

@ -198,7 +198,7 @@ are always displayed as empty spaces extending to the next
@dfn{display tab stop}. @xref{Text Display}.
@node Just Spaces
@section Tabs vs. Spaces
@section Tabs vs.@: Spaces
@vindex tab-width
Normally, indentation commands insert (or remove) an optimal mix of

View file

@ -190,7 +190,7 @@ font are stored in the variables @code{ns-input-font} and
@item ns-power-off
This event occurs when the user logs out and Emacs is still running, or when
`Quit Emacs' is chosen from the application menu.
``Quit Emacs'' is chosen from the application menu.
The default behavior is to save all file-visiting buffers.
@end table

View file

@ -188,7 +188,7 @@ basic editing operations under Bazaar.
@cindex src
@item
SRC (src) is RCS, reloaded - a specialized version-control system
designed for single-file projects worked on by only one person. It
designed for single-file projects worked on by only one person. It
allows multiple files with independent version-control histories to
exist in one directory, and is thus particularly well suited for
maintaining small documents, scripts, and dotfiles. While it uses RCS
@ -1570,7 +1570,7 @@ dated in May 1993, with two items and one item respectively.
@smallexample
1993-05-25 Richard Stallman <rms@@gnu.org>
* man.el: Rename symbols `man-*' to `Man-*'.
* man.el: Rename symbols 'man-*' to 'Man-*'.
(manual-entry): Make prompt string clearer.
* simple.el (blink-matching-paren-distance):

View file

@ -21,7 +21,7 @@
# Where to find the source code. The source code for Emacs's C kernel is
# expected to be in $(srcdir)/src, and the source code for Emacs's
# utility programs is expected to be in $(srcdir)/lib-src. This is
# set by the configure script's `--srcdir' option.
# set by the configure script's '--srcdir' option.
srcdir=.
infodir = $(srcdir)/../../info
@ -36,7 +36,7 @@ INFO_TARGETS = $(infodir)/emacs$(INFO_EXT)
DVI_TARGETS = emacs.dvi
INFOSOURCES = info.texi
# The following rule does not work with all versions of `make'.
# The following rule does not work with all versions of 'make'.
.SUFFIXES: .texi .dvi
.texi.dvi:
texi2dvi $<

View file

@ -787,15 +787,10 @@ also change the coding system for a running subshell by typing
Coding}.
@cindex @env{INSIDE_EMACS} environment variable
@cindex @env{EMACS} environment variable
Emacs sets the environment variable @env{INSIDE_EMACS} in the
subshell to @samp{@var{version},comint}, where @var{version} is the
Emacs version (e.g., @samp{24.1}). Programs can check this variable
to determine whether they are running inside an Emacs subshell. (It
also sets the @env{EMACS} environment variable to @code{t}, if that
environment variable is not already defined. However, this
environment variable is deprecated; programs that use it should switch
to using @env{INSIDE_EMACS} instead.)
to determine whether they are running inside an Emacs subshell.
@node Shell Mode
@subsection Shell Mode
@ -2124,13 +2119,14 @@ to @code{sort-numeric-base}, but numbers beginning with @samp{0x} or
@item M-x sort-columns
Like @kbd{M-x sort-fields} except that the text within each line
used for comparison comes from a fixed range of columns. See below
for an explanation.
used for comparison comes from a fixed range of columns. With a
prefix argument, sort in reverse order. See below for more details
on this command.
@findex reverse-region
@item M-x reverse-region
Reverse the order of the lines in the region. This is useful for
sorting into descending order by fields or columns, since those sort
sorting into descending order by fields, since those sort
commands do not have a feature for doing that.
@end table

View file

@ -843,9 +843,9 @@ show-paren-mode}.
Electric Pair mode, a global minor mode, provides a way to easily
insert matching delimiters. Whenever you insert an opening delimiter,
the matching closing delimiter is automatically inserted as well,
leaving point between the two. Conversely, when you insert a closing
leaving point between the two. Conversely, when you insert a closing
delimiter over an existing one, no inserting takes places and that
position is simply skipped over. These variables control additional
position is simply skipped over. These variables control additional
features of Electric Pair mode:
@itemize @bullet

View file

@ -1004,10 +1004,10 @@ Here is a list of these commands:
@table @kbd
@item n
Move to next line, skipping lines saying `deleted', and select its
Move to next line, skipping lines saying ``deleted'', and select its
message (@code{rmail-summary-next-msg}).
@item p
Move to previous line, skipping lines saying `deleted', and select
Move to previous line, skipping lines saying ``deleted'', and select
its message (@code{rmail-summary-previous-msg}).
@item M-n
Move to next line and select its message (@code{rmail-summary-next-all}).

View file

@ -24,7 +24,7 @@ thing, but search for patterns instead of fixed strings.
* Symbol Search:: Search for a source code symbol.
* Regexp Search:: Search for match for a regexp.
* Regexps:: Syntax of regular expressions.
* Regexp Backslash:: Regular expression constructs starting with `\'.
* Regexp Backslash:: Regular expression constructs starting with '\'.
* Regexp Example:: A complex regular expression explained.
* Search Case:: To ignore case while searching, or not.
* Replace:: Search, and replace some or all matches.

View file

@ -146,7 +146,7 @@ Emacs.
@menu
* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete.
* Stuck Recursive:: `[...]' in mode line around the parentheses.
* Stuck Recursive:: '[...]' in mode line around the parentheses.
* Screen Garbled:: Garbage on the screen.
* Text Garbled:: Garbage in the text.
* Memory Full:: How to cope when you run out of memory.
@ -743,7 +743,7 @@ unmodified Emacs. But if you've made modifications and you don't tell
us, you are sending us on a wild goose chase.)
Be precise about these changes. A description in English is not
enough---send a context diff for them.
enough---send a unified context diff for them.
Adding files of your own, or porting to another machine, is a
modification of the source.
@ -1131,13 +1131,12 @@ is important.
@item
The patch itself.
Use @samp{diff -c} to make your diffs. Diffs without context are hard
Use @samp{diff -u} to make your diffs. Diffs without context are hard
to install reliably. More than that, they are hard to study; we must
always study a patch to decide whether we want to install it. Unidiff
format is better than contextless diffs, but not as easy to read as
@samp{-c} format.
always study a patch to decide whether we want to install it. Context
format is better than contextless diffs, but we prefer we unified format.
If you have GNU diff, use @samp{diff -c -F'^[_a-zA-Z0-9$]+ *('} when
If you have GNU diff, use @samp{diff -u -F'^[_a-zA-Z0-9$]\+ *('} when
making diffs of C code. This shows the name of the function that each
change occurs in.
@ -1171,7 +1170,7 @@ feel that the purpose needs explaining, it probably does---but put the
explanation in comments in the code. It will be more useful there.
Please look at the change log entries of recent commits to see what
sorts of information to put in, and to learn the style that we use. Note that,
sorts of information to put in, and to learn the style that we use. Note that,
unlike some other projects, we do require change logs for
documentation, i.e., Texinfo files.
@xref{Change Log},
@ -1280,7 +1279,7 @@ See the Emacs project page
It is important to write your patch based on the current working
version. If you start from an older version, your patch may be
outdated (so that maintainers will have a hard time applying it), or
changes in Emacs may have made your patch unnecessary. After you have
changes in Emacs may have made your patch unnecessary. After you have
downloaded the repository source, you should read the file
@file{INSTALL.REPO} for build instructions (they differ to some extent
from a normal build).

View file

@ -59,7 +59,7 @@ As above, but only find entries for the current buffer's file.
For example, suppose the first line of @file{ChangeLog} is dated
1999-04-10, and that the only check-in since then was by Nathaniel
Bowditch to @file{rcs2log} on 1999-05-22 with log entry @samp{Ignore
log messages that start with `#'.}. Then @kbd{C-x v a} inserts this
log messages that start with '#'.}. Then @kbd{C-x v a} inserts this
@file{ChangeLog} entry:
@iftex
@ -69,7 +69,7 @@ log messages that start with `#'.}. Then @kbd{C-x v a} inserts this
@group
1999-05-22 Nathaniel Bowditch <nat@@apn.org>
* rcs2log: Ignore log messages that start with `#'.
* rcs2log: Ignore log messages that start with '#'.
@end group
@end smallexample
@iftex

File diff suppressed because it is too large Load diff

View file

@ -50,7 +50,7 @@
2015-03-02 Daniel Colascione <dancol@dancol.org>
* control.texi (Generators): New section
* elisp.text: Reference new section.
* elisp.texi: Reference new section.
2015-02-28 Eli Zaretskii <eliz@gnu.org>

View file

@ -21,15 +21,15 @@ Buying a manual from the Free Software Foundation helps support our GNU
development work. See <http://shop.fsf.org/>.
(At time of writing, this manual is out of print.)
* The master file for formatting this manual for Tex is called `elisp.texi'.
* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.
* This distribution contains a Makefile that you can use with GNU Make.
** To make an Info file, you need to install Texinfo, then run `make info'.
** To make an Info file, you need to install Texinfo, then run 'make info'.
** Use `make elisp.pdf' or `make elisp.html' to create PDF or HTML versions.
** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.
This file is part of GNU Emacs.

View file

@ -844,7 +844,7 @@ names start with a space are not considered at all.
If @var{buffer} is not supplied (or if it is not a live buffer), then
@code{other-buffer} returns the first buffer in the selected frame's
local buffer list. (If @var{frame} is non-@code{nil}, it returns the
local buffer list. (If @var{frame} is non-@code{nil}, it returns the
first buffer in @var{frame}'s local buffer list instead.)
If @var{frame} has a non-@code{nil} @code{buffer-predicate} parameter,

View file

@ -1462,7 +1462,7 @@ the symbols @code{handle} (the scroll bar handle), @code{above-handle}
(the area above the handle), @code{below-handle} (the area below the
handle), @code{up} (the up arrow at one end of the scroll bar), or
@code{down} (the down arrow at one end of the scroll bar).
@c The `top', `bottom', and `end-scroll' codes don't seem to be used.
@c The 'top', 'bottom', and 'end-scroll' codes don't seem to be used.
@end table
@ -1720,7 +1720,7 @@ occurred.
@vindex mouse-wheel-up-event
@vindex mouse-wheel-down-event
This kind of event is generated only on some kinds of systems. On some
This kind of event is generated only on some kinds of systems. On some
systems, @code{mouse-4} and @code{mouse-5} are used instead. For
portable code, use the variables @code{mouse-wheel-up-event} and
@code{mouse-wheel-down-event} defined in @file{mwheel.el} to determine
@ -1856,7 +1856,7 @@ into another window. That produces a pair of events like these:
@end smallexample
The frame with input focus might not take up the entire screen, and
the user might move the mouse outside the scope of the frame. Inside
the user might move the mouse outside the scope of the frame. Inside
the @code{track-mouse} special form, that produces an event like this:
@smallexample

View file

@ -1025,7 +1025,7 @@ the circumstances of the error.
The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol
defined with @code{define-error}. This is how Emacs Lisp classifies different
sorts of errors. @xref{Error Symbols}, for a description of error symbols,
sorts of errors. @xref{Error Symbols}, for a description of error symbols,
error conditions and condition names.
If the error is not handled, the two arguments are used in printing

View file

@ -842,7 +842,7 @@ symbols, and symbols are not treated like other Lisp expressions.
@item (radio @var{element-types}@dots{})
This is similar to @code{choice}, except that the choices are displayed
using `radio buttons' rather than a menu. This has the advantage of
using ``radio buttons'' rather than a menu. This has the advantage of
displaying documentation for the choices when applicable and so is often
a good choice for a choice between constant functions
(@code{function-item} customization types).

View file

@ -257,6 +257,9 @@ text properties (@pxref{Logging Messages}).
In batch mode, the message is printed to the standard error stream,
followed by a newline.
When @code{inhibit-message} is non-@code{nil}, no message will be displayed
in the echo area, it will only be logged to @samp{*Messages*}.
If @var{format-string} is @code{nil} or the empty string,
@code{message} clears the echo area; if the echo area has been
expanded automatically, this brings it back to its normal size. If
@ -282,6 +285,11 @@ To automatically display a message in the echo area or in a pop-buffer,
depending on its size, use @code{display-message-or-buffer} (see below).
@end defun
@defvar inhibit-message
When this variable is non-@code{nil}, @code{message} and related functions
will not use the Echo Area to display messages.
@end defvar
@defmac with-temp-message message &rest body
This construct displays a message in the echo area temporarily, during
the execution of @var{body}. It displays @var{message}, executes
@ -1310,6 +1318,7 @@ beginning and end. It also has properties that you can examine and set;
these affect the display of the text within the overlay.
@cindex scalability of overlays
@cindex overlays, scalability
The visual effect of an overlay is the same as of the corresponding
text property (@pxref{Text Properties}). However, due to a different
implementation, overlays generally don't scale well (many operations
@ -1351,6 +1360,15 @@ and @var{end} must specify buffer positions; they may be integers or
markers. If @var{buffer} is omitted, the overlay is created in the
current buffer.
@cindex empty overlay
@cindex overlay, empty
An overlay whose @var{start} and @var{end} specify the same buffer
position is known as @dfn{empty}. A non-empty overlay can become
empty if the text between its @var{start} and @var{end} is deleted.
When that happens, the overlay is by default not deleted, but you can
cause it to be deleted by giving it the @samp{evaporate} property
(@pxref{Overlay Properties, evaporate property}).
The arguments @var{front-advance} and @var{rear-advance} specify the
marker insertion type for the start of the overlay and for the end of
the overlay, respectively. @xref{Marker Insertion Types}. If they
@ -1720,8 +1738,11 @@ line at display-time. @xref{Truncation}.
@kindex evaporate @r{(overlay property)}
If this property is non-@code{nil}, the overlay is deleted automatically
if it becomes empty (i.e., if its length becomes zero). If you give
an empty overlay a non-@code{nil} @code{evaporate} property, that deletes
it immediately.
an empty overlay (@pxref{Managing Overlays, empty overlay}) a
non-@code{nil} @code{evaporate} property, that deletes it immediately.
Note that, unless an overlay has this property, it will not be deleted
when the text between its starting and ending positions is deleted
from the buffer.
@item keymap
@cindex keymap of character (and overlays)
@ -1777,10 +1798,10 @@ overlays that specify property @var{prop} for the character at point:
This function returns a list of the overlays that overlap the region
@var{beg} through @var{end}. ``Overlap'' means that at least one
character is contained within the overlay and also contained within the
specified region; however, empty overlays are included in the result if
they are located at @var{beg}, strictly between @var{beg} and @var{end},
or at @var{end} when @var{end} denotes the position at the end of the
buffer.
specified region; however, empty overlays (@pxref{Managing Overlays,
empty overlay}) are included in the result if they are located at
@var{beg}, strictly between @var{beg} and @var{end}, or at @var{end}
when @var{end} denotes the position at the end of the buffer.
@end defun
@defun next-overlay-change pos
@ -2790,7 +2811,7 @@ then the new definition of the @code{mode-line} face inherits from the
functions instead of setting @code{face-remapping-alist} directly, to
avoid trampling on remappings applied elsewhere. These functions are
intended for buffer-local remappings, so they all make
@code{face-remapping-alist} buffer-local as a side-effect. They manage
@code{face-remapping-alist} buffer-local as a side-effect. They manage
@code{face-remapping-alist} entries of the form
@example
@ -2820,11 +2841,11 @@ pass this object as an argument to @code{face-remap-remove-relative}
if you need to remove the remapping later.
@example
;; Remap the `escape-glyph' face into a combination
;; of the `highlight' and `italic' faces:
;; Remap the 'escape-glyph' face into a combination
;; of the 'highlight' and 'italic' faces:
(face-remap-add-relative 'escape-glyph 'highlight 'italic)
;; Increase the size of the `default' face by 50%:
;; Increase the size of the 'default' face by 50%:
(face-remap-add-relative 'default :height 1.5)
@end example
@end defun
@ -4557,7 +4578,7 @@ not affect the amount of raising or lowering, which is based on the
faces used for the text.
@end table
@c We put all the `@code{(when ...)}' on one line to encourage
@c We put all the '@code{(when ...)}' on one line to encourage
@c makeinfo's end-of-sentence heuristics to DTRT. Previously, the dot
@c was at eol; the info file ended up w/ two spaces rendered after it.
You can make any display specification conditional. To do that,
@ -5628,7 +5649,7 @@ so that it's easy to define special-purpose types of buttons for
specific tasks.
@defun define-button-type name &rest properties
Define a `button type' called @var{name} (a symbol).
Define a ``button type'' called @var{name} (a symbol).
The remaining arguments
form a sequence of @var{property value} pairs, specifying default
property values for buttons with this type (a button's type may be set
@ -5781,7 +5802,7 @@ Return @code{t} if button-type @var{type} is a subtype of @var{supertype}.
These are commands and functions for locating and operating on
buttons in an Emacs buffer.
@code{push-button} is the command that a user uses to actually `push'
@code{push-button} is the command that a user uses to actually ``push''
a button, and is bound by default in the button itself to @key{RET}
and to @key{mouse-2} using a local keymap in the button's overlay or
text properties. Commands that are useful outside the buttons itself,
@ -6643,7 +6664,7 @@ Non-@acronym{ASCII}, non-printing characters @code{U+0080} to
@samp{\230}).
@item format-control
Characters of Unicode General Category `Cf', such as @samp{U+200E}
Characters of Unicode General Category ``Cf'', such as @samp{U+200E}
(Left-to-Right Mark), but excluding characters that have graphic
images, such as @samp{U+00AD} (Soft Hyphen).
@ -6652,9 +6673,9 @@ Characters for there is no suitable font, or which cannot be encoded
by the terminal's coding system.
@end table
@c FIXME: this can also be `acronym', but that's not currently
@c FIXME: this can also be 'acronym', but that's not currently
@c completely implemented; it applies only to the format-control
@c group, and only works if the acronym is in `char-acronym-table'.
@c group, and only works if the acronym is in 'char-acronym-table'.
The @var{method} symbol should be one of @code{zero-width},
@code{thin-space}, @code{empty-box}, or @code{hex-code}. These have
the same meanings as in @code{glyphless-char-display}, above.

View file

@ -247,9 +247,9 @@ Appendices
@end ignore
@c Do NOT modify the following 3 lines! They must have this form to
@c be correctly identified by `texinfo-multiple-files-update'. In
@c be correctly identified by 'texinfo-multiple-files-update'. In
@c particular, the detailed menu header line MUST be identical to the
@c value of `texinfo-master-menu-header'. See texnfo-upd.el.
@c value of 'texinfo-master-menu-header'. See texnfo-upd.el.
@detailmenu
--- The Detailed Node Listing ---

View file

@ -423,7 +423,7 @@ To do so, execute the following code:
You might wish to save the file modes value returned by
@code{backup-buffer} and use that (if non-@code{nil}) to set the mode
bits of the file that you write. This is what @code{save-buffer}
normally does. @xref{Making Backups,, Making Backup Files}.
normally does. @xref{Making Backups,, Making Backup Files}.
The hook functions in @code{write-file-functions} are also responsible
for encoding the data (if desired): they must choose a suitable coding
@ -3352,8 +3352,8 @@ from the buffer is actually written to the file, it intermixes the
specified annotations at the corresponding positions. All this takes
place without modifying the buffer.
@c ??? What about ``overriding'' conversions like those allowed
@c ??? for `write-region-annotate-functions', below? --ttn
@c ??? What about "overriding" conversions like those allowed
@c ??? for 'write-region-annotate-functions', below? --ttn
In contrast, when reading, the annotations intermixed with the text
are handled immediately. @code{insert-file-contents} sets point to
@ -3406,8 +3406,8 @@ with one argument, the number of characters inserted, and with point
at the beginning of the inserted text. Each function should leave
point unchanged, and return the new character count describing the
inserted text as modified by the function.
@c ??? The docstring mentions a handler from `file-name-handler-alist'
@c "intercepting" `insert-file-contents'. Hmmm. --ttn
@c ??? The docstring mentions a handler from 'file-name-handler-alist'
@c "intercepting" 'insert-file-contents'. Hmmm. --ttn
@end defvar
We invite users to write Lisp programs to store and retrieve text

View file

@ -2693,7 +2693,7 @@ This function returns @code{t} if the screen can display shades of gray.
This function returns non-@code{nil} if all the face attributes in
@var{attributes} are supported (@pxref{Face Attributes}).
The definition of `supported' is somewhat heuristic, but basically
The definition of ``supported'' is somewhat heuristic, but basically
means that a face containing all the attributes in @var{attributes},
when merged with the default face for display, can be represented in a
way that's
@ -2703,14 +2703,14 @@ way that's
different in appearance than the default face, and
@item
`close in spirit' to what the attributes specify, if not exact.
``close in spirit'' to what the attributes specify, if not exact.
@end enumerate
Point (2) implies that a @code{:weight black} attribute will be
satisfied by any display that can display bold, as will
@code{:foreground "yellow"} as long as some yellowish color can be
displayed, but @code{:slant italic} will @emph{not} be satisfied by
the tty display code's automatic substitution of a `dim' face for
the tty display code's automatic substitution of a ``dim'' face for
italic.
@end defun

View file

@ -154,7 +154,7 @@ This is equivalent to @code{make-hash-table}, but with a different style
argument list. The argument @var{test} specifies the method
of key lookup.
This function is obsolete. Use @code{make-hash-table} instead.
This function is obsolete. Use @code{make-hash-table} instead.
@end defun
You can also create a new hash table using the printed representation

View file

@ -171,7 +171,7 @@ several symbols in a @file{*Help*} buffer.
(defun describe-symbols (pattern)
"Describe the Emacs Lisp symbols matching PATTERN.
All symbols that have PATTERN in their name are described
in the `*Help*' buffer."
in the *Help* buffer."
(interactive "sDescribe symbols matching: ")
(let ((describe-func
(function

View file

@ -898,14 +898,14 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p,
@group
switch (coordinates_in_window (w, x, y))
@{
case ON_NOTHING: /* NOT in window at all. */
case ON_NOTHING: /* NOT in window at all. */
return Qnil;
@end group
...
@group
case ON_MODE_LINE: /* In mode line of window. */
case ON_MODE_LINE: /* In mode line of window. */
return Qmode_line;
@end group
@ -1317,8 +1317,8 @@ except to shape their child windows. Emacs Lisp programs usually have
no access to the parent windows; they operate on the windows at the
leaves of the tree, which actually display buffers.
@c FIXME: These two slots and the `buffer' slot below were replaced
@c with a single slot `contents' on 2013-03-28. --xfq
@c FIXME: These two slots and the 'buffer' slot below were replaced
@c with a single slot 'contents' on 2013-03-28. --xfq
@item hchild
@itemx vchild
These fields contain the window's leftmost child and its topmost child

View file

@ -76,7 +76,7 @@ If Auto Compression mode is enabled, as it is by default, then if
of the file before trying other file names. It decompresses and loads
it if it exists. It looks for compressed versions by appending each
of the suffixes in @code{jka-compr-load-suffixes} to the file name.
The value of this variable must be a list of strings. Its standard
The value of this variable must be a list of strings. Its standard
value is @code{(".gz")}.
If the optional argument @var{nosuffix} is non-@code{nil}, then

View file

@ -31,7 +31,7 @@ texinfodir = $(srcdir)/../misc
INFO_EXT=.info
INFO_OPTS=--no-split
# Redefine `TEX' if `tex' does not invoke plain TeX. For example:
# Redefine 'TEX' if 'tex' does not invoke plain TeX. For example:
# TEX=platex
TEX=tex
INSTALL_INFO = install-info
@ -102,7 +102,7 @@ srcs = \
.PHONY: clean
# The info file is named `elisp'.
# The info file is named 'elisp'.
info: $(infodir)/elisp$(INFO_EXT)

View file

@ -287,8 +287,8 @@ This function returns the position that @var{marker} points to, or
This function returns the buffer that @var{marker} points into, or
@code{nil} if it points nowhere.
@c FIXME: The `buffer' argument of `set-marker' already defaults to
@c the current buffer, why use `(current-buffer)' explicitly here?
@c FIXME: The 'buffer' argument of 'set-marker' already defaults to
@c the current buffer, why use '(current-buffer)' explicitly here?
@example
@group
(setq m (make-marker))
@ -712,4 +712,3 @@ A region is valid if it has a non-zero size, or if the user option
cases, you should not use @code{region-active-p}, since if the region
is empty it is often more appropriate to operate on point.
@end defun

View file

@ -749,7 +749,7 @@ The new mode has its own abbrev table, kept in the variable
@item
The new mode has its own mode hook, @code{@var{variant}-hook}. It
runs this hook, after running the hooks of its ancestor modes, with
@code{run-mode-hooks}, as the last thing it does. @xref{Mode Hooks}.
@code{run-mode-hooks}, as the last thing it does. @xref{Mode Hooks}.
@end itemize
In addition, you can specify how to override other aspects of
@ -1122,7 +1122,7 @@ the conventions listed above:
(let ((st (make-syntax-table)))
(modify-syntax-entry ?\" ". " st)
(modify-syntax-entry ?\\ ". " st)
;; Add `p' so M-c on `hello' leads to `Hello', not `hello'.
;; Add 'p' so M-c on 'hello' leads to 'Hello', not 'hello'.
(modify-syntax-entry ?' "w p" st)
st)
"Syntax table used while in `text-mode'.")
@ -3425,7 +3425,7 @@ provided grammar is precise enough, @code{transpose-sexps} can correctly
transpose the two arguments of a @code{+} operator, taking into account
the precedence rules of the language.
Calling `smie-setup' is also sufficient to make TAB indentation work in
Calling @code{smie-setup} is also sufficient to make TAB indentation work in
the expected way, extends @code{blink-matching-paren} to apply to
elements like @code{begin...end}, and provides some commands that you
can bind in the major mode keymap.
@ -3874,7 +3874,7 @@ of instructions (enclosed in a @code{@{...@}} or @code{begin...end}
block).
@var{method} should be the method name that was passed to
`smie-rules-function'.
@code{smie-rules-function}.
@end defun
@node SMIE Indentation Example

View file

@ -248,7 +248,7 @@ unibyte string, it is returned unchanged. Use this function for
characters.
@end defun
@c FIXME: Should `@var{character}' be `@var{byte}'?
@c FIXME: Should '@var{character}' be '@var{byte}'?
@defun byte-to-string byte
@cindex byte to string
This function returns a unibyte string containing a single byte of
@ -1375,7 +1375,7 @@ alternatives described above.
The optional argument @var{accept-default-p}, if non-@code{nil},
should be a function to determine whether a coding system selected
without user interaction is acceptable. @code{select-safe-coding-system}
without user interaction is acceptable. @code{select-safe-coding-system}
calls this function with one argument, the base coding system of the
selected coding system. If @var{accept-default-p} returns @code{nil},
@code{select-safe-coding-system} rejects the silently selected coding
@ -1437,7 +1437,7 @@ don't change these variables; instead, override them using
@cindex file contents, and default coding system
@defopt auto-coding-regexp-alist
This variable is an alist of text patterns and corresponding coding
systems. Each element has the form @code{(@var{regexp}
systems. Each element has the form @code{(@var{regexp}
. @var{coding-system})}; a file whose first few kilobytes match
@var{regexp} is decoded with @var{coding-system} when its contents are
read into a buffer. The settings in this alist take priority over

View file

@ -595,8 +595,8 @@ FOO ; @r{A symbol named @samp{FOO}, different from @samp{foo}.}
@cindex @samp{##} read syntax
@ifinfo
@c This uses ``colon'' instead of a literal `:' because Info cannot
@c cope with a `:' in a menu
@c This uses "colon" instead of a literal ':' because Info cannot
@c cope with a ':' in a menu.
@cindex @samp{#@var{colon}} read syntax
@end ifinfo
@ifnotinfo
@ -999,7 +999,7 @@ of a string returns the same string.
The read syntax for a string is a double-quote, an arbitrary number
of characters, and another double-quote, @code{"like this"}. To
include a double-quote in a string, precede it with a backslash; thus,
@code{"\""} is a string containing just a single double-quote
@code{"\""} is a string containing just one double-quote
character. Likewise, you can include a backslash by preceding it with
another backslash, like this: @code{"this \\ is a single embedded
backslash"}.

View file

@ -974,7 +974,7 @@ to access the value of @var{variable}. If @var{value} is omitted or
removes @var{variable} from the environment. Otherwise, @var{value}
should be a string.
@c FIXME: Document `substitute-env-vars'? --xfq
@c FIXME: Document 'substitute-env-vars'? --xfq
If the optional argument @var{substitute} is non-@code{nil}, Emacs
calls the function @code{substitute-env-vars} to expand any
environment variables in @var{value}.
@ -2384,7 +2384,7 @@ The path to a sound file to play when the notification pops up.
@item :sound-name @var{name}
A themable named sound from the freedesktop.org sound naming
specification from @samp{$XDG_DATA_DIRS/sounds}, to play when the
notification pops up. Similar to the icon name, only for sounds. An
notification pops up. Similar to the icon name, only for sounds. An
example would be @samp{"message-new-instant"}.
@item :suppress-sound
@ -2393,9 +2393,9 @@ ability.
@item :resident
When set the server will not automatically remove the notification
when an action has been invoked. The notification will remain resident
when an action has been invoked. The notification will remain resident
in the server until it is explicitly removed by the user or by the
sender. This hint is likely only useful when the server has the
sender. This hint is likely only useful when the server has the
@code{:persistence} capability.
@item :transient

View file

@ -664,7 +664,7 @@ quotes are ignored.)
This function moves forward out of @var{arg} (default 1) levels of
parentheses. A negative argument means move backward but still to a
less deep spot. If @var{escape-strings} is non-@code{nil} (as it is
interactively), move out of enclosing strings as well. If
interactively), move out of enclosing strings as well. If
@var{no-syntax-crossing} is non-@code{nil} (as it is interactively), prefer
to break out of any enclosing string instead of moving to the start of
a list broken across multiple strings. On error, location of point is

View file

@ -196,7 +196,7 @@ Here's an example of using @code{shell-quote-argument} to construct
a shell command:
@example
(concat "diff -c "
(concat "diff -u "
(shell-quote-argument oldfile)
" "
(shell-quote-argument newfile))
@ -739,6 +739,58 @@ If @var{stopped} is non-@code{nil}, start the process in the
@item :filter @var{filter}
Initialize the process filter to @var{filter}.
@item :sentinel @var{sentinel}
Initialize the process sentinel to @var{sentinel}.
@item :stderr @var{stderr}
Associate @var{stderr} with the standard error of the process.
@var{stderr} is either a buffer or a pipe process created with
@code{make-pipe-process}.
@end table
The original argument list, modified with the actual connection
information, is available via the @code{process-contact} function.
@end defun
@defun make-pipe-process &rest args
This function creates a bidirectional pipe which can be attached to a
child process (currently only useful with the @code{:stderr} keyword
of @code{make-process}).
The arguments @var{args} are a list of keyword/argument pairs.
Omitting a keyword is always equivalent to specifying it with value
@code{nil}, except for @code{:coding}.
Here are the meaningful keywords:
@table @asis
@item :name @var{name}
Use the string @var{name} as the process name. It is modified if
necessary to make it unique.
@item :buffer @var{buffer}
Use @var{buffer} as the process buffer.
@item :coding @var{coding}
If @var{coding} is a symbol, it specifies the coding system to be
used for both reading and writing of data from and to the
connection. If @var{coding} is a cons cell
@w{@code{(@var{decoding} . @var{encoding})}}, then @var{decoding}
will be used for reading and @var{encoding} for writing.
If @var{coding} is @code{nil}, the default rules for finding the
coding system will apply. @xref{Default Coding Systems}.
@item :noquery @var{query-flag}
Initialize the process query flag to @var{query-flag}.
@xref{Query Before Exit}.
@item :stop @var{stopped}
If @var{stopped} is non-@code{nil}, start the process in the
``stopped'' state.
@item :filter @var{filter}
Initialize the process filter to @var{filter}.
@item :sentinel @var{sentinel}
Initialize the process sentinel to @var{sentinel}.
@end table

View file

@ -558,8 +558,11 @@ This matches any @acronym{ASCII} control character.
This matches @samp{0} through @samp{9}. Thus, @samp{[-+[:digit:]]}
matches any digit, as well as @samp{+} and @samp{-}.
@item [:graph:]
This matches graphic characters---everything except @acronym{ASCII} control
characters, space, and the delete character.
This matches graphic characters---everything except whitespace,
@acronym{ASCII} and non-@acronym{ASCII} control characters,
surrogates, and codepoints unassigned by Unicode, as indicated by the
Unicode @samp{general-category} property (@pxref{Character
Properties}).
@item [:lower:]
This matches any lower-case letter, as determined by the current case
table (@pxref{Case Tables}). If @code{case-fold-search} is
@ -569,8 +572,8 @@ This matches any multibyte character (@pxref{Text Representations}).
@item [:nonascii:]
This matches any non-@acronym{ASCII} character.
@item [:print:]
This matches printing characters---everything except @acronym{ASCII} control
characters and the delete character.
This matches any printing character---either whitespace, or a graphic
character matched by @samp{[:graph:]}.
@item [:punct:]
This matches any punctuation character. (At present, for multibyte
characters, it matches anything that has non-word syntax.)

View file

@ -723,6 +723,35 @@ contain less elements than @var{n}. @var{n} must be an integer. If
@end example
@end defun
@defun seq-intersection sequence1 sequence2 &optional function
This function returns a list of the elements that appear both in
@var{sequence1} and @var{sequence2}. If the optional argument
@var{function} is non-@code{nil}, it is a function of two arguments to
use to compare elements instead of the default @code{equal}.
@example
@group
(seq-intersection [2 3 4 5] [1 3 5 6 7])
@result{} (3 5)
@end group
@end example
@end defun
@defun seq-difference sequence1 sequence2 &optional function
This function returns a list of the elements that appear in
@var{sequence1} but not in @var{sequence2}. If the optional argument
@var{function} is non-@code{nil}, it is a function of two arguments to
use to compare elements instead of the default @code{equal}.
@example
@group
(seq-difference '(2 3 4 5) [1 3 5 6 7])
@result{} (2 4)
@end group
@end example
@end defun
@defun seq-group-by function sequence
This function separates the elements of @var{sequence} into an alist
whose keys are the result of applying @var{function} to each element
@ -761,8 +790,7 @@ of type @var{type}. @var{type} can be one of the following symbols:
@end example
@end defun
@defmac seq-doseq (var sequence [result]) body@dots{}
@defmac seq-doseq (var sequence) body@dots{}
@cindex sequence iteration
This macro is like @code{dolist}, except that @var{sequence} can be a list,
vector or string (@pxref{Iteration} for more information about the

View file

@ -956,12 +956,12 @@ is not truncated.
@example
@group
(format "The word `%7s' has %d letters in it."
(format "The word '%7s' has %d letters in it."
"foo" (length "foo"))
@result{} "The word ` foo' has 3 letters in it."
(format "The word `%7s' has %d letters in it."
@result{} "The word ' foo' has 3 letters in it."
(format "The word '%7s' has %d letters in it."
"specification" (length "specification"))
@result{} "The word `specification' has 13 letters in it."
@result{} "The word 'specification' has 13 letters in it."
@end group
@end example
@ -1003,9 +1003,9 @@ ignored.
(format "%-6d is padded on the right" 123)
@result{} "123 is padded on the right"
(format "The word `%-7s' actually has %d letters in it."
(format "The word '%-7s' actually has %d letters in it."
"foo" (length "foo"))
@result{} "The word `foo ' actually has 3 letters in it."
@result{} "The word 'foo ' actually has 3 letters in it."
@end group
@end example

View file

@ -203,7 +203,7 @@ suppressed.
The Lisp modes have two string quote characters: double-quote (@samp{"})
and vertical bar (@samp{|}). @samp{|} is not used in Emacs Lisp, but it
is used in Common Lisp. C also has two string quote characters:
double-quote for strings, and single-quote (@samp{'}) for character
double-quote for strings, and apostrophe (@samp{'}) for character
constants.
Human text has no string quote characters. We do not want quotation

View file

@ -512,7 +512,7 @@ non-@code{nil} and the character inserted is in the table
@c Cross refs reworded to prevent overfull hbox. --rjc 15mar92
This command performs abbrev expansion if Abbrev mode is enabled and
the inserted character does not have word-constituent
syntax. (@xref{Abbrevs}, and @ref{Syntax Class Table}.) It is also
syntax. (@xref{Abbrevs}, and @ref{Syntax Class Table}.) It is also
responsible for calling @code{blink-paren-function} when the inserted
character has close parenthesis syntax (@pxref{Blinking}).

View file

@ -657,23 +657,18 @@ starting double-quote is not part of the string!
@anchor{Docstring hyperlinks}
@item
@iftex
When a documentation string refers to a Lisp symbol, write it as it
would be printed (which usually means in lower case), with single-quotes
around it. For example: @samp{`lambda'}. There are two exceptions:
write @code{t} and @code{nil} without single-quotes.
@end iftex
@ifnottex
When a documentation string refers to a Lisp symbol, write it as it
would be printed (which usually means in lower case), with single-quotes
around it. For example: @samp{lambda}. There are two exceptions: write
t and nil without single-quotes. (In this manual, we use a different
convention, with single-quotes for all symbols.)
@end ifnottex
would be printed (which usually means in lower case), with a grave
accent @samp{`} before and apostrophe @samp{'} after it. There are
two exceptions: write @code{t} and @code{nil} without surrounding
punctuation. For example: @samp{CODE can be `lambda', nil, or t.}
(In this manual, we use a different convention, with single-quotes
around symbols.)
@cindex hyperlinks in documentation strings
Help mode automatically creates a hyperlink when a documentation string
uses a symbol name inside single quotes, if the symbol has either a
uses a symbol name between grave accent and apostrophe, if the symbol
has either a
function or a variable definition. You do not need to do anything
special to make use of this feature. However, when a symbol has both a
function definition and a variable definition, and you want to refer to
@ -716,16 +711,16 @@ documentation will be shown, even if the symbol is also defined as a
variable or as a function.
To make a hyperlink to Info documentation, write the name of the Info
node (or anchor) in single quotes, preceded by @samp{info node},
@samp{Info node}, @samp{info anchor} or @samp{Info anchor}. The Info
file name defaults to @samp{emacs}. For example,
node (or anchor) between grave accent and apostrophe, preceded by
@samp{info node}, @samp{Info node}, @samp{info anchor} or @samp{Info
anchor}. The Info file name defaults to @samp{emacs}. For example,
@smallexample
See Info node `Font Lock' and Info node `(elisp)Font Lock Basics'.
@end smallexample
Finally, to create a hyperlink to URLs, write the URL in single
quotes, preceded by @samp{URL}. For example,
Finally, to create a hyperlink to URLs, write the URL between grave
accent and apostrophe, preceded by @samp{URL}. For example,
@smallexample
The home page for the GNU project has more information (see URL

View file

@ -108,8 +108,8 @@ on elisp2-fn-vol-number-added
(volume-index-markup "II")
to create elisp2-fn-vol-number-added
insert elisp2-fn-vol-number-added into vol1.fn: do following `cat'
insert elisp1-fn-vol-number-added into vol2.fn: do following `cat'
insert elisp2-fn-vol-number-added into vol1.fn: do following 'cat'
insert elisp1-fn-vol-number-added into vol2.fn: do following 'cat'
% cat elisp2-fn-vol-number-added >> vol1.fn
% cat elisp1-fn-vol-number-added >> vol2.fn
@ -126,7 +126,7 @@ Be sure that .fn file has no blank lines.
### Create merged .toc file with volume number headings.
append vol2.toc to vol1.toc with following `cat'
append vol2.toc to vol1.toc with following 'cat'
% cat vol1.toc vol2.toc > elisp-toc-2vol.toc

View file

@ -2412,7 +2412,7 @@ the window split and the values of
and @code{split-width-threshold} (@pxref{Choosing Window Options}).
Now suppose we combine this call with a preexisting setup for
`display-buffer-alist' as follows.
@code{display-buffer-alist} as follows.
@example
@group

View file

@ -16,7 +16,7 @@ is used to create the database used by the class browser in Emacs.
.PP
.SH OPTIONS
The program follows the usual GNU command line syntax, with long
options starting with two dashes (`-').
options starting with two dashes ("\-").
.TP
.B \-a, \-\-append
append output to existing file

View file

@ -251,8 +251,8 @@ Set additional X resources.
.BI "\-\-color\fR,\fP \-\-color=" mode
Override color mode for character terminals;
.I mode
defaults to `auto', and can also be `never', `auto', `always',
or a mode name like `ansi8'.
defaults to "auto", and can also be "never", "auto", "always",
or a mode name like "ansi8".
.TP
.BI \-bw " pixels\fR,\fP " \-\-border\-width " pixels"
Set the
@ -420,8 +420,8 @@ The value can be one of
.IR fullwidth ,
or
.IR fullheight ,
which correspond to the command-line options `\-fs', `\-mm', `\-fw',
and `\-fh', respectively.
which correspond to the command-line options "\-fs", "\-mm", "\-fw",
and "\-fh", respectively.
Note that this applies to the initial frame only.
.TP
.BR geometry " (class " Geometry )
@ -482,11 +482,11 @@ the window will be displayed in reverse video.
.TP
.BR screenGamma " (class "ScreenGamma )
Gamma correction for colors, equivalent to the frame parameter
`screen\-gamma'.
"screen\-gamma".
.TP
.BR scrollBarWidth " (class "ScrollBarWidth )
The scroll bar width in pixels, equivalent to the frame parameter
`scroll\-bar\-width'.
"scroll\-bar\-width".
.TP
.BR selectionFont " (class " SelectionFont )
Font name for pop-up menu items, in non-toolkit versions of
@ -583,7 +583,7 @@ There is a mailing list, @PACKAGE_BUGREPORT@, for reporting Emacs
bugs and fixes.
But before reporting something as a bug, please try to be sure that
it really is a bug, not a misunderstanding or a deliberate feature.
We ask you to read the section ``Reporting Bugs'' in the Emacs manual
We ask you to read the section "Reporting Bugs" in the Emacs manual
for hints on how and when to report bugs.
Also, include the version number of the Emacs you are running in
\fIevery\fR bug report that you send in.

View file

@ -31,28 +31,31 @@ default editor.
For
.B emacsclient
to work, you need an already running Emacs with a server. Within Emacs,
call the functions `server-start' or `server-mode'. (Your `.emacs' file
can do this automatically if you add either `(server-start)' or
`(server-mode 1)' to it.)
call the functions "server-start" or "server-mode". (Your ".emacs" file
can do this automatically if you add either "(server-start)" or
"(server-mode 1)" to it.)
When you've finished editing the buffer, type `C-x #'
(`server-edit'). This saves the file and sends a message back to the
`emacsclient' program telling it to exit. The programs that use
`EDITOR' wait for the "editor" (actually, `emacsclient') to exit. `C-x
#' also checks for other pending external requests to edit various
When you've finished editing the buffer, type "C-x #"
("server-edit"). This saves the file and sends a message back to the
.B emacsclient
program telling it to exit. The programs that use
EDITOR wait for the "editor" (actually,
.BR emacsclient )
to exit. "C-x #" also checks for other pending external requests to
edit various
files, and selects the next such file.
If you set the variable `server-window' to a window or a frame, `C-x
#' displays the server buffer in that window or in that frame.
If you set the variable "server-window" to a window or a frame, "C-x
#" displays the server buffer in that window or in that frame.
.SH OPTIONS
The programs follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
options starting with two dashes ("\-").
.TP
.B \-a, \-\-alternate-editor=EDITOR
if the Emacs server is not running, run the specified editor instead.
This can also be specified via the `ALTERNATE_EDITOR' environment variable.
If the value of EDITOR is the empty string, run `emacs \-\-daemon' to
This can also be specified via the ALTERNATE_EDITOR environment variable.
If the value of EDITOR is the empty string, run "emacs \-\-daemon" to
start Emacs in daemon mode, and try to connect to it.
.TP
.B -c, \-\-create-frame
@ -70,7 +73,7 @@ Lisp expressions.
.TP
.B \-f, \-\-server-file=FILENAME
use TCP configuration file FILENAME for communication.
This can also be specified via the `EMACS_SERVER_FILE' environment variable.
This can also be specified via the EMACS_SERVER_FILE environment variable.
.TP
.B \-n, \-\-no-wait
returns
@ -99,4 +102,3 @@ This manual page was written by Stephane Bortzmeyer <bortzmeyer@debian.org>,
for the Debian GNU/Linux system (but may be used by others).
.SH COPYING
This manual page is in the public domain.

View file

@ -80,8 +80,8 @@ Append to existing tag file. (For \fBvi\fP-format tag files, see also
.B \-B, \-\-backward\-search
Tag files written in the format expected by \fBvi\fP contain regular
expression search instructions; the \fB\-B\fP option writes them using
the delimiter `\|\fB?\fP\|', to search \fIbackwards\fP through files.
The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP
the delimiter "\|\fB?\fP\|", to search \fIbackwards\fP through files.
The default is to use the delimiter "\|\fB/\fP\|", to search \fIforwards\fP
through files.
Only \fBctags\fP accepts this option.
.TP
@ -117,8 +117,8 @@ final brace of a function or structure definition in C and C++.
Parse the following files according to the given language. More than
one such options may be intermixed with filenames. Use \fB\-\-help\fP
to get a list of the available languages and their default filename
extensions. The `auto' language can be used to restore automatic
detection of language based on the file name. The `none'
extensions. The "auto" language can be used to restore automatic
detection of language based on the file name. The "none"
language may be used to disable language parsing altogether; only
regexp matching is done in this case (see the \fB\-\-regex\fP option).
.TP
@ -256,7 +256,7 @@ Print the current version of the program (same as the version of the
emacs \fBetags\fP is shipped with).
.SH "SEE ALSO"
`\|\fBemacs\fP\|' entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
"\|\fBemacs\fP\|" entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
Stallman.
.br
.BR cxref ( 1 ),

View file

@ -20,7 +20,7 @@
SHELL = @SHELL@
# Where to find the source code. $(srcdir) will be the doc/misc subdirectory
# of the source tree. This is set by configure's `--srcdir' option.
# of the source tree. This is set by configure's '--srcdir' option.
srcdir=@srcdir@
## Where the output files go.

View file

@ -110,11 +110,11 @@ The @code{user} is the user name. It's known as @var{:user} in
You can use spaces inside a password or other token by surrounding the
token with either single or double quotes.
You can use single quotes inside a password or other token by
You can use apostrophes inside a password or other token by
surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you
can use double quotes inside a password or other token by surrounding
it with single quotes, e.g., @code{'he"llo'}. You can't mix both (so a
password or other token can't have both single and double quotes).
it with apostrophes, e.g., @code{'he"llo'}. You can't mix both (so a
password or other token can't have both apostrophes and double quotes).
All this is optional. You could just say (but we don't recommend it,
we're just showing that it's possible)

View file

@ -331,8 +331,9 @@ character is part of a word. If you want pairing to occur even then, set
@vindex skeleton-pair-alist
Pairing is possible for all visible characters. By default the
parenthesis @samp{(}, the square bracket @samp{[}, the brace
@samp{@{}, the pointed bracket @samp{<} and the backquote @samp{`} all
pair with the symmetrical character. All other characters pair
@samp{@{} and the pointed bracket @samp{<} all
pair with the symmetrical character, and the grave accent @samp{`}
pairs with the apostrophe @samp{'}. All other characters pair
themselves. This behavior can be modified by the variable
@code{skeleton-pair-alist}. This is in fact an alist of skeletons
(@pxref{Skeleton Language}), with the first part of each sublist
@ -341,8 +342,8 @@ but since pairs don't need the @code{str} element, this is ignored.
Some modes have bound the command @code{skeleton-pair-insert-maybe}
to relevant keys. These modes also configure the pairs as
appropriate. For example, when typing english prose, you'd expect the
backquote (@samp{`}) to pair with the quote (@samp{'}), while in Shell
appropriate. For example, when typing @TeX{} input, you'd expect the
grave accent (@samp{`}) to pair with the apostrophe (@samp{'}), while in Shell
script mode it must pair to itself. They can also inhibit pairing in
certain contexts. For example an escaped character stands for itself.
@ -626,7 +627,7 @@ See the commentary in @file{tempo.el} for more information on using the
Tempo package.
@node Hippie Expand
@chapter `Hippie' Expansion
@chapter ``Hippie'' Expansion
@findex hippie-expand
@kindex M-/

View file

@ -12,9 +12,9 @@
@c The following macros are used for conditional output for single lines.
@c @texline foo
@c `foo' will appear only in TeX output
@c 'foo' will appear only in TeX output
@c @infoline foo
@c `foo' will appear only in non-TeX output
@c 'foo' will appear only in non-TeX output
@c @expr{expr} will typeset an expression;
@c $x$ in TeX, @samp{x} otherwise.
@ -431,7 +431,7 @@ Type @kbd{2 @key{RET} 3 + Q} to compute
@noindent
Type @kbd{P 2 ^} to compute
@texline @math{\pi^2 = 9.86960440109}.
@infoline the value of `pi' squared, 9.86960440109.
@infoline the value of @cpi{} squared, 9.86960440109.
@noindent
Type @key{TAB} to exchange the order of these two results.
@ -455,7 +455,7 @@ Type @kbd{' sqrt(2+3) @key{RET}} to compute
@noindent
Type @kbd{' pi^2 @key{RET}} to enter
@texline @math{\pi^2}.
@infoline `pi' squared.
@infoline @cpi{} squared.
To evaluate this symbolic formula as a number, type @kbd{=}.
@noindent
@ -1241,7 +1241,7 @@ finished in two weeks.
@c [tutorial]
@ifinfo
@c This node is accessed by the `C-x * t' command.
@c This node is accessed by the 'C-x * t' command.
@node Interactive Tutorial, Tutorial, Getting Started, Top
@chapter Tutorial
@ -2164,7 +2164,7 @@ the prefix.
One more way to correct an error is by editing the stack entries.
The actual Stack buffer is marked read-only and must not be edited
directly, but you can press @kbd{`} (the backquote or accent grave)
directly, but you can press @kbd{`} (grave accent)
to edit a stack entry.
Try entering @samp{3.141439} now. If this is supposed to represent
@ -2471,7 +2471,7 @@ We don't have enough space here to show all the zeros! They won't
fit on a typical screen, either, so you will have to use horizontal
scrolling to see them all. Press @kbd{<} and @kbd{>} to scroll the
stack window left and right by half its width. Another way to view
something large is to press @kbd{`} (back-quote) to edit the top of
something large is to press @kbd{`} (grave accent) to edit the top of
stack in a separate window. (Press @kbd{C-c C-c} when you are done.)
You can enter non-decimal numbers using the @kbd{#} symbol, too.
@ -3658,7 +3658,7 @@ fast! (But of course if you use @kbd{t .} you will lose the ability
to get old vectors back using the @kbd{t y} command.)
An easy way to view a full vector when @kbd{v .} mode is active is
to press @kbd{`} (back-quote) to edit the vector; editing always works
to press @kbd{`} (grave accent) to edit the vector; editing always works
with the full, unabbreviated value.
@cindex Least-squares for fitting a straight line
@ -6012,7 +6012,7 @@ fix, though:
@end smallexample
@noindent
When we type @kbd{Z `} (that's a back-quote character), Calc saves
When we type @kbd{Z `} (that's a grave accent), Calc saves
its mode settings and the contents of the ten ``quick variables''
for later reference. When we type @kbd{Z '} (that's an apostrophe
now), Calc restores those saved values. Thus the @kbd{p 4} and
@ -9042,7 +9042,7 @@ matrix (or other value) to the power @expr{n} in only
@texline @math{\log_2 n}
@infoline @expr{log(n,2)}
steps. For example, this program can compute the 1000th Fibonacci
number (a 209-digit integer!) in about 10 steps; even though the
number (a 209-digit integer!)@: in about 10 steps; even though the
@kbd{Z < ... Z >} solution had much simpler steps, it would have
required so many steps that it would not have been practical.
@ -10029,7 +10029,7 @@ this would be to fix a typo, as the full Emacs cursor motion and editing
keys are available during algebraic entry but not during numeric entry.
In the same vein, during either numeric or algebraic entry you can
press @kbd{`} (backquote) to switch to @code{calc-edit} mode, where
press @kbd{`} (grave accent) to switch to @code{calc-edit} mode, where
you complete your half-finished entry in a separate buffer.
@xref{Editing Stack Entries}.
@ -10174,7 +10174,7 @@ an ASCII character.
For example, the quoted character @samp{"x"} produces the vector
result @samp{[120]} (because 120 is the ASCII code of the lower-case
`x'; @pxref{Strings}). Since this is a vector, not an integer, it
``x''; @pxref{Strings}). Since this is a vector, not an integer, it
is displayed only according to the current mode settings. But
running Quick Calc again and entering @samp{120} will produce the
result @samp{120 (16#78, 8#170, x)} which shows the number in its
@ -11098,12 +11098,12 @@ noon GMT@.) Julian day numbering is largely used in astronomy.
@cindex Unix time format
The Unix operating system measures time as an integer number of
seconds since midnight, Jan 1, 1970. To convert a Calc date
value into a Unix time stamp, first subtract 719164 (the code
value into a Unix time stamp, first subtract 719163 (the code
for @samp{<Jan 1, 1970>}), then multiply by 86400 (the number of
seconds in a day) and press @kbd{R} to round to the nearest
integer. If you have a date form, you can simply subtract the
day @samp{<Jan 1, 1970>} instead of unpacking and subtracting
719164. Likewise, divide by 86400 and add @samp{<Jan 1, 1970>}
719163. Likewise, divide by 86400 and add @samp{<Jan 1, 1970>}
to convert from Unix time to a Calc date form. (Note that
Unix normally maintains the time in the GMT time zone; you may
need to subtract five hours to get New York time, or eight hours
@ -11871,10 +11871,10 @@ the stack objects at the levels determined by the point and the mark.
@cindex Editing the stack with Emacs
The @kbd{`} (@code{calc-edit}) command creates a temporary buffer
(@file{*Calc Edit*}) for editing the top-of-stack value using regular
Emacs commands. Note that @kbd{`} is a backquote, not a quote. With a
numeric prefix argument, it edits the specified number of stack entries
at once. (An argument of zero edits the entire stack; a negative
argument edits one specific stack entry.)
Emacs commands. Note that @kbd{`} is a grave accent, not an apostrophe.
With a numeric prefix argument, it edits the specified number of stack
entries at once. (An argument of zero edits the entire stack; a
negative argument edits one specific stack entry.)
When you are done editing, press @kbd{C-c C-c} to finish and return
to Calc. The @key{RET} and @key{LFD} keys also work to finish most
@ -13609,11 +13609,11 @@ Weekday: ``Sunday'' for Sunday.
@item Iww
Week number: ISO 8601 week number, ``W01'' for week 1.
@item d
Day of year: ``34'' for Feb. 3.
Day of year: ``34'' for Feb.@: 3.
@item ddd
Day of year: ``034'' for Feb. 3.
Day of year: ``034'' for Feb.@: 3.
@item bdd
Day of year: `` 34'' for Feb. 3.
Day of year: `` 34'' for Feb.@: 3.
@item T
Letter: Literal ``T''.
@item h
@ -19228,7 +19228,7 @@ non-empty sets, respectively.
The @kbd{k p} (@code{calc-prime-test}) command checks if the integer on
the top of the stack is prime. For integers less than eight million, the
answer is always exact and reasonably fast. For larger integers, a
probabilistic method is used (see Knuth vol. II, section 4.5.4, algorithm P).
probabilistic method is used (see Knuth vol.@: II, section 4.5.4, algorithm P).
The number is first checked against small prime factors (up to 13). Then,
any number of iterations of the algorithm are performed. Each step either
discovers that the number is non-prime, or substantially increases the
@ -27860,14 +27860,20 @@ while typing @kbd{u c au/yr @key{RET}} produces
If the units you request are inconsistent with the original units, the
number will be converted into your units times whatever ``remainder''
units are left over. (This can be disabled; @pxref{Customizing Calc}.)
For example, converting @samp{55 mph} into acres
produces @samp{6.08e-3 acre / m s}. (Recall that multiplication binds
more strongly than division in Calc formulas, so the units here are
acres per meter-second.) Remainder units are expressed in terms of
units are left over. For example, converting @samp{55 mph} into acres
produces @samp{6.08e-3 acre / (m s)}. Remainder units are expressed in terms of
``fundamental'' units like @samp{m} and @samp{s}, regardless of the
input units.
@kindex u n
@pindex calc-convert-exact-units
If you intend that your new units be consistent with the original
units, the @kbd{u n} (@code{calc-convert-exact-units}) command will
check the units before the conversion. For example, to change
@samp{mi/hr} to @samp{km/hr}, you could type @kbd{u c km @key{RET}},
but @kbd{u n km @key{RET}} would signal an error.
You would need to type @kbd{u n km/hr @key{RET}}.
One special exception is that if you specify a single unit name, and
a compatible unit appears somewhere in the units expression, then
that compatible unit will be converted to the new unit and the
@ -31842,7 +31848,7 @@ local variables inside the macro should not affect any variables
outside the macro. The @kbd{Z `} (@code{calc-kbd-push}) and @kbd{Z '}
(@code{calc-kbd-pop}) commands give you both of these capabilities.
When you type @kbd{Z `} (with a backquote or accent grave character),
When you type @kbd{Z `} (with a grave accent),
the values of various mode settings are saved away. The ten ``quick''
variables @code{q0} through @code{q9} are also saved. When
you type @w{@kbd{Z '}} (with an apostrophe), these values are restored.
@ -34278,7 +34284,7 @@ you can call it again with the same @var{n} to get a greater certainty;
@defun to-simple-fraction f
If @var{f} is a floating-point number which can be represented exactly
as a small rational number. return that number, else return @var{f}.
as a small rational number, return that number, else return @var{f}.
For example, 0.75 would be converted to 3:4. This function is very
fast.
@end defun
@ -35684,19 +35690,6 @@ as @samp{a/(b*c)}. If @code{calc-multiplication-has-precedence} is
of @code{calc-multiplication-has-precedence} is @code{t}.
@end defvar
@defvar calc-ensure-consistent-units
When converting units, the variable @code{calc-ensure-consistent-units}
determines whether or not the target units need to be consistent with the
original units. If @code{calc-ensure-consistent-units} is @code{nil}, then
the target units don't need to have the same dimensions as the original units;
for example, converting @samp{100 ft/s} to @samp{m} will produce @samp{30.48 m/s}.
If @code{calc-ensure-consistent-units} is non-@code{nil}, then the target units
need to have the same dimensions as the original units; for example, converting
@samp{100 ft/s} to @samp{m} will result in an error, since @samp{ft/s} and @samp{m}
have different dimensions. The default value of @code{calc-ensure-consistent-units}
is @code{nil}.
@end defvar
@defvar calc-context-sensitive-enter
The commands @code{calc-enter} and @code{calc-pop} will typically
duplicate the top of the stack. If
@ -36497,6 +36490,7 @@ keystrokes are not listed in this summary.
@r{ defn@: u d @:unit, descr @: @:calc-define-unit@:}
@r{ @: u e @: @: @:calc-explain-units@:}
@r{ @: u g @:unit @: @:calc-get-unit-definition@:}
@r{ @: u n @:units @: 18 @:calc-convert-exact-units@:}
@r{ @: u p @: @: @:calc-permanent-units@:}
@r{ a@: u r @: @: @:calc-remove-units@:}
@r{ a@: u s @: @: @:usimplify@:(a)}
@ -36661,6 +36655,8 @@ keystrokes are not listed in this summary.
@end format
@c Avoid '@:' from here on, as it now means \sumsep in tex mode.
@noindent
NOTES
@ -36799,9 +36795,9 @@ The @expr{op} prompt can be answered with the key sequence for the
desired function, or with @kbd{x} or @kbd{z} followed by a function name,
or with @kbd{$} to take a formula from the top of the stack, or with
@kbd{'} and a typed formula. In the last two cases, the formula may
be a nameless function like @samp{<#1+#2>} or @samp{<x, y : x+y>}, or it
may include @kbd{$}, @kbd{$$}, etc.@: (where @kbd{$} will correspond to the
last argument of the created function), or otherwise you will be
be a nameless function like @samp{<#1+#2>} or @samp{<x, y : x+y>}; or it
may include @kbd{$}, @kbd{$$}, etc., where @kbd{$} will correspond to the
last argument of the created function; or otherwise you will be
prompted for an argument list. The number of vectors popped from the
stack by @kbd{V M} depends on the number of arguments of the function.

View file

@ -88,7 +88,7 @@ the second with them pointing to the XEmacs manuals.
@c The following four macros generate the filenames and titles of the
@c main (X)Emacs manual and the Elisp/Lispref manual. Leave the
@c Texinfo variable `XEMACS' unset to generate a GNU Emacs version, set it
@c Texinfo variable 'XEMACS' unset to generate a GNU Emacs version, set it
@c to generate an XEmacs version, e.g., with
@c "makeinfo -DXEMACS cc-mode.texi".
@ifset XEMACS
@ -1156,7 +1156,7 @@ When this is enabled (which it normally is), indentation commands such
as @kbd{C-j} indent lines of code according to their syntactic
structure. Otherwise, a line is simply indented to the same level as
the previous one and @kbd{@key{TAB}} adjusts the indentation in steps
of `c-basic-offset'.
of @code{c-basic-offset}.
@end table
Full details on how these minor modes work are at @ref{Electric Keys},
@ -2045,7 +2045,7 @@ conflict).
The value may also be an association list to specify different comment
styles for different languages. The symbol for the major mode is then
looked up in the alist, and the value of that element is interpreted as
above if found. If it isn't found then the symbol `other' is looked up
above if found. If it isn't found then the symbol @code{other} is looked up
and its value is used instead.
The default value for @code{c-doc-comment-style} is
@ -3299,7 +3299,7 @@ only the symbol @code{after}, then the brace hangs on the right side
of the line, as in:
@example
// here, open braces always `hang'
// here, open braces always 'hang'
void spam( int i ) @{
if( i == 7 ) @{
dosomething(i);
@ -3992,7 +3992,7 @@ Hitting @kbd{C-c C-s} on line 4 gives us:
@cindex substatement block
@noindent
which tells us that this is a brace that @emph{opens} a substatement
block. @footnote{A @dfn{substatement} is the line after a
block.@footnote{A @dfn{substatement} is the line after a
conditional statement, such as @code{if}, @code{else}, @code{while},
@code{do}, @code{switch}, etc. A @dfn{substatement
block} is a brace block following one of these conditional statements.}
@ -4765,10 +4765,10 @@ covered are illustrated by this C++ example:
2: const
3: @{
4: /* this line starts a multiline
5: * comment. This line should get `c' syntax */
5: * comment. This line should get 'c' syntax */
6:
7: char* a_multiline_string = "This line starts a multiline \
8: string. This line should get `string' syntax.";
8: string. This line should get 'string' syntax.";
9:
10: note:
11: @{
@ -7174,7 +7174,7 @@ Emacs Lisp code that triggers the bug and include it in your report.
@cindex bug report mailing list
Bug reports should be sent to @email{bug-cc-mode@@gnu.org}. You can
also send other questions and suggestions (kudos? @t{;-)} to that
also send other questions and suggestions (kudos?@: @t{;-)} to that
address. It's a mailing list which you can join or browse an archive
of; see the web site at @uref{http://cc-mode.sourceforge.net/} for
further details.

View file

@ -570,20 +570,20 @@ When @file{foo.el} is compiled, these variables will be set during
the compilation itself:
@example
foo1 foo3 foo5 foo7 ; `compile'
foo1 foo3 foo5 foo7 ; 'compile'
@end example
When @file{foo.elc} is loaded, these variables will be set:
@example
foo2 foo3 foo6 foo7 ; `load'
foo2 foo3 foo6 foo7 ; 'load'
@end example
And if @file{foo.el} is loaded uncompiled, these variables will
be set:
@example
foo4 foo5 foo6 foo7 ; `eval'
foo4 foo5 foo6 foo7 ; 'eval'
@end example
If these seven @code{cl-eval-when}s had been, say, inside a @code{defun},
@ -978,7 +978,7 @@ a
The generalized variable @code{buffer-substring}, listed above,
also works in this way by replacing a portion of the current buffer.
@c FIXME? Also `eq'? (see cl-lib.el)
@c FIXME? Also 'eq'? (see cl-lib.el)
@c Currently commented out in cl.el.
@ignore

View file

@ -973,7 +973,7 @@ displayed in the member buffer.
@cindex @code{public} members
@item F a u
This command toggles the display of @code{public} members. The
@samp{a} stands for `access'.
@samp{a} stands for ``access''.
@cindex @code{protected} members
@item F a o

View file

@ -868,7 +868,7 @@ It would look like this:
(defun MY-ROOT-FCN ()
"Return the root fcn for `default-directory'"
;; You might be able to use `ede-cpp-root-project-root'
;; You might be able to use 'ede-cpp-root-project-root'
;; and not write this at all.
)
@ -1856,7 +1856,7 @@ Preprocessor symbols will be used while parsing your files.
These macros might be passed in through the command line compiler, or
are critical symbols derived from header files. Providing header files
macro values through this slot improves accuracy and performance.
Use `:spp-files' to use these files directly.
Use @code{:spp-files} to use these files directly.
@item :spp-files
Type: @code{list} @*
@ -2799,7 +2799,7 @@ Default Value: @code{t}
Non @code{nil} means the rule created is part of the all target.
Setting this to @code{nil} creates the rule to build this item, but does not
include it in the ALL`all:' rule.
include it in the @code{all:} rule.
@item :configuration-variables
Type: @code{list} @*
@ -3457,7 +3457,7 @@ Return the variable name for @var{THIS}'s sources.
@deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
Insert any symbols that the DIST rule should depend on.
Texinfo files want to insert generated `.info' files.
Texinfo files want to insert generated @file{.info} files.
Argument @var{THIS} is the target which needs to insert an info file.
@end deffn
@ -3473,7 +3473,7 @@ files in the project.
@deffn Method ede-proj-makefile-insert-dist-filepatterns :AFTER this
Insert any symbols that the DIST rule should depend on.
Texinfo files want to insert generated `.info' files.
Texinfo files want to insert generated @file{.info} files.
Argument @var{THIS} is the target which needs to insert an info file.
@end deffn

View file

@ -556,9 +556,9 @@ Makes the next difference region current.
@kindex j
Makes the very first difference region current.
@kbd{-j} makes the last region current. Typing a number, N, and then `j'
@kbd{-j} makes the last region current. Typing a number, N, and then @kbd{j}
makes the difference region N current. Typing @minus{}N (a negative number) then
`j' makes current the region Last @minus{} N.
@kbd{j} makes current the region Last @minus{} N.
@item ga
@kindex ga
@ -615,8 +615,8 @@ no longer current, due to user editing.
@item m
@kindex m
Displays the current Ediff session in a frame as wide as the physical
display. This is useful when comparing files side-by-side. Typing `m' again
restores the original size of the frame.
display. This is useful when comparing files side-by-side.
Typing @kbd{m} again restores the original size of the frame.
@item |
@kindex |
@ -675,7 +675,7 @@ Tell Ediff to skip over regions that disagree among themselves only in the
amount of white space and line breaks.
Even though such regions will be skipped over, you can still jump to any
one of them by typing the region number and then `j'. Typing @kbd{##}
one of them by typing the region number and then @kbd{j}. Typing @kbd{##}
again puts Ediff back in the original state.
@item #c
@ -695,7 +695,8 @@ and @code{ediff-ignore-case}, which are explained elsewhere.
Ediff works hard to ameliorate the effects of boredom in the workplace...
Quite often differences are due to identical replacements (e.g., the word
`foo' is replaced with the word `bar' everywhere). If the number of regions
``foo'' is replaced with the word ``bar'' everywhere). If the number
of regions
with such boring differences exceeds your tolerance threshold, you may be
tempted to tell Ediff to skip these regions altogether (you will still be able
to jump to them via the command @kbd{j}). The above commands, @kbd{#h}
@ -750,7 +751,7 @@ You can then restart any of these sessions by either clicking on a session
record or by putting the cursor over it and then typing the return key.
(Some poor souls leave so many active Ediff sessions around that they lose
track of them completely... The `R' command is designed to save these
track of them completely... The @kbd{R} command is designed to save these
people from the recently discovered Ediff Proficiency Syndrome.)
Typing @kbd{R} brings up Ediff Registry only if it is typed into an Ediff
@ -800,8 +801,8 @@ is that this difference region in buffer A is as old as that in the
ancestor buffer, so the contents of that region in buffer B represents real
change.
You may want to ignore such `obvious' merges and concentrate on difference
regions where both files `clash' with the ancestor, since this means that
You may want to ignore such ``obvious'' merges and concentrate on difference
regions where both files ``clash'' with the ancestor, since this means that
two different people have been changing this region independently and they
had different ideas on how to do this.
@ -818,10 +819,10 @@ precisely this.
To be more precise, this toggles the check for whether the current merge is
identical to its default setting, as originally decided by Ediff. For
instance, if Ediff is merging according to the `combined' policy, then the
instance, if Ediff is merging according to the ``combined'' policy, then the
merge region is skipped over if it is different from the combination of the
regions in buffers A and B@. (Warning: swapping buffers A and B will confuse
things in this respect.) If the merge region is marked as `prefer-A' then
things in this respect.) If the merge region is marked as ``prefer-A'' then
this region will be skipped if it differs from the current difference
region in buffer A, etc.
@ -851,7 +852,7 @@ corresponding region from buffer B.
@item s
@kindex s
Causes the merge window shrink to its minimum size, thereby exposing as much
of the variant buffers as possible. Typing `s' again restores
of the variant buffers as possible. Typing @kbd{s} again restores
the original size of that window.
With a positive prefix argument, this command enlarges the merge window.
@ -1164,7 +1165,7 @@ customization and faces) can be done by putting appropriate lines in
@file{.Xdefaults}, @file{.xrdb}, or whatever X resource file is in use.
With respect to the latter, please note that the X resource
for Ediff customization is `Ediff', @emph{not} `emacs'.
for Ediff customization is ``Ediff'', @emph{not} ``emacs''.
@xref{Window and Frame Configuration},
@xref{Highlighting Difference Regions}, for further details. Please also
refer to Emacs manual for the information on how to set Emacs X resources.
@ -1510,7 +1511,7 @@ We shall call these regular expressions @var{regexp-A}, @var{regexp-B} and
@var{regexp-C}.
Ediff will then start stepping through only those difference regions
where the region in buffer A matches @var{regexp-A} and/or the region in
buffer B matches @var{regexp-B}, etc. Whether `and' or `or' will be used
buffer B matches @var{regexp-B}, etc. Whether ``and'' or ``or'' will be used
depends on how you respond to a question.
When scanning difference regions for the aforesaid regular expressions,
@ -1888,10 +1889,11 @@ Otherwise, you may have to tune the values of the variables
@item ediff-patch-options
Options to pass to @code{ediff-patch-program}.
Note: the `-b' and `-z' options should be specified in
`ediff-backup-specs', not in @code{ediff-patch-options}.
Note: the @option{-b} and @option{-z} options should be specified in
@code{ediff-backup-specs}, not in @code{ediff-patch-options}.
It is recommended to pass the `-f' option to the patch program, so it won't
It is recommended to pass the @option{-f} option to the patch program,
so it won't
ask questions. However, some implementations don't accept this option, in
which case the default value of this variable should be changed.
@ -1901,19 +1903,23 @@ Backup extension used by the patch program. Must be specified, even if
@item ediff-backup-specs
Backup directives to pass to the patch program.
Ediff requires that the old version of the file (before applying the patch)
is saved in a file named @file{the-patch-file.extension}. Usually
`extension' is `.orig', but this can be changed by the user, and may also be
is saved in a file named @file{the-patch-file.@var{extension}}.
Usually @var{extension} is @file{.orig}, but this can be changed by
the user, and may also be
system-dependent. Therefore, Ediff needs to know the backup extension used
by the patch program.
Some versions of the patch program let the user specify `-b backup-extension'.
Other versions only permit `-b', which (usually) assumes the extension `.orig'.
Yet others force you to use `-z<backup-extension>'.
Some versions of the patch program let the user specify @option{-b
@var{extension}} to specify a backup file name extension. Other
versions only permit @option{-b}, which (usually) assumes the
extension @file{.orig}. Yet others force you to use
@option{-z@var{extension}}.
Note that both `ediff-backup-extension' and `ediff-backup-specs' must be
properly set. If your patch program takes the option `-b', but not
`-b extension', the variable `ediff-backup-extension' must still
be set so Ediff will know which extension to use.
Both @code{ediff-backup-extension} and @var{ediff-backup-specs} must
be properly set. If your patch program takes the option @option{-b},
but not @option{-b @var{extension}}, the variable
@code{ediff-backup-extension} must still be set so Ediff will know
which extension to use.
@item ediff-custom-diff-program
@itemx ediff-custom-diff-options
@ -2105,7 +2111,7 @@ typing @kbd{s}. This change is temporary, until Ediff finds a reason to
redraw the screen. Typing @kbd{s} again restores the original window size.
With a positive prefix argument, the @kbd{s} command will make the merge
window slightly taller. This change is persistent. With `@kbd{-}' or
window slightly taller. This change is persistent. With ``@kbd{-}'' or
with a negative prefix argument, the command @kbd{s} makes the merge
window slightly shorter. This change also persistent.

View file

@ -710,7 +710,7 @@ functions are bound to @key{F7}, @key{F8}, @kbd{GOLD-F8}, @key{F9},
@item
The original EDT emulation package set up many default regular and GOLD
bindings. We tried to preserve most (but not all!) of these, so users
bindings. We tried to preserve most (but not all!)@: of these, so users
of the original emulation package will feel more at home.
Nevertheless, there are still many GOLD key sequences which are not

View file

@ -22,7 +22,7 @@ Copyright @copyright{} 2008, 2010-2015 Free Software Foundation, Inc.
@quotation
This list of frequently asked questions about GNU Emacs on MS Windows
with answers (``FAQ'') may be translated into other languages,
transformed into other formats (e.g. Texinfo, Info, WWW), and updated
transformed into other formats (e.g., Texinfo, Info, WWW), and updated
with new information.
The same conditions apply to any derivative of the FAQ as apply to the FAQ
@ -594,7 +594,7 @@ Subject: Re: Re[2]: problem with caps/ctrl swap on NT 4.0
@smallexample
It's a binary value that lets you map keystrokes in the low-level keyboard
drivers in NT. As a result you don't have to worry about applications
bypassing mappings that you've done at a higher level (i.e. it just works).
bypassing mappings that you've done at a higher level (i.e., it just works).
Here's the format of the value:
@ -674,7 +674,7 @@ The minor mode @code{transient-mark-mode} changes the behavior of
the mark in two ways. First, it distinguishes between an active mark
that has just been defined or reactivated, and an inactive mark. When
the mark is active, some commands that normally act on lines, words,
buffers etc. will instead act on the region. An inactive mark needs
buffers, etc., will instead act on the region. An inactive mark needs
to be reactivated to operate on it, unless @code{mark-even-if-inactive}
is set. Secondly, @code{transient-mark-mode} also highlights the
region when it is active, providing the same visual clue that you get
@ -2029,8 +2029,8 @@ select it. For arguments, use @option{+$(CurLine)}
(the quotes around FilePath handle paths with spaces in them). Set the
Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in
Emacs to the same line as the cursor position in VC++. The ampersand
in the word @code{Em&acs} allows you to select emacs from the keyboard. (E
is already used for the OLE control test container.)
in the word @code{Em&acs} allows you to select emacs from the keyboard.
(E is already used for the OLE control test container.)
You should now be able to go to any source file in your project. Then,
use the pull-down menu @code{Tools->Emacs}. The active file in your

View file

@ -3670,7 +3670,7 @@ for deleting the previous character outside of Emacs. On many Unix
systems, this command will remap @key{DEL}:
@example
stty erase `^?'
stty erase '^?'
@end example
@item
@ -3766,8 +3766,8 @@ You can swap two keys (or key sequences) by using the
into @key{DEL} and @key{DEL} to @kbd{C-h}, use
@lisp
(keyboard-translate ?\C-h ?\C-?) ; translate `C-h' to DEL
(keyboard-translate ?\C-? ?\C-h) ; translate DEL to `C-h'.
(keyboard-translate ?\C-h ?\C-?) ; translate 'C-h' to DEL
(keyboard-translate ?\C-? ?\C-h) ; translate DEL to 'C-h'.
@end lisp
@noindent

View file

@ -140,13 +140,13 @@ constructor. The constructor is a function with the same name as your
class which returns a new instance of that class. Here is an example:
@example
(setq rec (record "Eric" :name "Eric" :birthday "June" :phone "555-5555"))
(setq rec (record :name "Eric" :birthday "June" :phone "555-5555"))
@end example
@noindent
The first argument is the name given to this instance. Each instance
is given a name, so different instances can be easily distinguished
when debugging.
For backward compatibility reasons, the first argument can be a string (a name
given to this instance). Each instance used to be given a name, so different
instances could be easily distinguished when debugging.
It can be a bit repetitive to also have a :name slot. To avoid doing
this, it is sometimes handy to use the base class @code{eieio-named}.
@ -233,7 +233,7 @@ first argument, and this one must be an @eieio{} type.
@item Support for metaclasses
There is just one default metaclass, @code{eieio-default-superclass},
and you cannot define your own. The @code{:metaclass} tag in
@code{defclass} is ignored. Also, functions like `find-class', which
@code{defclass} is ignored. Also, functions like @code{find-class}, which
should return instances of the metaclass, behave differently in
@eieio{} in that they return symbols or plain structures instead.
@ -244,7 +244,7 @@ EIEIO does not support it.
This CLOS method tag is non-functional.
@item :default-initargs in @code{defclass}
Each slot has an @code{:initarg} tag, so this is not really necessary.
Each slot can have an @code{:initform} tag, so this is not really necessary.
@item Mock object initializers
Each class contains a mock object used for fast initialization of
@ -266,10 +266,9 @@ To create a new class, use the @code{defclass} macro:
@defmac defclass class-name superclass-list slot-list &rest options-and-doc
Create a new class named @var{class-name}. The class is represented
by a self-referential symbol with the name @var{class-name}. @eieio{}
stores the structure of the class as a symbol property of
@var{class-name} (@pxref{Symbol Components,,,elisp,GNU Emacs Lisp
Reference Manual}).
by a symbol with the name @var{class-name}. @eieio{} stores the structure of
the class as a symbol property of @var{class-name} (@pxref{Symbol
Components,,,elisp,GNU Emacs Lisp Reference Manual}).
The @var{class-name} symbol's variable documentation string is a
modified version of the doc string found in @var{options-and-doc}.
@ -292,17 +291,12 @@ or @code{:protection}.
@end defmac
@noindent
Whenever defclass is used to create a new class, two predicates are
created for it, named @code{@var{CLASS-NAME}-p} and
@code{@var{CLASS-NAME}-child-p}:
Whenever defclass is used to create a new class, a predicate is
created for it, named @code{@var{CLASS-NAME}-p}:
@defun CLASS-NAME-p object
Return @code{t} if @var{OBJECT} is of the class @var{CLASS-NAME}.
@end defun
@defun CLASS-NAME-child-p object
Return @code{t} if @var{OBJECT} is of the class @var{CLASS-NAME},
or is of a subclass of @var{CLASS-NAME}.
Return non-@code{nil} if and only if @var{OBJECT} is of the class
@var{CLASS-NAME}.
@end defun
@defvar eieio-error-unsupported-class-tags
@ -418,7 +412,7 @@ Valid tags are:
@table @code
@item :initarg
A symbol that can be used in the argument list of the constructor to
specify a value for the new instance being created.
specify a value for this slot of the new instance being created.
A good symbol to use for initarg is one that starts with a colon @code{:}.
@ -428,13 +422,13 @@ The slot specified like this:
@end example
could then be initialized to the number 1 like this:
@example
(myobject "name" :myslot 1)
(myobject :myslot 1)
@end example
@xref{Making New Objects}.
@item :initform
A expression used as the default value for this slot.
An expression used as the default value for this slot.
If @code{:initform} is left out, that slot defaults to being unbound.
It is an error to reference an unbound slot, so if you need
@ -445,19 +439,13 @@ Use @code{slot-boundp} to test if a slot is unbound
(@pxref{Predicates}). Use @code{slot-makeunbound} to set a slot to
being unbound after giving it a value (@pxref{Accessing Slots}).
The value passed to initform is automatically quoted. Thus,
The value passed to initform used to be automatically quoted. Thus,
@example
:initform (1 2 3)
@end example
appears as the specified list in the default object.
A symbol that is a function like this:
@example
:initform +
@end example
will set the initial value as that symbol.
After a class has been created with @code{defclass}, you can change
that default value with @code{oset-default}. @ref{Accessing Slots}.
will use the list as a value. This is incompatible with CLOS (which would
signal an error since 1 is not a valid function) and will likely change in the
future, so better quote your initforms if they're just values.
@item :type
An unquoted type specifier used to validate data set into this slot.
@ -669,7 +657,7 @@ can do any valid Lispy thing you want with it, such as
Example of creating an object from a class:
@example
(record "test" :value 3 :reference nil)
(record :value 3 :reference nil)
@end example
@end defun
@ -692,15 +680,6 @@ for each slot. For example:
(make-instance @code{'foo} @code{:slot1} value1 @code{:slotN} valueN)
@end example
Compatibility note:
If the first element of @var{initargs} is a string, it is used as the
name of the class.
In @eieio{}, the class' constructor requires a name for use when printing.
@dfn{make-instance} in CLOS doesn't use names the way Emacs does, so the
class is used as the name slot instead when @var{initargs} doesn't start with
a string.
@end defun
@node Accessing Slots
@ -717,14 +696,9 @@ This macro sets the value behind @var{slot} to @var{value} in
@end defmac
@defmac oset-default class slot value
This macro sets the @code{:initform} for @var{slot} in @var{class} to
This macro sets the value for the class-allocated @var{slot} in @var{class} to
@var{value}.
This allows the user to set both public and private defaults after the
class has been constructed, and provides a way to configure the
default behavior of packages built with classes (the same way
@code{setq-default} does for buffer-local variables).
For example, if a user wanted all @code{data-objects} (@pxref{Building
Classes}) to inform a special object of his own devising when they
changed, this can be arranged by simply executing this bit of code:
@ -737,16 +711,12 @@ changed, this can be arranged by simply executing this bit of code:
@defmac oref obj slot
@anchor{oref}
Retrieve the value stored in @var{obj} in the slot named by @var{slot}.
Slot is the name of the slot when created by @dfn{defclass} or the label
created by the @code{:initarg} tag.
Slot is the name of the slot when created by @dfn{defclass}.
@end defmac
@defmac oref-default obj slot
@defmac oref-default class slot
@anchor{oref-default}
Gets the default value of @var{obj} (maybe a class) for @var{slot}.
The default value is the value installed in a class with the @code{:initform}
tag. @var{slot} can be the slot name, or the tag specified by the @code{:initarg}
tag in the @dfn{defclass} call.
Get the value of the class-allocated @var{slot} from @var{class}.
@end defmac
The following accessors are defined by CLOS to reference or modify
@ -812,7 +782,7 @@ Where each @var{var} is the local variable given to the associated
variable name of the same name as the slot.
@example
(defclass myclass () (x :initarg 1))
(defclass myclass () (x :initform 1))
(setq mc (make-instance 'myclass))
(with-slots (x) mc x) => 1
(with-slots ((something x)) mc something) => 1
@ -986,15 +956,14 @@ allows the first argument to be cast.
@section Static Methods
Static methods do not depend on an object instance, but instead
operate on an object's class. You can create a static method by using
operate on a class. You can create a static method by using
the @code{:static} key with @code{defmethod}.
Do not treat the first argument of a @code{:static} method as an
object unless you test it first. Use the functions
@code{oref-default} or @code{oset-default} which will work on a class,
or on the class of an object.
The first argument of a @code{:static} method will be a class rather than an
object. Use the functions @code{oref-default} or @code{oset-default} which
will work on a class.
A Class' @code{constructor} method is defined as a @code{:static}
A class's @code{make-instance} method is defined as a @code{:static}
method.
@b{Note:} The @code{:static} keyword is unique to @eieio{}.
@ -1085,13 +1054,6 @@ For example:
Will fetch the documentation string for @code{eieio-default-superclass}.
@end defun
@defun class-constructor class
Return a symbol used as a constructor for @var{class}. The
constructor is a function used to create new instances of
@var{CLASS}. This function provides a way to make an object of a class
without knowing what it is. This is not a part of CLOS.
@end defun
@defun eieio-object-name obj
Return a string of the form @samp{#<object-class myobjname>} for @var{obj}.
This should look like Lisp symbols from other parts of Emacs such as
@ -1105,11 +1067,6 @@ information into the symbol.
Returns the class symbol from @var{obj}.
@end defun
@defun eieio--object-class obj
Same as @code{eieio-object-class} except this is a macro, and no
type-checking is performed.
@end defun
@defun eieio-object-class-name obj
Returns the symbol of @var{obj}'s class.
@end defun
@ -1267,7 +1224,7 @@ Return the list of public slots for @var{obj}.
@end defun
@defun class-slot-initarg class slot
For the given @var{class} return the :initarg associated with
For the given @var{class} return an :initarg associated with
@var{slot}. Not all slots have initargs, so the return value can be
@code{nil}.
@end defun
@ -1612,7 +1569,7 @@ is a list of name/value pairs. These are actually just passed to
Sets slots of @var{obj} with @var{slots} which is a list of name/value
pairs.
This is called from the default @code{constructor}.
This is called from the default constructor.
@end defun
@node Basic Methods

View file

@ -266,54 +266,54 @@ This is a summary of keystrokes available in every ERC buffer.
@table @kbd
@item C-a or <home> (`erc-bol')
@item C-a or <home> (@code{erc-bol})
Go to beginning of line or end of prompt.
@item RET (`erc-send-current-line')
@item RET (@code{erc-send-current-line})
Send the current line
@item TAB (`erc-complete-word')
@item TAB (@code{erc-complete-word})
If at prompt, complete the current word.
Otherwise, move to the next link or button.
@item M-TAB (`ispell-complete-word')
@item M-TAB (@code{ispell-complete-word})
Complete the given word, using ispell.
@item C-c C-a (`erc-bol')
@item C-c C-a (@code{erc-bol})
Go to beginning of line or end of prompt.
@item C-c C-b (`erc-iswitchb')
Use `iswitchb-read-buffer' to prompt for a ERC buffer to switch to.
@item C-c C-b (@code{erc-iswitchb})
Use @code{iswitchb-read-buffer} to prompt for a ERC buffer to switch to.
@item C-c C-c (`erc-toggle-interpret-controls')
@item C-c C-c (@code{erc-toggle-interpret-controls})
Toggle interpretation of control sequences in messages.
@item C-c C-d (`erc-input-action')
@item C-c C-d (@code{erc-input-action})
Interactively input a user action and send it to IRC.
@item C-c C-e (`erc-toggle-ctcp-autoresponse')
@item C-c C-e (@code{erc-toggle-ctcp-autoresponse})
Toggle automatic CTCP replies (like VERSION and PING).
@item C-c C-f (`erc-toggle-flood-control')
@item C-c C-f (@code{erc-toggle-flood-control})
Toggle use of flood control on sent messages.
@item C-c TAB (`erc-invite-only-mode')
@item C-c TAB (@code{erc-invite-only-mode})
Turn on the invite only mode (+i) for the current channel.
@item C-c C-j (`erc-join-channel')
@item C-c C-j (@code{erc-join-channel})
Join channel. If point is at the beginning of a channel name, use that
as default.
@item C-c C-k (`erc-go-to-log-matches-buffer')
@item C-c C-k (@code{erc-go-to-log-matches-buffer})
Interactively open an erc-log-matches buffer
@item C-c C-l (`erc-save-buffer-in-logs')
@item C-c C-l (@code{erc-save-buffer-in-logs})
Append buffer contents to the log file, if logging is enabled.
@item C-c C-n (`erc-channel-names')
@item C-c C-n (@code{erc-channel-names})
Run "/names #channel" in the current channel.
@item C-c C-o (`erc-get-channel-mode-from-keypress')
@item C-c C-o (@code{erc-get-channel-mode-from-keypress})
Read a key sequence and call the corresponding channel mode function.
After doing @kbd{C-c C-o}, type in a channel mode letter.
@ -321,22 +321,22 @@ After doing @kbd{C-c C-o}, type in a channel mode letter.
@kbd{RET} lets you type more than one mode at a time.
If @kbd{l} is pressed, @code{erc-set-channel-limit} gets called.
If @kbd{k} is pressed, @code{erc-set-channel-key} gets called.
Anything else will be sent to `erc-toggle-channel-mode'.
Anything else will be sent to @code{erc-toggle-channel-mode}.
@item C-c C-p (`erc-part-from-channel')
@item C-c C-p (@code{erc-part-from-channel})
Part from the current channel and prompt for a reason.
@item C-c C-q (`erc-quit-server')
@item C-c C-q (@code{erc-quit-server})
Disconnect from current server after prompting for reason.
@item C-c C-r (`erc-remove-text-properties-region')
@item C-c C-r (@code{erc-remove-text-properties-region})
Clears the region (start,end) in object from all colors, etc.
@item C-c C-t (`erc-set-topic')
@item C-c C-t (@code{erc-set-topic})
Prompt for a topic for the current channel.
@item C-c C-u (`erc-kill-input')
Kill current input line using `erc-bol' followed by `kill-line'.
@item C-c C-u (@code{erc-kill-input})
Kill current input line using @code{erc-bol} followed by @code{kill-line}.
@end table

View file

@ -822,7 +822,7 @@ functions.
While fixtures are a useful syntactic simplification in other
languages, this does not apply to Lisp, where higher-order functions
and `unwind-protect' are available. One way to implement and use a
and @code{unwind-protect} are available. One way to implement and use a
fixture in ERT is
@lisp
@ -851,7 +851,7 @@ be added but would provide only a minor simplification.
(If you are interested in such syntax, note that splitting set-up and
tear-down into separate functions, like *Unit tools usually do, makes
it impossible to establish dynamic `let' bindings as part of the
it impossible to establish dynamic @code{let} bindings as part of the
fixture. So, blindly imitating the way fixtures are implemented in
other languages would be counter-productive in Lisp.)

View file

@ -250,7 +250,7 @@ need to use a function that takes some other data type, you will need to
call it in an Elisp expression (which can also be used with
@ref{Expansion, expansions}). As with other shells, you can
escape special characters and spaces with the backslash (@code{\}) and
the single (@code{''}) and double (@code{""}) quotes.
apostrophes (@code{''}) and double quotes (@code{""}).
@node Built-ins
@ -298,6 +298,12 @@ with no arguments, prints the current paths in this variable.
Define an alias (@pxref{Aliases}). This does not add it to the aliases
file.
@item clear
@cmindex clear
Scrolls the contents of the eshell window out of sight, leaving a blank window.
If provided with an optional non-nil argument, the scrollback contents are
cleared instead.
@item date
@cmindex date
Similar to, but slightly different from, the GNU Coreutils
@ -654,6 +660,16 @@ not @samp{git status} -- use @code{eshell-visual-subcommands}; and for
commands that are visual only when passed certain options, use
@code{eshell-visual-options}.
Caution: Some tools such as Git use the pager @samp{less} by default
to paginate their output but call it with its @samp{-F} option. This
option causes @samp{less} to echo the output instead of paginating it
if the output is less than one page long. This causes undesirable
behavior if, e.g., @samp{git diff}, is defined as a visual subcommand.
It'll work if the output is big enough and fail if it is less than one
page long. If that occurs to you, search for configuration options
for calling @samp{less} without the @samp{-F} option. For Git, you
can do that using @samp{git config --global core.pager 'less -+F'}.
@section Redirection
Redirection is mostly the same in Eshell as it is in other command
shells. The output redirection operators @code{>} and @code{>>} as
@ -1136,7 +1152,7 @@ auto-revert mode in that buffer at frequent intervals---and a
@item Make @command{dgrep} load @code{dired}, mark everything, then invoke @code{dired-do-search}
@item Write mesh.c
@item Write @file{mesh.c}
This would run Emacs with the appropriate arguments to invoke Eshell
only. That way, it could be listed as a login shell.
@ -1145,7 +1161,8 @@ only. That way, it could be listed as a login shell.
@item Auto-detect when a command is visual, by checking @code{TERMCAP} usage
@item The first keypress after @kbd{M-x watson} triggers `eshell-send-input'
@item The first keypress after @kbd{M-x watson} triggers
@code{eshell-send-input}
@item Make @kbd{/} electric

View file

@ -4,6 +4,8 @@
@settitle Emacs Unified Directory Client (EUDC) Manual
@afourpaper
@documentencoding UTF-8
@syncodeindex fn cp
@syncodeindex vr cp
@c %**end of header
@copying
@ -61,8 +63,7 @@ modify this GNU manual.''
* Usage:: The various usage possibilities explained
* Credits:: Who's done what
* GNU Free Documentation License:: The license for this documentation.
* Command and Function Index::
* Variables Index::
* Index::
@end menu
@ -220,15 +221,36 @@ email composition buffers (@pxref{Inline Query Expansion})
@section LDAP Configuration
LDAP support is added by means of @file{ldap.el}, which is part of
Emacs. @file{ldap.el} needs an external command line utility named
@file{ldapsearch}, available as part of OpenLDAP
Emacs. @file{ldap.el} needs an external program called
@command{ldapsearch}, available as part of OpenLDAP
(@url{http://www.openldap.org/}). The configurations in this section
were tested with OpenLDAP 2.4.23.
Most servers use LDAP-over-SSL these days; the examples here reflect
that. The other possibilities are:
@vindex ldap-host-parameters-alist
@vindex ldap-ldapsearch-args
@itemize @bullet
@item
Servers that do not require authentication or that do not encrypt
authentication traffic.
Include @code{auth simple} in @code{ldap-host-parameters-alist}, which
causes the @code{-x} option to be passed to @command{ldapsearch}.
@item
Servers that require SASL authentication.
Pass any required extra options to @command{ldapsearch} using
@code{ldap-ldapsearch-args}.
@end itemize
The following examples use a base of
@code{ou=people,dc=example,dc=com} and the host name
@code{directory.example.com}, a server that supports LDAP-over-SSL
(the @code{ldaps} protocol, with default port @code{636}) and which
@code{ou=people,dc=gnu,dc=org} and the host name
@code{ldap.gnu.org}, a server that supports LDAP-over-SSL (the
@code{ldaps} protocol, with default port @code{636}) and which
requires authentication by the user @code{emacsuser} with password
@code{s3cr3t}.
@ -244,14 +266,22 @@ example, attempting to TAB-complete the following:
To: * Smith
@end example
@noindent
will return all LDAP entries with surnames that begin with
@code{Smith}. In every LDAP query it makes, EUDC implicitly appends
the wildcard character to the end of the last word.
@menu
* Emacs-only Configuration:: Configure with @file{.emacs}
* External Configuration:: Configure with @file{/etc/openldap/ldap.conf}
* Troubleshooting:: Debug @command{ldapsearch} failures
@end menu
@node Emacs-only Configuration
@subsection Emacs-only Configuration
Emacs can pass most required configuration options via the
@file{ldapsearch} command-line. One exception is certificate
@command{ldapsearch} command-line. One exception is certificate
configuration for LDAP-over-SSL, which must be specified in
@file{/etc/openldap/ldap.conf}. On systems that provide such
certificates as part of the @code{OpenLDAP} installation, this can be
@ -264,19 +294,28 @@ TLS_CACERTDIR /etc/openldap/certs
In @file{.emacs}, these expressions suffice to configure EUDC for
LDAP:
@vindex message-mode-map
@findex eudc-expand-inline
@vindex eudc-server-hotlist
@vindex ldap-host-parameters-alist
@lisp
(eval-after-load "message"
'(define-key message-mode-map (kbd "TAB") 'eudc-expand-inline))
(customize-set-variable 'eudc-server-hotlist
'(("" . bbdb)
("ldaps://directory.example.com" . ldap)))
("ldaps://ldap.gnu.org" . ldap)))
(customize-set-variable 'ldap-host-parameters-alist
'(("ldaps://directory.example.com"
base "ou=people,dc=example,dc=com"
binddn "example\\emacsuser"
'(("ldaps://ldap.gnu.org"
base "ou=people,dc=gnu,dc=org"
binddn "gnu\\emacsuser"
passwd ldap-password-read)))
@end lisp
@findex ldap-password-read
@vindex passwd
@vindex password-cache
@vindex password-cache-expiry
@findex password-reset
Specifying the function @code{ldap-password-read} for @code{passwd}
will cause Emacs to prompt interactively for the password. The
password will then be validated and cached, unless
@ -285,60 +324,91 @@ password will then be validated and cached, unless
password is cached. If you want to clear the cache, call
@code{password-reset}.
@node External Configuration
@subsection External Configuration
Your system may already be configured for a default LDAP server. For
example, @file{/etc/openldap/ldap.conf} might contain:
@example
BASE ou=people,dc=example,dc=com
URI ldaps://directory.example.com
BASE ou=people,dc=gnu,dc=org
URI ldaps://ldap.gnu.org
TLS_CACERTDIR /etc/openldap/certs
@end example
To authenticate, the @dfn{bind distinguished name (binddn)} is
required, in this case, @code{example\emacsuser}, along with the
password. These can be specified in @file{~/.authinfo.gpg} with the
following line:
@cindex bind distinguished name
@cindex binddn
Authentication requires a password, and a @dfn{bind distinguished name
(binddn)} representing the user, in this case,
@code{gnu\emacsuser}. These can be specified in
@file{~/.authinfo.gpg} with the following line:
@example
machine ldaps://directory.example.com binddn example\emacsuser password s3cr3t
machine ldaps://ldap.gnu.org binddn gnu\emacsuser password s3cr3t
@end example
Then in the @file{.emacs} init file, these expressions suffice to
configure EUDC for LDAP:
@vindex message-mode-map
@findex eudc-expand-inline
@vindex eudc-server-hotlist
@vindex ldap-host-parameters-alist
@lisp
(eval-after-load "message"
'(define-key message-mode-map (kbd "TAB") 'eudc-expand-inline))
(customize-set-variable 'eudc-server-hotlist
'(("" . bbdb)
("ldaps://directory.example.com" . ldap)))
("ldaps://ldap.gnu.org" . ldap)))
(customize-set-variable 'ldap-host-parameters-alist
'(("ldaps://directory.example.com"
'(("ldaps://ldap.gnu.org"
auth-source t)))
@end lisp
For this example where we only care about one server, the server name
can be omitted in @file{~/.authinfo.gpg} and @file{.emacs}, in which
case @file{ldapsearch} defaults to the host name in
case @command{ldapsearch} defaults to the host name in
@file{/etc/openldap/ldap.conf}.
The @file{~/.authinfo.gpg} line becomes:
@example
binddn example\emacsuser password s3cr3t
binddn gnu\emacsuser password s3cr3t
@end example
@noindent
and the @file{.emacs} expressions become:
@vindex message-mode-map
@findex eudc-expand-inline
@vindex eudc-server-hotlist
@vindex ldap-host-parameters-alist
@lisp
(eval-after-load "message"
'(define-key message-mode-map (kbd "TAB") 'eudc-expand-inline))
(customize-set-variable 'eudc-server-hotlist '(("" . bbdb) ("" . ldap)))
(customize-set-variable 'ldap-host-parameters-alist '(("" auth-source t)))
(customize-set-variable 'eudc-server-hotlist
'(("" . bbdb) ("" . ldap)))
(customize-set-variable 'ldap-host-parameters-alist
'(("" auth-source t)))
@end lisp
@node Troubleshooting
@subsection Troubleshooting
If @command{ldapsearch} exits with an error, you'll see a message like
this in the @code{*Messages*} buffer (all on one line):
@example
ldap-search-internal: Failed ldapsearch invocation:
ldapsearch "-Hldaps://ldap.gnu.org" "-bou=people,dc=gnu,dc=org"
"-Dgnu\emacsuser" "-W" "-LL" "-tt" "(&(mail=name*))"
"givenname" "sn" "mail"
@end example
The @command{ldapsearch} command is formatted such that it can be
copied and pasted into a terminal. Set the @command{ldapsearch} debug
level to 5 by appending @code{-d 5} to the command line.
@node Usage
@chapter Usage
@ -397,7 +467,7 @@ may be specified by appending a colon and a number to the name of the
server. You will not need this unless your server runs on a port other
than the default (which depends on the protocol).
If the directory server resides on your own computer (which is the case
if you use the BBDB back end) then `localhost' is a reasonable value but
if you use the BBDB back end) then @samp{localhost} is a reasonable value but
it will be ignored anyway.
@end defvar
@ -810,11 +880,11 @@ trying to perform an inline query. Possible values are:
Only the current directory server is tried
@item hotlist
The servers in the hotlist are tried in order until one finds a match
for the query or `eudc-max-servers-to-query' is reached
for the query or @code{eudc-max-servers-to-query} is reached
@item server-then-hotlist
The current server then the servers in the hotlist are tried in the
order they appear in the hotlist until one of them finds a match or
`eudc-max-servers-to-query' is reached. This is the default.
@code{eudc-max-servers-to-query} is reached. This is the default.
@end table
@end defvar
@ -1043,14 +1113,9 @@ in testing and proofreading the code and docs of @file{ph.el}.
@appendix GNU Free Documentation License
@include doclicense.texi
@node Command and Function Index
@unnumbered Command and Function Index
@node Index
@unnumbered Index
@printindex fn
@node Variables Index
@unnumbered Variables Index
@printindex vr
@printindex cp
@bye

View file

@ -854,7 +854,7 @@ number of records actually present in the data file.
@item Problem saving buffers?
An error occurred while saving the data file buffer. Most likely, Emacs
did ask to confirm deleting the buffer because it had been modified, and
you said `no'.
you said ``no''.
@end table
@node Long Example

View file

@ -1112,7 +1112,7 @@ resulting in:
:O \-> ... | 115 |Raymond Scholz | 1:24
:O \-> ... | 19 |Lars Magne Ingebrigt |15:33
:O Slow mailing list | 13 |Lars Magne Ingebrigt |Sat 23:49
:O Re: `@@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50
:O Re: '@@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50
:R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57
:O \-> ... | 18 |Kai Grossjohann | 0:35
:O \-> ... | 13 |Lars Magne Ingebrigt | 0:56
@ -1501,7 +1501,7 @@ entries. Say @samp{c} to create a new
entry, @samp{b} to search your BBDB and
@samp{C-o} to add a new field to an
entry. If you want to add a sender to the BBDB you can
also just hit `:' on the posting in the summary buffer and
also just hit @kbd{:} on the posting in the summary buffer and
you are done. When you now compose a new mail,
hit @samp{TAB} to cycle through know
recipients.

View file

@ -85,7 +85,7 @@ paragraph-separate: \"[ ]*$\"\nend:\n")
(infile (concat dir infile))
(buffer (find-file-noselect (concat dir outfile))))
(with-temp-buffer
;; Could be done using `texinfmt' stuff as in `infohack.el'.
;; Could be done using 'texinfmt' stuff as in 'infohack.el'.
(insert
(shell-command-to-string
(concat gnus-news-makeinfo-command " "
@ -102,7 +102,7 @@ paragraph-separate: \"[ ]*$\"\nend:\n")
(save-excursion
(while (re-search-forward "^ " nil t)
(replace-match "")))
;; Avoid `*' from @ref at beginning of line:
;; Avoid '*' from @ref at beginning of line:
(save-excursion
(while (re-search-forward "^\\*Note" nil t)
(replace-match " \\&")))

Some files were not shown because too many files have changed in this diff Show more