merge from trunk
Conflicts: src/Makefile.in
This commit is contained in:
commit
c39e73975f
439 changed files with 15481 additions and 6729 deletions
82
ChangeLog
82
ChangeLog
|
@ -1,3 +1,67 @@
|
|||
2013-08-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* configure.ac: Test for zlib.
|
||||
|
||||
2013-08-10 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* configure.ac: Define and substitute UPDATE_MANIFEST.
|
||||
|
||||
2013-08-04 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
* info/dir: Add todo-mode.
|
||||
|
||||
2013-08-04 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Fix some minor races in hosts lacking mkostemp (Bug#15015).
|
||||
Gnulib's emulation of mkostemp doesn't have races that Emacs's does.
|
||||
* configure.ac (mkostemp): Remove check for this function;
|
||||
gnulib does the check now.
|
||||
(mkstemp): Remove check for this no-longer-used function.
|
||||
* lib/mkostemp.c, lib/secure_getenv.c, lib/tempname.c, lib/tempname.h:
|
||||
* m4/mkostemp.m4, m4/secure_getenv.m4, m4/tempname.m4:
|
||||
New files, copied from Gnulib.
|
||||
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
|
||||
|
||||
2013-07-29 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* INSTALL (DETAILED BUILDING AND INSTALLATION): Add
|
||||
--without-file-notification to --without-all.
|
||||
|
||||
2013-07-29 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* INSTALL: Fix description.
|
||||
|
||||
2013-07-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.ac: Extend the --with-sound option to allow
|
||||
specification of OSS or ALSA (see bug#14812#64).
|
||||
|
||||
2013-07-25 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* info/dir: Add ido.
|
||||
|
||||
* make-dist: Add a --tests option, to include test/.
|
||||
|
||||
2013-07-24 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.ac: Use self-descriptive tags for AC_CONFIG_COMMANDS.
|
||||
|
||||
2013-07-23 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.ac (etc, lisp): No need to create specially.
|
||||
Configure already creates lisp, src/Makefile now creates etc.
|
||||
|
||||
2013-07-23 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Port to GNU/Linux systems with tinfo but not ncurses.
|
||||
* configure.ac (USE_NCURSES): New symbol.
|
||||
|
||||
2013-07-20 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Fix array bounds violation when pty allocation fails.
|
||||
* configure.ac (PTY_TTY_NAME_SPRINTF): Use PTY_NAME_SIZE,
|
||||
not sizeof pty_name, since pty_name is now a pointer to the array.
|
||||
|
||||
2013-07-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* configure.ac: Simplify --with-file-notification handling.
|
||||
|
@ -35,7 +99,7 @@
|
|||
* lib/ignore-value.h: Remove this gnulib-imported file.
|
||||
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
|
||||
|
||||
2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
|
||||
2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
|
||||
|
||||
* configure.ac (HAVE_IMAGEMAGICK): Check on NS also (Bug#14798).
|
||||
|
||||
|
@ -2001,7 +2065,7 @@
|
|||
* Makefile.in (install-arch-indep, install-doc, install-info)
|
||||
(uninstall): Scrap superfluous subshells.
|
||||
|
||||
2012-05-19 Ulrich Mueller <ulm@gentoo.org>
|
||||
2012-05-19 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
* Makefile.in (install-etc): Respect DESTDIR. (Bug#11518)
|
||||
|
||||
|
@ -3777,7 +3841,7 @@
|
|||
* Makefile.in (install-arch-indep, info):
|
||||
Replace MAKEINFO = off with HAVE_MAKEINFO = no.
|
||||
|
||||
2010-12-29 Ulrich Mueller <ulm@gentoo.org>
|
||||
2010-12-29 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
* configure.in: Make gameuser configurable (Bug#7717).
|
||||
|
||||
|
@ -4987,7 +5051,7 @@
|
|||
|
||||
* info/dir: Untabify.
|
||||
|
||||
2008-11-28 Ulrich Mueller <ulm@gentoo.org>
|
||||
2008-11-28 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
* configure.in: Fix last change.
|
||||
|
||||
|
@ -5050,7 +5114,7 @@
|
|||
* configure (*-sunos5*, *-solaris*): Use the new file sol2-10.h.
|
||||
Use sol2-6.h for Solaris 7-9.
|
||||
|
||||
2008-10-18 Ulrich Mueller <ulm@gentoo.org>
|
||||
2008-10-18 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
* configure.in: Add support for GNU/Linux on SuperH.
|
||||
|
||||
|
@ -5134,7 +5198,7 @@
|
|||
|
||||
* configure.in (COCOA_EXPERIMENTAL_CTRL_G): Fix 2008-08-04 change.
|
||||
|
||||
2008-08-05 Ulrich Mueller <ulm@gentoo.org>
|
||||
2008-08-05 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
* configure.in: Add checks for krb5_error.text and
|
||||
krb5_error.e_text struct members.
|
||||
|
@ -5502,7 +5566,7 @@
|
|||
* configure.in (--with-gcc): Remove.
|
||||
* INSTALL (DETAILED BUILDING AND INSTALLATION): Remove --with-gcc.
|
||||
|
||||
2008-02-05 Ulrich Mueller <ulm@gentoo.org>
|
||||
2008-02-05 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
* INSTALL: Recommend giflib, not libungif.
|
||||
|
||||
|
@ -5524,7 +5588,7 @@
|
|||
* configure.in: For libotf and m17n-flt checks, set shell vars
|
||||
HAVE_LIBOTF and HAVE_M17N_FLT instead of pkg_check_libotf and
|
||||
pkg_check_m17n_flt, respectively, for the sake of the summary output.
|
||||
Reported by Ulrich Mueller.
|
||||
Reported by Ulrich Müller.
|
||||
|
||||
2008-02-02 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
@ -5838,7 +5902,7 @@
|
|||
|
||||
* configure.in: Put quotes around nested macro calls.
|
||||
|
||||
2007-08-31 Ulrich Mueller <ulm@gentoo.org> (tiny change)
|
||||
2007-08-31 Ulrich Müller <ulm@gentoo.org> (tiny change)
|
||||
|
||||
* configure.in: Fix typo.
|
||||
* configure: Regenerate.
|
||||
|
|
34
INSTALL
34
INSTALL
|
@ -70,24 +70,17 @@ sections if you need to.
|
|||
you, but there are no obvious errors, assume that `configure' did
|
||||
its job and proceed.
|
||||
|
||||
4. If you need to run the `configure' script more than once (e.g.,
|
||||
with some non-default options), always clean the source
|
||||
directories before running `configure' again:
|
||||
|
||||
make distclean
|
||||
./configure
|
||||
|
||||
5. Invoke the `make' program:
|
||||
4. Invoke the `make' program:
|
||||
|
||||
make
|
||||
|
||||
6. If `make' succeeds, it will build an executable program `emacs'
|
||||
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
|
||||
|
||||
7. 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,6 +94,10 @@ sections if you need to.
|
|||
|
||||
You can delete the entire build directory if you do not plan to
|
||||
build Emacs again, but it can be useful to keep for debugging.
|
||||
If you want to build Emacs again with different configure options,
|
||||
first clean the source directories:
|
||||
|
||||
make distclean
|
||||
|
||||
Note that the install automatically saves space by compressing
|
||||
(provided you have the `gzip' program) those installed Lisp source (.el)
|
||||
|
@ -326,14 +323,15 @@ equivalent to --without-sound --without-dbus --without-libotf
|
|||
--without-selinux --without-xft --without-gsettings --without-gnutls
|
||||
--without-rsvg --without-xml2 --without-gconf --without-imagemagick
|
||||
--without-m17n-flt --without-jpeg --without-tiff --without-gif
|
||||
--without-png --without-gpm. Note that --without-all leaves X support
|
||||
enabled, and using the GTK2 or GTK3 toolkit creates a lot of library
|
||||
dependencies. So if you want to build a small executable with very basic
|
||||
X support, use --without-all --with-x-toolkit=no. For the smallest possible
|
||||
executable without X, use --without-all --without-x. If you want to build
|
||||
with just a few features enabled, you can combine --without-all with
|
||||
--with-FEATURE. For example, you can use --without-all --with-dbus
|
||||
to build with DBus support and nothing more.
|
||||
--without-png --without-gpm --without-file-notification. Note that
|
||||
--without-all leaves X support enabled, and using the GTK2 or GTK3
|
||||
toolkit creates a lot of library dependencies. So if you want to
|
||||
build a small executable with very basic X support, use --without-all
|
||||
--with-x-toolkit=no. For the smallest possible executable without X,
|
||||
use --without-all --without-x. If you want to build with just a few
|
||||
features enabled, you can combine --without-all with --with-FEATURE.
|
||||
For example, you can use --without-all --with-dbus to build with DBus
|
||||
support and nothing more.
|
||||
|
||||
Use --with-wide-int to implement Emacs values with the type 'long long',
|
||||
even on hosts where a narrower type would do. With this option, on a
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
# DIST: This is the distribution Makefile for Emacs. configure can
|
||||
# DIST: make most of the changes to this file you might want, so try
|
||||
# DIST: that first.
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2013-08-10 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* notes/hydra: New file.
|
||||
|
||||
2013-08-04 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Fix some minor races in hosts lacking mkostemp (Bug#15015).
|
||||
* merge-gnulib (GNULIB_MODULES): Add mkostemp.
|
||||
|
||||
2013-07-12 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* admin.el (manual-style-string): Use non-abbreviated url.
|
||||
|
|
|
@ -144,6 +144,8 @@ General steps (for each step, check for possible errors):
|
|||
Download them and check the signatures. Check they build.
|
||||
|
||||
12. For a pretest, announce it on emacs-devel and info-gnu-emacs@gnu.org.
|
||||
Probably should also include the platform-testers list:
|
||||
https://lists.gnu.org/mailman/listinfo/platform-testers
|
||||
For a release, also announce it on info-gnu@gnu.org. (Probably
|
||||
bcc the info- addresses to make it less likely that people will
|
||||
followup on those lists.)
|
||||
|
|
|
@ -32,7 +32,7 @@ GNULIB_MODULES='
|
|||
fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync
|
||||
getloadavg getopt-gnu gettime gettimeofday
|
||||
intprops largefile lstat
|
||||
manywarnings memrchr mktime
|
||||
manywarnings memrchr mkostemp mktime
|
||||
pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat
|
||||
sig2str socklen stat-time stdalign stdarg stdbool stdio
|
||||
strftime strtoimax strtoumax symlink sys_stat
|
||||
|
|
57
admin/notes/hydra
Normal file
57
admin/notes/hydra
Normal file
|
@ -0,0 +1,57 @@
|
|||
-*- outline -*-
|
||||
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA
|
||||
|
||||
A continuous build for Emacs trunk can be found at
|
||||
http://hydra.nixos.org/jobset/gnu/emacs-trunk
|
||||
|
||||
* It builds (and runs ERT tests) on these platforms:
|
||||
i686-cygwin
|
||||
i686-freebsd
|
||||
i686-linux
|
||||
x86_64-darwin
|
||||
x86_64-linux
|
||||
|
||||
* Mail notifications
|
||||
Hydra sends notifications about build breakages in Emacs trunk to
|
||||
emacs-buildstatus@gnu.org.
|
||||
|
||||
If you want to receive these notifications, please subscribe at
|
||||
http://lists.gnu.org/mailman/listinfo/emacs-buildstatus
|
||||
|
||||
* The Emacs jobset consists of the following jobs:
|
||||
|
||||
** The `tarball' job
|
||||
which gets the source tree as input, and is just a `make dist' after
|
||||
some autoconf/-make or bootstrap script.
|
||||
|
||||
** The `build' job
|
||||
which gets the result of the tarball job as input, together with
|
||||
system identifier, this job basically does a normal make, make check,
|
||||
make install.
|
||||
|
||||
** The 'coverage' job
|
||||
is now running `make check'.
|
||||
|
||||
* Other GNU packages
|
||||
For a list of other GNU packages that have a continuous build on
|
||||
Hydra, see http://hydra.nixos.org/project/gnu
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
|
@ -1,4 +1,4 @@
|
|||
# Makefile -- Makefile to generate character property tables.
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream 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 intprops largefile lstat manywarnings memrchr mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream 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 intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
|
@ -202,14 +202,14 @@ DIST_COMMON = $(srcdir)/../nt/gnulib.mk $(srcdir)/Makefile.am \
|
|||
@BUILDING_FOR_WINDOWSNT_FALSE@ getopt_int.h gettimeofday.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ group-member.c intprops.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ inttypes.in.h lstat.c memrchr.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ mktime-internal.h mktime.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ openat.h pathmax.h pselect.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ pthread_sigmask.c putenv.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ acl-internal.h acl.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ mkostemp.c mktime-internal.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ mktime.c openat.h pathmax.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ pselect.c pthread_sigmask.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ putenv.c acl-internal.h acl.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ acl_entries.c readlink.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ at-func.c readlinkat.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ root-uid.h sig2str.c sig2str.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ signal.in.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ root-uid.h secure_getenv.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ sig2str.c sig2str.h signal.in.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ $(top_srcdir)/build-aux/snippet/_Noreturn.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ $(top_srcdir)/build-aux/snippet/c++defs.h \
|
||||
|
@ -224,12 +224,13 @@ DIST_COMMON = $(srcdir)/../nt/gnulib.mk $(srcdir)/Makefile.am \
|
|||
@BUILDING_FOR_WINDOWSNT_FALSE@ strtoimax.c strtoumax.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ symlink.c sys_select.in.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ sys_stat.in.h sys_time.in.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ time.in.h time_r.c timespec.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ u64.h unistd.in.h unsetenv.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ utimens.h verify.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ tempname.h time.in.h time_r.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec.h u64.h unistd.in.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ unsetenv.c utimens.h verify.h \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ xalloc-oversized.h
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@@gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36_TRUE@am__append_10 = gettext.h
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@am__append_11 = sys sys
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@@gl_GNULIB_ENABLED_tempname_TRUE@am__append_12 = tempname.c
|
||||
subdir = lib
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
|
||||
|
@ -255,33 +256,35 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
|
|||
$(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
$(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/manywarnings.m4 \
|
||||
$(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memrchr.m4 \
|
||||
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/multiarch.m4 \
|
||||
$(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/off_t.m4 \
|
||||
$(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe2.m4 \
|
||||
$(top_srcdir)/m4/pselect.m4 \
|
||||
$(top_srcdir)/m4/mkostemp.m4 $(top_srcdir)/m4/mktime.m4 \
|
||||
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nocrash.m4 \
|
||||
$(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/pathmax.m4 \
|
||||
$(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/pselect.m4 \
|
||||
$(top_srcdir)/m4/pthread_sigmask.m4 $(top_srcdir)/m4/putenv.m4 \
|
||||
$(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/readlinkat.m4 \
|
||||
$(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/sha1.m4 \
|
||||
$(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
|
||||
$(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/signal_h.m4 \
|
||||
$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/ssize_t.m4 \
|
||||
$(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/stat-time.m4 \
|
||||
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdalign.m4 \
|
||||
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
|
||||
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
|
||||
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
|
||||
$(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \
|
||||
$(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtoll.m4 \
|
||||
$(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
|
||||
$(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/sys_select_h.m4 \
|
||||
$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/setenv.m4 \
|
||||
$(top_srcdir)/m4/sha1.m4 $(top_srcdir)/m4/sha256.m4 \
|
||||
$(top_srcdir)/m4/sha512.m4 $(top_srcdir)/m4/sig2str.m4 \
|
||||
$(top_srcdir)/m4/signal_h.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
|
||||
$(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
|
||||
$(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stdarg.m4 \
|
||||
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
|
||||
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
|
||||
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strftime.m4 \
|
||||
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strtoimax.m4 \
|
||||
$(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoull.m4 \
|
||||
$(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/symlink.m4 \
|
||||
$(top_srcdir)/m4/sys_select_h.m4 \
|
||||
$(top_srcdir)/m4/sys_socket_h.m4 \
|
||||
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
|
||||
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
|
||||
$(top_srcdir)/m4/timer_time.m4 $(top_srcdir)/m4/timespec.m4 \
|
||||
$(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd_h.m4 \
|
||||
$(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
|
||||
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/warnings.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/configure.ac
|
||||
$(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
|
||||
$(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timer_time.m4 \
|
||||
$(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
|
||||
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utimbuf.m4 \
|
||||
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
|
||||
$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_t.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
|
@ -296,10 +299,11 @@ am__libgnu_a_SOURCES_DIST = allocator.c binary-io.h binary-io.c \
|
|||
careadlinkat.c close-stream.c md5.c sha1.c sha256.c sha512.c \
|
||||
dtoastr.c dtotimespec.c filemode.c gettext.h gettime.c pipe2.c \
|
||||
acl-errno-valid.c file-has-acl.c qcopy-acl.c qset-acl.c \
|
||||
stat-time.c strftime.c timespec.c timespec-add.c \
|
||||
stat-time.c strftime.c tempname.c timespec.c timespec-add.c \
|
||||
timespec-sub.c u64.c unistd.c utimens.c openat-die.c \
|
||||
save-cwd.c
|
||||
am__objects_1 =
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@@gl_GNULIB_ENABLED_tempname_TRUE@am__objects_2 = tempname.$(OBJEXT)
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@am_libgnu_a_OBJECTS = \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ allocator.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ binary-io.$(OBJEXT) \
|
||||
|
@ -323,6 +327,7 @@ am__objects_1 =
|
|||
@BUILDING_FOR_WINDOWSNT_FALSE@ qset-acl.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ stat-time.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ strftime.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ $(am__objects_2) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec-add.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec-sub.$(OBJEXT) \
|
||||
|
@ -350,15 +355,16 @@ am__objects_1 =
|
|||
@BUILDING_FOR_WINDOWSNT_TRUE@ timespec-add.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ timespec-sub.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ u64.$(OBJEXT) utimens.$(OBJEXT) \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ $(am__objects_1)
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ $(am__objects_1) $(am__objects_2)
|
||||
am__EXTRA_libgnu_a_SOURCES_DIST = openat-proc.c ftoastr.c dup2.c \
|
||||
euidaccess.c execinfo.c at-func.c faccessat.c fcntl.c \
|
||||
fdatasync.c fdopendir.c fpending.c fstatat.c fsync.c \
|
||||
getdtablesize.c getgroups.c getloadavg.c getopt.c getopt1.c \
|
||||
gettimeofday.c group-member.c lstat.c memrchr.c mktime.c \
|
||||
pselect.c pthread_sigmask.c putenv.c acl_entries.c readlink.c \
|
||||
readlinkat.c sig2str.c stat.c strtoimax.c strtol.c strtoll.c \
|
||||
strtoul.c strtoull.c strtoumax.c symlink.c time_r.c unsetenv.c
|
||||
gettimeofday.c group-member.c lstat.c memrchr.c mkostemp.c \
|
||||
mktime.c pselect.c pthread_sigmask.c putenv.c acl_entries.c \
|
||||
readlink.c readlinkat.c secure_getenv.c sig2str.c stat.c \
|
||||
strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
|
||||
strtoumax.c symlink.c time_r.c unsetenv.c
|
||||
libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
|
||||
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
|
@ -1123,6 +1129,7 @@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
|
|||
UNEXEC_OBJ = @UNEXEC_OBJ@
|
||||
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
|
||||
UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
|
||||
UPDATE_MANIFEST = @UPDATE_MANIFEST@
|
||||
USE_ACL = @USE_ACL@
|
||||
VERSION = @VERSION@
|
||||
VMLIMIT_OBJ = @VMLIMIT_OBJ@
|
||||
|
@ -1248,10 +1255,10 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
|
|||
@BUILDING_FOR_WINDOWSNT_FALSE@ acl-errno-valid.c file-has-acl.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ qcopy-acl.c qset-acl.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ stat-time.c strftime.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec.c timespec-add.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec-sub.c u64.c unistd.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ utimens.c openat-die.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ save-cwd.c
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ $(am__append_12) timespec.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ timespec-add.c timespec-sub.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ u64.c unistd.c utimens.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ openat-die.c save-cwd.c
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@libgnu_a_SOURCES = c-ctype.h c-ctype.c \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ c-strcase.h c-strcasecmp.c \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ c-strncasecmp.c close-stream.c \
|
||||
|
@ -1262,7 +1269,8 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
|
|||
@BUILDING_FOR_WINDOWSNT_TRUE@ file-has-acl.c qcopy-acl.c \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ stat-time.c strftime.c timespec.c \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ timespec-add.c timespec-sub.c \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ u64.c utimens.c $(am__append_10)
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ u64.c utimens.c $(am__append_10) \
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@ $(am__append_12)
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@libgnu_a_LIBADD = $(gl_LIBOBJS)
|
||||
@BUILDING_FOR_WINDOWSNT_TRUE@libgnu_a_LIBADD = $(gl_LIBOBJS)
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
|
||||
|
@ -1276,11 +1284,12 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
|
|||
@BUILDING_FOR_WINDOWSNT_FALSE@ getgroups.c getloadavg.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ getopt.c getopt1.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ gettimeofday.c group-member.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ lstat.c memrchr.c mktime.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ pselect.c pthread_sigmask.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ putenv.c acl_entries.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ readlink.c at-func.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ readlinkat.c sig2str.c stat.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ lstat.c memrchr.c mkostemp.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ mktime.c pselect.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ pthread_sigmask.c putenv.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ acl_entries.c readlink.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ at-func.c readlinkat.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ secure_getenv.c sig2str.c stat.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ strtoimax.c strtol.c strtoll.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ strtol.c strtoul.c strtoull.c \
|
||||
@BUILDING_FOR_WINDOWSNT_FALSE@ strtoimax.c strtoumax.c \
|
||||
|
@ -1402,6 +1411,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memrchr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkostemp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-die.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-proc.Po@am__quote@
|
||||
|
@ -1414,6 +1424,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secure_getenv.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512.Po@am__quote@
|
||||
|
@ -1428,6 +1439,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoull.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoumax.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tempname.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-add.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-sub.Po@am__quote@
|
||||
|
|
3
autogen/aclocal.m4
vendored
3
autogen/aclocal.m4
vendored
|
@ -1024,6 +1024,7 @@ m4_include([m4/lstat.m4])
|
|||
m4_include([m4/manywarnings.m4])
|
||||
m4_include([m4/md5.m4])
|
||||
m4_include([m4/memrchr.m4])
|
||||
m4_include([m4/mkostemp.m4])
|
||||
m4_include([m4/mktime.m4])
|
||||
m4_include([m4/multiarch.m4])
|
||||
m4_include([m4/nocrash.m4])
|
||||
|
@ -1035,6 +1036,7 @@ m4_include([m4/pthread_sigmask.m4])
|
|||
m4_include([m4/putenv.m4])
|
||||
m4_include([m4/readlink.m4])
|
||||
m4_include([m4/readlinkat.m4])
|
||||
m4_include([m4/secure_getenv.m4])
|
||||
m4_include([m4/setenv.m4])
|
||||
m4_include([m4/sha1.m4])
|
||||
m4_include([m4/sha256.m4])
|
||||
|
@ -1064,6 +1066,7 @@ m4_include([m4/sys_select_h.m4])
|
|||
m4_include([m4/sys_socket_h.m4])
|
||||
m4_include([m4/sys_stat_h.m4])
|
||||
m4_include([m4/sys_time_h.m4])
|
||||
m4_include([m4/tempname.m4])
|
||||
m4_include([m4/time_h.m4])
|
||||
m4_include([m4/time_r.m4])
|
||||
m4_include([m4/timer_time.m4])
|
||||
|
|
|
@ -192,6 +192,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
whether the gnulib module fscanf shall be considered present. */
|
||||
#undef GNULIB_FSCANF
|
||||
|
||||
/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
|
||||
whether the gnulib module mkostemp shall be considered present. */
|
||||
#undef GNULIB_MKOSTEMP
|
||||
|
||||
/* enable some gnulib portability checks */
|
||||
#undef GNULIB_PORTCHECK
|
||||
|
||||
|
@ -625,6 +629,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `issetugid' function. */
|
||||
#undef HAVE_ISSETUGID
|
||||
|
||||
/* Define to 1 if you have the jpeg library (-ljpeg). */
|
||||
#undef HAVE_JPEG
|
||||
|
||||
|
@ -753,9 +760,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the `mkostemp' function. */
|
||||
#undef HAVE_MKOSTEMP
|
||||
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#undef HAVE_MKSTEMP
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
|
@ -847,6 +851,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if using librsvg. */
|
||||
#undef HAVE_RSVG
|
||||
|
||||
/* Define to 1 if you have the `secure_getenv' function. */
|
||||
#undef HAVE_SECURE_GETENV
|
||||
|
||||
/* Define to 1 if you have the `select' function. */
|
||||
#undef HAVE_SELECT
|
||||
|
||||
|
@ -1201,6 +1208,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the `__fpending' function. */
|
||||
#undef HAVE___FPENDING
|
||||
|
||||
/* Define to 1 if you have the `__secure_getenv' function. */
|
||||
#undef HAVE___SECURE_GETENV
|
||||
|
||||
/* Define to support using a Hesiod database to find the POP server. */
|
||||
#undef HESIOD
|
||||
|
||||
|
@ -1468,6 +1478,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if using the Motif X toolkit. */
|
||||
#undef USE_MOTIF
|
||||
|
||||
/* Define to 1 if you use ncurses. */
|
||||
#undef USE_NCURSES
|
||||
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
|
|
272
autogen/configure
vendored
272
autogen/configure
vendored
|
@ -614,12 +614,16 @@ LIBGNU_LIBDEPS
|
|||
gltests_WITNESS
|
||||
gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_FALSE
|
||||
gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_TRUE
|
||||
gl_GNULIB_ENABLED_tempname_FALSE
|
||||
gl_GNULIB_ENABLED_tempname_TRUE
|
||||
gl_GNULIB_ENABLED_strtoull_FALSE
|
||||
gl_GNULIB_ENABLED_strtoull_TRUE
|
||||
gl_GNULIB_ENABLED_strtoll_FALSE
|
||||
gl_GNULIB_ENABLED_strtoll_TRUE
|
||||
gl_GNULIB_ENABLED_stat_FALSE
|
||||
gl_GNULIB_ENABLED_stat_TRUE
|
||||
gl_GNULIB_ENABLED_secure_getenv_FALSE
|
||||
gl_GNULIB_ENABLED_secure_getenv_TRUE
|
||||
gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_FALSE
|
||||
gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_TRUE
|
||||
gl_GNULIB_ENABLED_pathmax_FALSE
|
||||
|
@ -1364,6 +1368,7 @@ FIRSTFILE_OBJ
|
|||
W32_RES_LINK
|
||||
CLIENTW
|
||||
CLIENTRES
|
||||
UPDATE_MANIFEST
|
||||
EMACS_MANIFEST
|
||||
EMACSRES
|
||||
W32_LIBS
|
||||
|
@ -2233,7 +2238,9 @@ Optional Packages:
|
|||
--with-mail-unlink unlink, rather than empty, mail spool after reading
|
||||
--with-mailhost=HOSTNAME
|
||||
string giving default POP mail host
|
||||
--without-sound don't compile with sound support
|
||||
--with-sound=VALUE compile with sound support (VALUE one of: yes,
|
||||
ossaudio, alsa, no; default yes). Only for
|
||||
GNU/Linux, FreeBSD, NetBSD, MinGW.
|
||||
--with-x-toolkit=KIT use an X toolkit (KIT one of: yes or gtk, gtk2,
|
||||
gtk3, lucid or athena, motif, no)
|
||||
--with-wide-int prefer wide Emacs integers (typically 62-bit)
|
||||
|
@ -3388,6 +3395,7 @@ as_fn_append ac_header_list " wchar.h"
|
|||
as_fn_append ac_header_list " stdint.h"
|
||||
as_fn_append ac_header_list " inttypes.h"
|
||||
as_fn_append ac_func_list " lstat"
|
||||
as_fn_append ac_func_list " mkostemp"
|
||||
as_fn_append ac_func_list " pipe2"
|
||||
as_fn_append ac_header_list " sys/select.h"
|
||||
as_fn_append ac_func_list " pselect"
|
||||
|
@ -3405,6 +3413,7 @@ as_fn_append ac_func_list " futimens"
|
|||
as_fn_append ac_func_list " utimensat"
|
||||
as_fn_append ac_func_list " lutimes"
|
||||
as_fn_append ac_func_list " getdtablesize"
|
||||
as_fn_append ac_func_list " secure_getenv"
|
||||
# Check that the precious variables saved in the cache have kept the same
|
||||
# value.
|
||||
ac_cache_corrupted=false
|
||||
|
@ -4116,9 +4125,16 @@ fi
|
|||
|
||||
# Check whether --with-sound was given.
|
||||
if test "${with_sound+set}" = set; then :
|
||||
withval=$with_sound;
|
||||
withval=$with_sound; case "${withval}" in
|
||||
yes|no|ossaudio|alsa) val=$withval ;;
|
||||
*) as_fn_error "\`--with-sound=$withval' is invalid;
|
||||
this option's value should be \`yes', \`no', \`ossaudio', or \`alsa'." "$LINENO" 5
|
||||
;;
|
||||
esac
|
||||
with_sound=$val
|
||||
|
||||
else
|
||||
with_sound=$with_features
|
||||
with_sound=$with_features
|
||||
fi
|
||||
|
||||
|
||||
|
@ -7277,6 +7293,7 @@ esac
|
|||
# Code from module lstat:
|
||||
# Code from module manywarnings:
|
||||
# Code from module memrchr:
|
||||
# Code from module mkostemp:
|
||||
# Code from module mktime:
|
||||
# Code from module multiarch:
|
||||
# Code from module nocrash:
|
||||
|
@ -7290,6 +7307,7 @@ esac
|
|||
# Code from module readlink:
|
||||
# Code from module readlinkat:
|
||||
# Code from module root-uid:
|
||||
# Code from module secure_getenv:
|
||||
# Code from module sig2str:
|
||||
# Code from module signal-h:
|
||||
# Code from module snippet/_Noreturn:
|
||||
|
@ -7320,6 +7338,7 @@ esac
|
|||
# Code from module sys_select:
|
||||
# Code from module sys_stat:
|
||||
# Code from module sys_time:
|
||||
# Code from module tempname:
|
||||
# Code from module time:
|
||||
# Code from module time_r:
|
||||
# Code from module timer-time:
|
||||
|
@ -8995,6 +9014,7 @@ fi
|
|||
|
||||
|
||||
|
||||
HAVE_SOUND=no
|
||||
if test "${with_sound}" != "no"; then
|
||||
# Sound support for GNU/Linux, the free BSDs, and MinGW.
|
||||
for ac_header in machine/soundcard.h sys/soundcard.h soundcard.h
|
||||
|
@ -9017,8 +9037,9 @@ fi
|
|||
|
||||
done
|
||||
|
||||
# Emulation library used on NetBSD.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5
|
||||
if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then
|
||||
# Emulation library used on NetBSD.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5
|
||||
$as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; }
|
||||
if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
|
@ -9060,10 +9081,14 @@ else
|
|||
LIBSOUND=
|
||||
fi
|
||||
|
||||
test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \
|
||||
as_fn_error "ossaudio sound support requested but not found." "$LINENO" 5
|
||||
fi
|
||||
|
||||
|
||||
ALSA_REQUIRED=1.0.0
|
||||
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
|
||||
if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
|
||||
ALSA_REQUIRED=1.0.0
|
||||
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
|
||||
|
||||
succeeded=no
|
||||
|
||||
|
@ -9115,12 +9140,12 @@ $as_echo "no" >&6; }
|
|||
HAVE_ALSA=no
|
||||
fi
|
||||
|
||||
if test $HAVE_ALSA = yes; then
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
SAVE_LIBS="$LIBS"
|
||||
CFLAGS="$ALSA_CFLAGS $CFLAGS"
|
||||
LIBS="$ALSA_LIBS $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
if test $HAVE_ALSA = yes; then
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
SAVE_LIBS="$LIBS"
|
||||
CFLAGS="$ALSA_CFLAGS $CFLAGS"
|
||||
LIBS="$ALSA_LIBS $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <asoundlib.h>
|
||||
int
|
||||
|
@ -9137,8 +9162,8 @@ else
|
|||
emacs_alsa_normal=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
if test "$emacs_alsa_normal" != yes; then
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
if test "$emacs_alsa_normal" != yes; then
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <alsa/asoundlib.h>
|
||||
int
|
||||
|
@ -9155,27 +9180,30 @@ else
|
|||
emacs_alsa_subdir=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
if test "$emacs_alsa_subdir" != yes; then
|
||||
as_fn_error "pkg-config found alsa, but it does not compile. See config.log for error messages." "$LINENO" 5
|
||||
if test "$emacs_alsa_subdir" != yes; then
|
||||
as_fn_error "pkg-config found alsa, but it does not compile. See config.log for error messages." "$LINENO" 5
|
||||
fi
|
||||
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
|
||||
fi
|
||||
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
|
||||
fi
|
||||
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
LIBS="$SAVE_LIBS"
|
||||
LIBSOUND="$LIBSOUND $ALSA_LIBS"
|
||||
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
LIBS="$SAVE_LIBS"
|
||||
LIBSOUND="$LIBSOUND $ALSA_LIBS"
|
||||
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
|
||||
|
||||
$as_echo "#define HAVE_ALSA 1" >>confdefs.h
|
||||
|
||||
elif test "${with_sound}" = "alsa"; then
|
||||
as_fn_error "ALSA sound support requested but not found." "$LINENO" 5
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
|
||||
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
|
||||
case "$opsys" in
|
||||
gnu-linux|freebsd|netbsd|mingw32)
|
||||
gnu-linux|freebsd|netbsd|mingw32)
|
||||
|
||||
$as_echo "#define HAVE_SOUND 1" >>confdefs.h
|
||||
|
||||
HAVE_SOUND=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
@ -10053,6 +10081,7 @@ CLIENTRES=
|
|||
CLIENTW=
|
||||
W32_RES_LINK=
|
||||
EMACS_MANIFEST=
|
||||
UPDATE_MANIFEST=
|
||||
if test "${with_w32}" != no; then
|
||||
case "${opsys}" in
|
||||
cygwin)
|
||||
|
@ -10216,6 +10245,7 @@ fi
|
|||
x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
|
||||
*) EMACS_MANIFEST="emacs-x86.manifest" ;;
|
||||
esac
|
||||
UPDATE_MANIFEST=update-game-score.exe.manifest
|
||||
if test "${opsys}" = "cygwin"; then
|
||||
W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
|
||||
W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
|
||||
|
@ -10253,6 +10283,7 @@ fi
|
|||
|
||||
|
||||
|
||||
|
||||
if test "${HAVE_W32}" = "yes"; then
|
||||
window_system=w32
|
||||
with_xft=no
|
||||
|
@ -14674,7 +14705,7 @@ select getpagesize setlocale \
|
|||
getrlimit setrlimit shutdown getaddrinfo \
|
||||
strsignal setitimer \
|
||||
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
|
||||
gai_strerror mkostemp mkstemp getline getdelim sync \
|
||||
gai_strerror getline getdelim sync \
|
||||
difftime posix_memalign \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
touchlock \
|
||||
|
@ -15022,6 +15053,11 @@ $as_echo "#define TERMINFO 1" >>confdefs.h
|
|||
|
||||
TERMCAP_OBJ=terminfo.o
|
||||
fi
|
||||
if test "X$LIBS_TERMCAP" = "X-lncurses"; then
|
||||
|
||||
$as_echo "#define USE_NCURSES 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
@ -16442,7 +16478,7 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h
|
|||
|
||||
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++)" >>confdefs.h
|
||||
|
||||
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
|
||||
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, \"%s\", ptyname); }" >>confdefs.h
|
||||
|
||||
if test "x$ac_cv_func_posix_openpt" = xyes; then
|
||||
$as_echo "#define PTY_OPEN fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY)" >>confdefs.h
|
||||
|
@ -16487,12 +16523,12 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h
|
|||
;;
|
||||
|
||||
sol2* )
|
||||
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
|
||||
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, \"%s\", ptyname); }" >>confdefs.h
|
||||
|
||||
;;
|
||||
|
||||
unixware )
|
||||
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal(\"could not grant slave pty\"); if (unlockpt(fd) == -1) fatal(\"could not unlock slave pty\"); if (!(ptyname = ptsname(fd))) fatal (\"could not enable slave pty\"); snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
|
||||
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal(\"could not grant slave pty\"); if (unlockpt(fd) == -1) fatal(\"could not unlock slave pty\"); if (!(ptyname = ptsname(fd))) fatal (\"could not enable slave pty\"); snprintf (pty_name, PTY_NAME_SIZE, \"%s\", ptyname); }" >>confdefs.h
|
||||
|
||||
;;
|
||||
esac
|
||||
|
@ -20680,6 +20716,8 @@ cat >>confdefs.h <<_ACEOF
|
|||
_ACEOF
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_MKTIME=0;
|
||||
GNULIB_NANOSLEEP=0;
|
||||
GNULIB_STRPTIME=0;
|
||||
|
@ -21909,6 +21947,8 @@ _ACEOF
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
if false; then
|
||||
GL_COND_LIBTOOL_TRUE=
|
||||
GL_COND_LIBTOOL_FALSE='#'
|
||||
|
@ -24067,6 +24107,48 @@ done
|
|||
|
||||
|
||||
|
||||
if test $ac_cv_func_mkostemp != yes; then
|
||||
HAVE_MKOSTEMP=0
|
||||
fi
|
||||
|
||||
if test $HAVE_MKOSTEMP = 0; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_LIBOBJS="$gl_LIBOBJS mkostemp.$ac_objext"
|
||||
|
||||
|
||||
|
||||
fi
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define GNULIB_MKOSTEMP 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_MKOSTEMP=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if test $APPLE_UNIVERSAL_BUILD = 1; then
|
||||
# A universal build on Apple Mac OS X platforms.
|
||||
# The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode.
|
||||
|
@ -27470,9 +27552,11 @@ $as_echo "#define FUTIMESAT_NULL_BUG 1" >>confdefs.h
|
|||
gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7=false
|
||||
gl_gnulib_enabled_pathmax=false
|
||||
gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
|
||||
gl_gnulib_enabled_secure_getenv=false
|
||||
gl_gnulib_enabled_stat=false
|
||||
gl_gnulib_enabled_strtoll=false
|
||||
gl_gnulib_enabled_strtoull=false
|
||||
gl_gnulib_enabled_tempname=false
|
||||
gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
|
||||
func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b ()
|
||||
{
|
||||
|
@ -28073,6 +28157,70 @@ fi
|
|||
gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_secure_getenv ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_secure_getenv; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if test $ac_cv_func_secure_getenv = no; then
|
||||
HAVE_SECURE_GETENV=0
|
||||
fi
|
||||
|
||||
if test $HAVE_SECURE_GETENV = 0; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_LIBOBJS="$gl_LIBOBJS secure_getenv.$ac_objext"
|
||||
|
||||
|
||||
for ac_func in __secure_getenv
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "__secure_getenv" "ac_cv_func___secure_getenv"
|
||||
if test "x$ac_cv_func___secure_getenv" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE___SECURE_GETENV 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
if test $ac_cv_func___secure_getenv = no; then
|
||||
for ac_func in issetugid
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "issetugid" "ac_cv_func_issetugid"
|
||||
if test "x$ac_cv_func_issetugid" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_ISSETUGID 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_SECURE_GETENV=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_gnulib_enabled_secure_getenv=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_stat ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_stat; then
|
||||
|
@ -28317,6 +28465,18 @@ done
|
|||
gl_gnulib_enabled_strtoull=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_tempname ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_tempname; then
|
||||
|
||||
|
||||
:
|
||||
|
||||
|
||||
gl_gnulib_enabled_tempname=true
|
||||
func_gl_gnulib_m4code_secure_getenv
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then
|
||||
|
@ -28359,6 +28519,9 @@ done
|
|||
if test $REPLACE_LSTAT = 1; then
|
||||
func_gl_gnulib_m4code_stat
|
||||
fi
|
||||
if test $HAVE_MKOSTEMP = 0; then
|
||||
func_gl_gnulib_m4code_tempname
|
||||
fi
|
||||
if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
|
||||
func_gl_gnulib_m4code_stat
|
||||
fi
|
||||
|
@ -28458,6 +28621,14 @@ else
|
|||
gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_FALSE=
|
||||
fi
|
||||
|
||||
if $gl_gnulib_enabled_secure_getenv; then
|
||||
gl_GNULIB_ENABLED_secure_getenv_TRUE=
|
||||
gl_GNULIB_ENABLED_secure_getenv_FALSE='#'
|
||||
else
|
||||
gl_GNULIB_ENABLED_secure_getenv_TRUE='#'
|
||||
gl_GNULIB_ENABLED_secure_getenv_FALSE=
|
||||
fi
|
||||
|
||||
if $gl_gnulib_enabled_stat; then
|
||||
gl_GNULIB_ENABLED_stat_TRUE=
|
||||
gl_GNULIB_ENABLED_stat_FALSE='#'
|
||||
|
@ -28482,6 +28653,14 @@ else
|
|||
gl_GNULIB_ENABLED_strtoull_FALSE=
|
||||
fi
|
||||
|
||||
if $gl_gnulib_enabled_tempname; then
|
||||
gl_GNULIB_ENABLED_tempname_TRUE=
|
||||
gl_GNULIB_ENABLED_tempname_FALSE='#'
|
||||
else
|
||||
gl_GNULIB_ENABLED_tempname_TRUE='#'
|
||||
gl_GNULIB_ENABLED_tempname_FALSE=
|
||||
fi
|
||||
|
||||
if $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then
|
||||
gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_TRUE=
|
||||
gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_FALSE='#'
|
||||
|
@ -28674,6 +28853,8 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
|
|||
echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
|
||||
echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
|
||||
|
||||
echo " Does Emacs support sound? ${HAVE_SOUND}"
|
||||
|
||||
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
|
||||
echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
|
||||
echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
|
||||
|
@ -28768,13 +28949,10 @@ SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e
|
|||
|
||||
|
||||
|
||||
ac_config_commands="$ac_config_commands mkdirs"
|
||||
ac_config_commands="$ac_config_commands src/epaths.h"
|
||||
|
||||
|
||||
ac_config_commands="$ac_config_commands epaths"
|
||||
|
||||
|
||||
ac_config_commands="$ac_config_commands gdbinit"
|
||||
ac_config_commands="$ac_config_commands src/.gdbinit"
|
||||
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
|
@ -28971,6 +29149,10 @@ if test -z "${gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_TRUE}" && test
|
|||
as_fn_error "conditional \"gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
if test -z "${gl_GNULIB_ENABLED_secure_getenv_TRUE}" && test -z "${gl_GNULIB_ENABLED_secure_getenv_FALSE}"; then
|
||||
as_fn_error "conditional \"gl_GNULIB_ENABLED_secure_getenv\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
if test -z "${gl_GNULIB_ENABLED_stat_TRUE}" && test -z "${gl_GNULIB_ENABLED_stat_FALSE}"; then
|
||||
as_fn_error "conditional \"gl_GNULIB_ENABLED_stat\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
|
@ -28983,6 +29165,10 @@ if test -z "${gl_GNULIB_ENABLED_strtoull_TRUE}" && test -z "${gl_GNULIB_ENABLED_
|
|||
as_fn_error "conditional \"gl_GNULIB_ENABLED_strtoull\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
if test -z "${gl_GNULIB_ENABLED_tempname_TRUE}" && test -z "${gl_GNULIB_ENABLED_tempname_FALSE}"; then
|
||||
as_fn_error "conditional \"gl_GNULIB_ENABLED_tempname\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
if test -z "${gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_TRUE}" && test -z "${gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_FALSE}"; then
|
||||
as_fn_error "conditional \"gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
|
@ -29639,9 +29825,8 @@ do
|
|||
"nt/Makefile") CONFIG_FILES="$CONFIG_FILES nt/Makefile" ;;
|
||||
"test/automated/Makefile") CONFIG_FILES="$CONFIG_FILES test/automated/Makefile" ;;
|
||||
"admin/unidata/Makefile") CONFIG_FILES="$CONFIG_FILES admin/unidata/Makefile" ;;
|
||||
"mkdirs") CONFIG_COMMANDS="$CONFIG_COMMANDS mkdirs" ;;
|
||||
"epaths") CONFIG_COMMANDS="$CONFIG_COMMANDS epaths" ;;
|
||||
"gdbinit") CONFIG_COMMANDS="$CONFIG_COMMANDS gdbinit" ;;
|
||||
"src/epaths.h") CONFIG_COMMANDS="$CONFIG_COMMANDS src/epaths.h" ;;
|
||||
"src/.gdbinit") CONFIG_COMMANDS="$CONFIG_COMMANDS src/.gdbinit" ;;
|
||||
|
||||
*) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||
esac
|
||||
|
@ -30360,22 +30545,15 @@ $as_echo X"$file" |
|
|||
done
|
||||
}
|
||||
;;
|
||||
"mkdirs":C)
|
||||
for dir in etc lisp ; do
|
||||
test -d ${dir} || mkdir ${dir}
|
||||
done
|
||||
;;
|
||||
"epaths":C)
|
||||
echo creating src/epaths.h
|
||||
"src/epaths.h":C)
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
|
||||
else
|
||||
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
|
||||
fi
|
||||
;;
|
||||
"gdbinit":C)
|
||||
"src/.gdbinit":C)
|
||||
if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
|
||||
echo creating src/.gdbinit
|
||||
echo "source $srcdir/src/.gdbinit" > src/.gdbinit
|
||||
fi
|
||||
;;
|
||||
|
|
131
configure.ac
131
configure.ac
|
@ -141,7 +141,18 @@ AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
|
|||
[string giving default POP mail host])],
|
||||
AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
|
||||
|
||||
OPTION_DEFAULT_ON([sound],[don't compile with sound support])
|
||||
AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE],
|
||||
[compile with sound support (VALUE one of: yes, ossaudio, alsa, no;
|
||||
default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW.])],
|
||||
[ case "${withval}" in
|
||||
yes|no|ossaudio|alsa) val=$withval ;;
|
||||
*) AC_MSG_ERROR([`--with-sound=$withval' is invalid;
|
||||
this option's value should be `yes', `no', `ossaudio', or `alsa'.])
|
||||
;;
|
||||
esac
|
||||
with_sound=$val
|
||||
],
|
||||
[with_sound=$with_features])
|
||||
|
||||
dnl FIXME currently it is not the last.
|
||||
dnl This should be the last --with option, because --with-x is
|
||||
|
@ -1255,6 +1266,7 @@ AC_DEFUN([PKG_CHECK_MODULES], [
|
|||
fi
|
||||
])
|
||||
|
||||
HAVE_SOUND=no
|
||||
if test "${with_sound}" != "no"; then
|
||||
# Sound support for GNU/Linux, the free BSDs, and MinGW.
|
||||
AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h],
|
||||
|
@ -1264,47 +1276,61 @@ if test "${with_sound}" != "no"; then
|
|||
#include <windows.h>
|
||||
#endif
|
||||
])
|
||||
# Emulation library used on NetBSD.
|
||||
AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
|
||||
if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then
|
||||
# Emulation library used on NetBSD.
|
||||
AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
|
||||
test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \
|
||||
AC_MSG_ERROR([ossaudio sound support requested but not found.])
|
||||
dnl FIXME? If we did find ossaudio, should we set with_sound=ossaudio?
|
||||
dnl Traditionally, we go on to check for alsa too. Does that make sense?
|
||||
fi
|
||||
AC_SUBST(LIBSOUND)
|
||||
|
||||
ALSA_REQUIRED=1.0.0
|
||||
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
|
||||
PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
|
||||
if test $HAVE_ALSA = yes; then
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
SAVE_LIBS="$LIBS"
|
||||
CFLAGS="$ALSA_CFLAGS $CFLAGS"
|
||||
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)
|
||||
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)
|
||||
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.])
|
||||
if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
|
||||
ALSA_REQUIRED=1.0.0
|
||||
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
|
||||
PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
|
||||
if test $HAVE_ALSA = yes; then
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
SAVE_LIBS="$LIBS"
|
||||
CFLAGS="$ALSA_CFLAGS $CFLAGS"
|
||||
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)
|
||||
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)
|
||||
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
|
||||
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
|
||||
fi
|
||||
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
|
||||
fi
|
||||
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
LIBS="$SAVE_LIBS"
|
||||
LIBSOUND="$LIBSOUND $ALSA_LIBS"
|
||||
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
|
||||
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
|
||||
fi
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
LIBS="$SAVE_LIBS"
|
||||
LIBSOUND="$LIBSOUND $ALSA_LIBS"
|
||||
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
|
||||
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
|
||||
elif test "${with_sound}" = "alsa"; then
|
||||
AC_MSG_ERROR([ALSA sound support requested but not found.])
|
||||
fi
|
||||
fi dnl with_sound = alsa|yes
|
||||
|
||||
dnl Define HAVE_SOUND if we have sound support. We know it works and
|
||||
dnl compiles only on the specified platforms. For others, it
|
||||
dnl probably doesn't make sense to try.
|
||||
dnl FIXME So surely we should bypass this whole section if not using
|
||||
dnl one of these platforms?
|
||||
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
|
||||
case "$opsys" in
|
||||
dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
|
||||
dnl Adjust the --with-sound help text if you change this.
|
||||
gnu-linux|freebsd|netbsd|mingw32)
|
||||
AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
|
||||
HAVE_SOUND=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
@ -1617,6 +1643,7 @@ CLIENTRES=
|
|||
CLIENTW=
|
||||
W32_RES_LINK=
|
||||
EMACS_MANIFEST=
|
||||
UPDATE_MANIFEST=
|
||||
if test "${with_w32}" != no; then
|
||||
case "${opsys}" in
|
||||
cygwin)
|
||||
|
@ -1667,6 +1694,7 @@ if test "${HAVE_W32}" = "yes"; then
|
|||
x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
|
||||
*) EMACS_MANIFEST="emacs-x86.manifest" ;;
|
||||
esac
|
||||
UPDATE_MANIFEST=update-game-score.exe.manifest
|
||||
if test "${opsys}" = "cygwin"; then
|
||||
W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
|
||||
W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
|
||||
|
@ -1693,6 +1721,7 @@ AC_SUBST(W32_OBJ)
|
|||
AC_SUBST(W32_LIBS)
|
||||
AC_SUBST(EMACSRES)
|
||||
AC_SUBST(EMACS_MANIFEST)
|
||||
AC_SUBST(UPDATE_MANIFEST)
|
||||
AC_SUBST(CLIENTRES)
|
||||
AC_SUBST(CLIENTW)
|
||||
AC_SUBST(W32_RES_LINK)
|
||||
|
@ -2952,6 +2981,24 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
|
|||
fi
|
||||
AC_SUBST(LIBPNG)
|
||||
|
||||
HAVE_ZLIB=no
|
||||
LIBZ=
|
||||
if test "${HAVE_PNG}" = "yes"; then
|
||||
### PNG depends on zlib, so if we have PNG, we have zlib.
|
||||
HAVE_ZLIB=yes
|
||||
AC_DEFINE(HAVE_ZLIB, 1, [Define to 1 if you have the zlib library (-lz).])
|
||||
else
|
||||
### No PNG, so check zlib ourselves.
|
||||
LIBS="-lz $LIBS"
|
||||
AC_CHECK_LIB(z, inflateEnd, HAVE_ZLIB=yes, HAVE_ZLIB=no)
|
||||
if test "${HAVE_ZLIB}" = "yes"; then
|
||||
AC_DEFINE(HAVE_ZLIB, 1, [Define to 1 if you have the zlib library (-lz).])
|
||||
LIBZ=-lz
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(LIBZ)
|
||||
|
||||
|
||||
### Use -ltiff if available, unless `--with-tiff=no'.
|
||||
### mingw32 doesn't use -ltiff, since it loads the library dynamically.
|
||||
HAVE_TIFF=no
|
||||
|
@ -3290,7 +3337,7 @@ select getpagesize setlocale \
|
|||
getrlimit setrlimit shutdown getaddrinfo \
|
||||
strsignal setitimer \
|
||||
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
|
||||
gai_strerror mkostemp mkstemp getline getdelim sync \
|
||||
gai_strerror getline getdelim sync \
|
||||
difftime posix_memalign \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
touchlock \
|
||||
|
@ -3445,6 +3492,9 @@ if test $TERMINFO = yes; then
|
|||
AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
|
||||
TERMCAP_OBJ=terminfo.o
|
||||
fi
|
||||
if test "X$LIBS_TERMCAP" = "X-lncurses"; then
|
||||
AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
|
||||
fi
|
||||
AC_SUBST(LIBS_TERMCAP)
|
||||
AC_SUBST(TERMCAP_OBJ)
|
||||
|
||||
|
@ -3977,7 +4027,7 @@ case $opsys in
|
|||
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
|
||||
dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD
|
||||
dnl to prevent sigchld_handler from intercepting the child's death.
|
||||
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
|
||||
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
|
||||
dnl if HAVE_POSIX_OPENPT
|
||||
if test "x$ac_cv_func_posix_openpt" = xyes; then
|
||||
AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY)])
|
||||
|
@ -4025,12 +4075,12 @@ case $opsys in
|
|||
dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
|
||||
dnl from intercepting that death. If any child but grantpt's should die
|
||||
dnl within, it should be caught after sigrelse(2).
|
||||
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
|
||||
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
|
||||
;;
|
||||
|
||||
unixware )
|
||||
dnl Comments are as per sol2*.
|
||||
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
|
||||
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -4785,6 +4835,8 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
|
|||
echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
|
||||
echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
|
||||
|
||||
echo " Does Emacs support sound? ${HAVE_SOUND}"
|
||||
|
||||
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
|
||||
echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
|
||||
echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
|
||||
|
@ -4894,13 +4946,6 @@ SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e
|
|||
|
||||
AC_SUBST(SUBDIR_MAKEFILES_IN)
|
||||
|
||||
dnl Make the necessary directories, if they don't exist.
|
||||
AC_CONFIG_COMMANDS([mkdirs], [
|
||||
for dir in etc lisp ; do
|
||||
test -d ${dir} || mkdir ${dir}
|
||||
done
|
||||
])
|
||||
|
||||
dnl You might wonder (I did) why epaths.h is generated by running make,
|
||||
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);
|
||||
|
@ -4909,8 +4954,7 @@ 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.
|
||||
AC_CONFIG_COMMANDS([epaths], [
|
||||
echo creating src/epaths.h
|
||||
AC_CONFIG_COMMANDS([src/epaths.h], [
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
|
||||
else
|
||||
|
@ -4918,9 +4962,8 @@ else
|
|||
fi
|
||||
], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
|
||||
|
||||
AC_CONFIG_COMMANDS([gdbinit], [
|
||||
AC_CONFIG_COMMANDS([src/.gdbinit], [
|
||||
if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
|
||||
echo creating src/.gdbinit
|
||||
echo "source $srcdir/src/.gdbinit" > src/.gdbinit
|
||||
fi
|
||||
])
|
||||
|
|
|
@ -1,3 +1,44 @@
|
|||
2013-07-31 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* emacs.texi (Top): Remove menu item for the removed "Disabling
|
||||
Multibyte" node.
|
||||
|
||||
2013-07-31 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* rmail.texi (Rmail Coding): Move here from mule.texi.
|
||||
|
||||
* custom.texi (Specifying File Variables): Fix cross-references.
|
||||
|
||||
* mule.texi (Unibyte Mode): Fix cross-references.
|
||||
(Disabling Multibyte): Remove.
|
||||
|
||||
* macos.texi (Mac / GNUstep Basics): Mention `ns-alternate-modifier'.
|
||||
|
||||
* cal-xtra.texi (Advanced Calendar/Diary Usage): Update menu.
|
||||
(Mayan Calendar): Move here from calendar.texi.
|
||||
* emacs.texi (Top): Update menu.
|
||||
|
||||
2013-07-30 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* emacs.texi (Top): Add menu entry.
|
||||
|
||||
* maintaining.texi (VC Ignore): New node. Document vc-ignore.
|
||||
(VC Directory Commands): Add vc-dir-ignore.
|
||||
|
||||
2013-07-28 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* glossary.texi (Glossary): Add some entries.
|
||||
|
||||
2013-07-27 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* maintaining.texi (VC Directory Commands): Mention `D' and `L' in
|
||||
vc-dir. (Bug#14948)
|
||||
|
||||
2013-07-26 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* display.texi (Fringes): Document the variable fringe-mode.
|
||||
(Bug#14946)
|
||||
|
||||
2013-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* maintaining.texi (EDE): Fix cross-reference.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#### Makefile for the Emacs Manual
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1996-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ your personal tastes.
|
|||
@menu
|
||||
* Calendar Customizing:: Calendar layout and hooks.
|
||||
* Holiday Customizing:: Defining your own holidays.
|
||||
* Mayan Calendar:: Moving to a date specified in a Mayan calendar.
|
||||
* Date Display Format:: Changing the format.
|
||||
* Time Display Format:: Changing the format.
|
||||
* Diary Customizing:: Defaults you can set.
|
||||
|
@ -260,6 +261,99 @@ visible in the calendar window, with descriptive strings, like this:
|
|||
(((6 4 2012) "Lunar Eclipse") ((11 13 2012) "Solar Eclipse") ... )
|
||||
@end smallexample
|
||||
|
||||
@node Mayan Calendar
|
||||
@subsection Converting from the Mayan Calendar
|
||||
@cindex Mayan calendar
|
||||
|
||||
Here are the commands to select dates based on the Mayan calendar:
|
||||
|
||||
@table @kbd
|
||||
@item g m l
|
||||
Move to a date specified by the long count calendar
|
||||
(@code{calendar-mayan-goto-long-count-date}).
|
||||
@item g m n t
|
||||
Move to the next occurrence of a place in the
|
||||
tzolkin calendar (@code{calendar-mayan-next-tzolkin-date}).
|
||||
@item g m p t
|
||||
Move to the previous occurrence of a place in the
|
||||
tzolkin calendar (@code{calendar-mayan-previous-tzolkin-date}).
|
||||
@item g m n h
|
||||
Move to the next occurrence of a place in the
|
||||
haab calendar (@code{calendar-mayan-next-haab-date}).
|
||||
@item g m p h
|
||||
Move to the previous occurrence of a place in the
|
||||
haab calendar (@code{calendar-mayan-previous-haab-date}).
|
||||
@item g m n c
|
||||
Move to the next occurrence of a place in the
|
||||
calendar round (@code{calendar-mayan-next-calendar-round-date}).
|
||||
@item g m p c
|
||||
Move to the previous occurrence of a place in the
|
||||
calendar round (@code{calendar-mayan-previous-calendar-round-date}).
|
||||
@end table
|
||||
|
||||
@cindex Mayan long count
|
||||
To understand these commands, you need to understand the Mayan calendars.
|
||||
The @dfn{long count} is a counting of days with these units:
|
||||
|
||||
@display
|
||||
1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
|
||||
1 katun = 20 tun@ @ @ 1 baktun = 20 katun
|
||||
@end display
|
||||
|
||||
@kindex g m @r{(Calendar mode)}
|
||||
@findex calendar-mayan-goto-long-count-date
|
||||
@noindent
|
||||
Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
|
||||
tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long
|
||||
count dates as early as 7.17.18.13.3, but no earlier. When you use the
|
||||
@kbd{g m l} command, type the Mayan long count date with the baktun,
|
||||
katun, tun, uinal, and kin separated by periods.
|
||||
|
||||
@findex calendar-mayan-previous-tzolkin-date
|
||||
@findex calendar-mayan-next-tzolkin-date
|
||||
@cindex Mayan tzolkin calendar
|
||||
The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
|
||||
independent cycles of 13 and 20 days. Since this cycle repeats
|
||||
endlessly, Emacs provides commands to move backward and forward to the
|
||||
previous or next point in the cycle. Type @kbd{g m p t} to go to the
|
||||
previous tzolkin date; Emacs asks you for a tzolkin date and moves point
|
||||
to the previous occurrence of that date. Similarly, type @kbd{g m n t}
|
||||
to go to the next occurrence of a tzolkin date.
|
||||
|
||||
@findex calendar-mayan-previous-haab-date
|
||||
@findex calendar-mayan-next-haab-date
|
||||
@cindex Mayan haab calendar
|
||||
The Mayan haab calendar is a cycle of 365 days arranged as 18 months
|
||||
of 20 days each, followed by a 5-day monthless period. Like the tzolkin
|
||||
cycle, this cycle repeats endlessly, and there are commands to move
|
||||
backward and forward to the previous or next point in the cycle. Type
|
||||
@kbd{g m p h} to go to the previous haab date; Emacs asks you for a haab
|
||||
date and moves point to the previous occurrence of that date.
|
||||
Similarly, type @kbd{g m n h} to go to the next occurrence of a haab
|
||||
date.
|
||||
|
||||
@c This is omitted because it is too long for smallbook format.
|
||||
@c @findex calendar-mayan-previous-calendar-round-date
|
||||
@findex calendar-mayan-next-calendar-round-date
|
||||
@cindex Mayan calendar round
|
||||
The Maya also used the combination of the tzolkin date and the haab
|
||||
date. This combination is a cycle of about 52 years called a
|
||||
@emph{calendar round}. If you type @kbd{g m p c}, Emacs asks you for
|
||||
both a haab and a tzolkin date and then moves point to the previous
|
||||
occurrence of that combination. Use @kbd{g m n c} to move point to the
|
||||
next occurrence of a combination. These commands signal an error if the
|
||||
haab/tzolkin date combination you have typed is impossible.
|
||||
|
||||
Emacs uses strict completion
|
||||
@iftex
|
||||
(@pxref{Completion Exit,,, emacs, the Emacs Manual})
|
||||
@end iftex
|
||||
@ifnottex
|
||||
(@pxref{Completion Exit})
|
||||
@end ifnottex
|
||||
whenever it asks you to type a Mayan name, so you don't have to worry
|
||||
about spelling.
|
||||
|
||||
@node Date Display Format
|
||||
@subsection Date Display Format
|
||||
@vindex calendar-date-display-form
|
||||
|
|
|
@ -678,7 +678,6 @@ and from several other calendars.
|
|||
(aside from Gregorian).
|
||||
* To Other Calendar:: Converting the selected date to various calendars.
|
||||
* From Other Calendar:: Moving to a date specified in another calendar.
|
||||
* Mayan Calendar:: Moving to a date specified in a Mayan calendar.
|
||||
@end menu
|
||||
|
||||
@c FIXME perhaps most of the details should be moved to cal-xtra.
|
||||
|
@ -913,93 +912,6 @@ years for the date given by point. If you are not in the calendar,
|
|||
this command first asks you for the date of death and the range of
|
||||
years, and then displays the list of yahrzeit dates.
|
||||
|
||||
@c FIXME move to emacs-xtra.
|
||||
@node Mayan Calendar
|
||||
@subsection Converting from the Mayan Calendar
|
||||
|
||||
Here are the commands to select dates based on the Mayan calendar:
|
||||
|
||||
@table @kbd
|
||||
@item g m l
|
||||
Move to a date specified by the long count calendar
|
||||
(@code{calendar-mayan-goto-long-count-date}).
|
||||
@item g m n t
|
||||
Move to the next occurrence of a place in the
|
||||
tzolkin calendar (@code{calendar-mayan-next-tzolkin-date}).
|
||||
@item g m p t
|
||||
Move to the previous occurrence of a place in the
|
||||
tzolkin calendar (@code{calendar-mayan-previous-tzolkin-date}).
|
||||
@item g m n h
|
||||
Move to the next occurrence of a place in the
|
||||
haab calendar (@code{calendar-mayan-next-haab-date}).
|
||||
@item g m p h
|
||||
Move to the previous occurrence of a place in the
|
||||
haab calendar (@code{calendar-mayan-previous-haab-date}).
|
||||
@item g m n c
|
||||
Move to the next occurrence of a place in the
|
||||
calendar round (@code{calendar-mayan-next-calendar-round-date}).
|
||||
@item g m p c
|
||||
Move to the previous occurrence of a place in the
|
||||
calendar round (@code{calendar-mayan-previous-calendar-round-date}).
|
||||
@end table
|
||||
|
||||
@cindex Mayan long count
|
||||
To understand these commands, you need to understand the Mayan calendars.
|
||||
The @dfn{long count} is a counting of days with these units:
|
||||
|
||||
@display
|
||||
1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
|
||||
1 katun = 20 tun@ @ @ 1 baktun = 20 katun
|
||||
@end display
|
||||
|
||||
@kindex g m @r{(Calendar mode)}
|
||||
@findex calendar-mayan-goto-long-count-date
|
||||
@noindent
|
||||
Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
|
||||
tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long
|
||||
count dates as early as 7.17.18.13.3, but no earlier. When you use the
|
||||
@kbd{g m l} command, type the Mayan long count date with the baktun,
|
||||
katun, tun, uinal, and kin separated by periods.
|
||||
|
||||
@findex calendar-mayan-previous-tzolkin-date
|
||||
@findex calendar-mayan-next-tzolkin-date
|
||||
@cindex Mayan tzolkin calendar
|
||||
The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
|
||||
independent cycles of 13 and 20 days. Since this cycle repeats
|
||||
endlessly, Emacs provides commands to move backward and forward to the
|
||||
previous or next point in the cycle. Type @kbd{g m p t} to go to the
|
||||
previous tzolkin date; Emacs asks you for a tzolkin date and moves point
|
||||
to the previous occurrence of that date. Similarly, type @kbd{g m n t}
|
||||
to go to the next occurrence of a tzolkin date.
|
||||
|
||||
@findex calendar-mayan-previous-haab-date
|
||||
@findex calendar-mayan-next-haab-date
|
||||
@cindex Mayan haab calendar
|
||||
The Mayan haab calendar is a cycle of 365 days arranged as 18 months
|
||||
of 20 days each, followed by a 5-day monthless period. Like the tzolkin
|
||||
cycle, this cycle repeats endlessly, and there are commands to move
|
||||
backward and forward to the previous or next point in the cycle. Type
|
||||
@kbd{g m p h} to go to the previous haab date; Emacs asks you for a haab
|
||||
date and moves point to the previous occurrence of that date.
|
||||
Similarly, type @kbd{g m n h} to go to the next occurrence of a haab
|
||||
date.
|
||||
|
||||
@c This is omitted because it is too long for smallbook format.
|
||||
@c @findex calendar-mayan-previous-calendar-round-date
|
||||
@findex calendar-mayan-next-calendar-round-date
|
||||
@cindex Mayan calendar round
|
||||
The Maya also used the combination of the tzolkin date and the haab
|
||||
date. This combination is a cycle of about 52 years called a
|
||||
@emph{calendar round}. If you type @kbd{g m p c}, Emacs asks you for
|
||||
both a haab and a tzolkin date and then moves point to the previous
|
||||
occurrence of that combination. Use @kbd{g m n c} to move point to the
|
||||
next occurrence of a combination. These commands signal an error if the
|
||||
haab/tzolkin date combination you have typed is impossible.
|
||||
|
||||
Emacs uses strict completion (@pxref{Completion Exit}) whenever it
|
||||
asks you to type a Mayan name, so you don't have to worry about
|
||||
spelling.
|
||||
|
||||
@node Diary
|
||||
@section The Diary
|
||||
@cindex diary
|
||||
|
|
|
@ -1166,7 +1166,10 @@ conversion of this file. @xref{Coding Systems}.
|
|||
|
||||
@item
|
||||
@code{unibyte} says to load or compile a file of Emacs Lisp in unibyte
|
||||
mode, if the value is @code{t}. @xref{Disabling Multibyte}.
|
||||
mode, if the value is @code{t}. @xref{Disabling Multibyte, ,
|
||||
Disabling Multibyte Characters, elisp, GNU Emacs Lisp Reference
|
||||
Manual}.
|
||||
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
|
|
|
@ -1017,12 +1017,15 @@ mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
|
|||
|
||||
@findex set-fringe-style
|
||||
@findex fringe-mode
|
||||
@vindex fringe-mode @r{(variable)}
|
||||
On graphical displays, each Emacs window normally has narrow
|
||||
@dfn{fringes} on the left and right edges. The fringes are used to
|
||||
display symbols that provide information about the text in the window.
|
||||
You can type @kbd{M-x fringe-mode} to disable the fringes, or modify
|
||||
their width. This command affects fringes in all frames; to modify
|
||||
fringes on the selected frame only, use @kbd{M-x set-fringe-style}.
|
||||
You can make your changes to the fringes permanent by customizing the
|
||||
variable @code{fringe-mode}.
|
||||
|
||||
The most common use of the fringes is to indicate a continuation
|
||||
line (@pxref{Continuation Lines}). When one line of text is split
|
||||
|
|
|
@ -544,7 +544,6 @@ Frames and Graphical Displays
|
|||
International Character Set Support
|
||||
|
||||
* International Chars:: Basic concepts of multibyte characters.
|
||||
* Disabling Multibyte:: Controlling whether to use multibyte characters.
|
||||
* Language Environments:: Setting things up for the language you use.
|
||||
* Input Methods:: Entering text characters not on your keyboard.
|
||||
* Select Input Method:: Specifying your choice of input methods.
|
||||
|
@ -798,6 +797,7 @@ Version Control
|
|||
* Old Revisions:: Examining and comparing old versions.
|
||||
* VC Change Log:: Viewing the VC Change Log.
|
||||
* VC Undo:: Canceling changes before or after committing.
|
||||
* VC Ignore:: Ignore files under version control system.
|
||||
* VC Directory Mode:: Listing files managed by version control.
|
||||
* Branches:: Multiple lines of development.
|
||||
@ifnottex
|
||||
|
@ -956,7 +956,6 @@ Conversion To and From Other Calendars
|
|||
(aside from Gregorian).
|
||||
* To Other Calendar:: Converting the selected date to various calendars.
|
||||
* From Other Calendar:: Moving to a date specified in another calendar.
|
||||
* Mayan Calendar:: Moving to a date specified in a Mayan calendar.
|
||||
|
||||
The Diary
|
||||
|
||||
|
@ -971,6 +970,7 @@ More advanced features of the Calendar and Diary
|
|||
|
||||
* Calendar Customizing:: Calendar layout and hooks.
|
||||
* Holiday Customizing:: Defining your own holidays.
|
||||
* Mayan Calendar:: Moving to a date specified in a Mayan calendar.
|
||||
* Date Display Format:: Changing the format.
|
||||
* Time Display Format:: Changing the format.
|
||||
* Diary Customizing:: Defaults you can set.
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
@c See file emacs.texi for copying conditions.
|
||||
@node Glossary
|
||||
@unnumbered Glossary
|
||||
@cindex glossary
|
||||
|
||||
@table @asis
|
||||
@anchor{Glossary---Abbrev}
|
||||
|
@ -18,7 +19,10 @@ Aborting means getting out of a recursive edit (q.v.). The
|
|||
commands @kbd{C-]} and @kbd{M-x top-level} are used for this.
|
||||
@xref{Quitting}.
|
||||
|
||||
@c FIXME? Active Region
|
||||
@item Active Region
|
||||
Setting the mark (q.v.@:) at a position in the text also activates it.
|
||||
When the mark is active, we call the region an active region.
|
||||
@xref{Mark}.
|
||||
|
||||
@item Alt
|
||||
Alt is the name of a modifier bit that a keyboard input character may
|
||||
|
@ -1365,7 +1369,11 @@ are not in a recursive editing level (q.v.@:) or the minibuffer
|
|||
(q.v.), and not in the middle of a command. You can get back to top
|
||||
level by aborting (q.v.@:) and quitting (q.v.). @xref{Quitting}.
|
||||
|
||||
@c FIXME? Transient Mark Mode
|
||||
@item Transient Mark Mode
|
||||
The default behavior of the mark (q.v.@:) and region (q.v.), in which
|
||||
setting the mark activates it and highlights the region, is called
|
||||
Transient Mark mode. In GNU Emacs 23 and onwards, it is enabled by
|
||||
default. @xref{Disabled Transient Mark}.
|
||||
|
||||
@item Transposition
|
||||
Transposing two units of text means putting each one into the place
|
||||
|
|
|
@ -40,13 +40,16 @@ Emacs provides a set of key bindings using this modifier key that mimic
|
|||
other Mac / GNUstep applications (@pxref{Mac / GNUstep Events}). You
|
||||
can change these bindings in the usual way (@pxref{Key Bindings}).
|
||||
|
||||
@c FIXME mention ns-alternate-modifier?
|
||||
@vindex ns-alternate-modifier
|
||||
@vindex ns-right-alternate-modifier
|
||||
The variable @code{ns-right-alternate-modifier} controls the
|
||||
behavior of the right @key{alt} and @key{option} keys. These keys
|
||||
behave like the left-hand keys if the value is @code{left} (the
|
||||
default). A value of @code{control}, @code{meta}, @code{alt},
|
||||
@code{super}, or @code{hyper} makes them behave like the corresponding
|
||||
modifier keys; a value of @code{none} tells Emacs to ignore them.
|
||||
modifier keys; a value to @code{left} means be the same key as
|
||||
@code{ns-alternate-modifier}; a value of @code{none} tells Emacs to
|
||||
ignore them.
|
||||
|
||||
@kbd{S-Mouse-1} adjusts the region to the click position,
|
||||
just like @kbd{Mouse-3} (@code{mouse-save-then-kill}); it does not pop
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@c This is part of the Emacs manual.
|
||||
@c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top
|
||||
@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2013 Free Software
|
||||
@c Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
|
@ -56,6 +56,7 @@ variable @code{vc-handled-backends} to @code{nil}
|
|||
* Old Revisions:: Examining and comparing old versions.
|
||||
* VC Change Log:: Viewing the VC Change Log.
|
||||
* VC Undo:: Canceling changes before or after committing.
|
||||
* VC Ignore:: Ignore files under version control system.
|
||||
* VC Directory Mode:: Listing files managed by version control.
|
||||
* Branches:: Multiple lines of development.
|
||||
@ifnottex
|
||||
|
@ -1032,6 +1033,23 @@ unlocked; you must lock again to resume editing. You can also use
|
|||
@kbd{C-x v u} to unlock a file if you lock it and then decide not to
|
||||
change it.
|
||||
|
||||
@node VC Ignore
|
||||
@subsection Ignore Version Control Files
|
||||
|
||||
@table @kbd
|
||||
@item C-x v G
|
||||
Ignore a file under current version control system. (@code{vc-ignore}).
|
||||
@end table
|
||||
|
||||
@kindex C-x v G
|
||||
@findex vc-ignore
|
||||
Many source trees contain some files that do not need to be versioned,
|
||||
such as editor backups, object or bytecode files, and built programs.
|
||||
You can simply not add them, but then they’ll always crop up as
|
||||
unknown files. You can also tell the version control system to ignore
|
||||
these files by adding them to the ignore file at the top of the tree.
|
||||
@kbd{C-x v G} (@code{vc-ignore}) can help you do this.
|
||||
|
||||
@node VC Directory Mode
|
||||
@subsection VC Directory Mode
|
||||
|
||||
|
@ -1222,7 +1240,7 @@ Revisions}), and @w{@kbd{C-x v u}} (@pxref{VC Undo}).
|
|||
|
||||
The VC Directory buffer also defines some single-key shortcuts for
|
||||
VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l},
|
||||
@kbd{i}, and @kbd{v}.
|
||||
@kbd{i}, @kbd{D}, @kbd{L}, @kbd{G} and @kbd{v}.
|
||||
|
||||
For example, you can commit a set of edited files by opening a VC
|
||||
Directory buffer, where the files are listed with the @samp{edited}
|
||||
|
|
|
@ -90,7 +90,6 @@ value to make sure Emacs interprets keyboard input correctly; see
|
|||
|
||||
@menu
|
||||
* International Chars:: Basic concepts of multibyte characters.
|
||||
* Disabling Multibyte:: Controlling whether to use multibyte characters.
|
||||
* Language Environments:: Setting things up for the language you use.
|
||||
* Input Methods:: Entering text characters not on your keyboard.
|
||||
* Select Input Method:: Specifying your choice of input methods.
|
||||
|
@ -244,79 +243,6 @@ Character code properties: customize what to show
|
|||
decomposition: (65 768) ('A' '`')
|
||||
@end smallexample
|
||||
|
||||
@c FIXME? Does this section even belong in the user manual?
|
||||
@c Seems more appropriate to the lispref?
|
||||
@node Disabling Multibyte
|
||||
@section Disabling Multibyte Characters
|
||||
|
||||
By default, Emacs starts in multibyte mode: it stores the contents
|
||||
of buffers and strings using an internal encoding that represents
|
||||
non-@acronym{ASCII} characters using multi-byte sequences. Multibyte
|
||||
mode allows you to use all the supported languages and scripts without
|
||||
limitations.
|
||||
|
||||
@cindex turn multibyte support on or off
|
||||
Under very special circumstances, you may want to disable multibyte
|
||||
character support, for a specific buffer.
|
||||
When multibyte characters are disabled in a buffer, we call
|
||||
that @dfn{unibyte mode}. In unibyte mode, each character in the
|
||||
buffer has a character code ranging from 0 through 255 (0377 octal); 0
|
||||
through 127 (0177 octal) represent @acronym{ASCII} characters, and 128
|
||||
(0200 octal) through 255 (0377 octal) represent non-@acronym{ASCII}
|
||||
characters.
|
||||
|
||||
To edit a particular file in unibyte representation, visit it using
|
||||
@code{find-file-literally}. @xref{Visiting}. You can convert a
|
||||
multibyte buffer to unibyte by saving it to a file, killing the
|
||||
buffer, and visiting the file again with @code{find-file-literally}.
|
||||
Alternatively, you can use @kbd{C-x @key{RET} c}
|
||||
(@code{universal-coding-system-argument}) and specify @samp{raw-text}
|
||||
as the coding system with which to visit or save a file. @xref{Text
|
||||
Coding}. Unlike @code{find-file-literally}, finding a file as
|
||||
@samp{raw-text} doesn't disable format conversion, uncompression, or
|
||||
auto mode selection.
|
||||
|
||||
@c Not a single file in Emacs uses this feature. Is it really worth
|
||||
@c mentioning in the _user_ manual? Also, this duplicates somewhat
|
||||
@c "Loading Non-ASCII" from the lispref.
|
||||
@cindex Lisp files, and multibyte operation
|
||||
@cindex multibyte operation, and Lisp files
|
||||
@cindex unibyte operation, and Lisp files
|
||||
@cindex init file, and non-@acronym{ASCII} characters
|
||||
Emacs normally loads Lisp files as multibyte.
|
||||
This includes the Emacs initialization
|
||||
file, @file{.emacs}, and the initialization files of packages
|
||||
such as Gnus. However, you can specify unibyte loading for a
|
||||
particular Lisp file, by adding an entry @samp{coding: raw-text} in a file
|
||||
local variables section. @xref{Specify Coding}.
|
||||
Then that file is always loaded as unibyte text.
|
||||
@ignore
|
||||
@c I don't see the point of this statement:
|
||||
The motivation for these conventions is that it is more reliable to
|
||||
always load any particular Lisp file in the same way.
|
||||
@end ignore
|
||||
You can also load a Lisp file as unibyte, on any one occasion, by
|
||||
typing @kbd{C-x @key{RET} c raw-text @key{RET}} immediately before
|
||||
loading it.
|
||||
|
||||
@c See http://debbugs.gnu.org/11226 for lack of unibyte tooltip.
|
||||
@vindex enable-multibyte-characters
|
||||
The buffer-local variable @code{enable-multibyte-characters} is
|
||||
non-@code{nil} in multibyte buffers, and @code{nil} in unibyte ones.
|
||||
The mode line also indicates whether a buffer is multibyte or not.
|
||||
@xref{Mode Line}. With a graphical display, in a multibyte buffer,
|
||||
the portion of the mode line that indicates the character set has a
|
||||
tooltip that (amongst other things) says that the buffer is multibyte.
|
||||
In a unibyte buffer, the character set indicator is absent. Thus, in
|
||||
a unibyte buffer (when using a graphical display) there is normally
|
||||
nothing before the indication of the visited file's end-of-line
|
||||
convention (colon, backslash, etc.), unless you are using an input
|
||||
method.
|
||||
|
||||
@findex toggle-enable-multibyte-characters
|
||||
You can turn off multibyte support in a specific buffer by invoking the
|
||||
command @code{toggle-enable-multibyte-characters} in that buffer.
|
||||
|
||||
@node Language Environments
|
||||
@section Language Environments
|
||||
@cindex language environments
|
||||
|
@ -919,18 +845,6 @@ pattern, are decoded correctly.
|
|||
Unlike the previous two, this variable does not override any
|
||||
@samp{-*-coding:-*-} tag.
|
||||
|
||||
@c FIXME? This seems somewhat out of place. Move to the Rmail section?
|
||||
@vindex rmail-file-coding-system
|
||||
When you get new mail in Rmail, each message is translated
|
||||
automatically from the coding system it is written in, as if it were a
|
||||
separate file. This uses the priority list of coding systems that you
|
||||
have specified. If a MIME message specifies a character set, Rmail
|
||||
obeys that specification. For reading and saving Rmail files
|
||||
themselves, Emacs uses the coding system specified by the variable
|
||||
@code{rmail-file-coding-system}. The default value is @code{nil},
|
||||
which means that Rmail files are not translated (they are read and
|
||||
written in the Emacs internal character code).
|
||||
|
||||
@node Specify Coding
|
||||
@section Specifying a File's Coding System
|
||||
|
||||
|
@ -1591,15 +1505,13 @@ the range 0240 to 0377 octal (160 to 255 decimal) to handle the
|
|||
accented letters and punctuation needed by various European languages
|
||||
(and some non-European ones). Note that Emacs considers bytes with
|
||||
codes in this range as raw bytes, not as characters, even in a unibyte
|
||||
buffer, i.e., if you disable multibyte characters. However, Emacs
|
||||
can still handle these character codes as if they belonged to
|
||||
@emph{one} of the single-byte character sets at a time. To specify
|
||||
@emph{which} of these codes to use, invoke @kbd{M-x
|
||||
set-language-environment} and specify a suitable language environment
|
||||
such as @samp{Latin-@var{n}}.
|
||||
|
||||
For more information about unibyte operation, see
|
||||
@ref{Disabling Multibyte}.
|
||||
buffer, i.e., if you disable multibyte characters. However, Emacs can
|
||||
still handle these character codes as if they belonged to @emph{one}
|
||||
of the single-byte character sets at a time. To specify @emph{which}
|
||||
of these codes to use, invoke @kbd{M-x set-language-environment} and
|
||||
specify a suitable language environment such as @samp{Latin-@var{n}}.
|
||||
@xref{Disabling Multibyte, , Disabling Multibyte Characters, elisp,
|
||||
GNU Emacs Lisp Reference Manual}.
|
||||
|
||||
@vindex unibyte-display-via-language-environment
|
||||
Emacs can also display bytes in the range 160 to 255 as readable
|
||||
|
|
|
@ -1274,6 +1274,17 @@ It reads the name of a coding system, and then redecodes the message
|
|||
using the coding system you specified. If you specified the right
|
||||
coding system, the result should be readable.
|
||||
|
||||
@vindex rmail-file-coding-system
|
||||
When you get new mail in Rmail, each message is translated
|
||||
automatically from the coding system it is written in, as if it were a
|
||||
separate file. This uses the priority list of coding systems that you
|
||||
have specified. If a MIME message specifies a character set, Rmail
|
||||
obeys that specification. For reading and saving Rmail files
|
||||
themselves, Emacs uses the coding system specified by the variable
|
||||
@code{rmail-file-coding-system}. The default value is @code{nil},
|
||||
which means that Rmail files are not translated (they are read and
|
||||
written in the Emacs internal character code).
|
||||
|
||||
@node Rmail Editing
|
||||
@section Editing Within a Message
|
||||
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
2013-08-07 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* emacs-lisp-intro.texi (Beginning init File): Rename from
|
||||
"Beginning a .emacs File", since a node name cannot include a
|
||||
period.
|
||||
(Top, Emacs Initialization, Change a defun): All references
|
||||
changed. (Bug#15038)
|
||||
|
||||
2013-08-02 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* emacs-lisp-intro.texi (zap-to-char): Remove obsolete stuff.
|
||||
|
||||
2013-07-06 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp-intro.texi (Top):
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#### Makefile for the Emacs Lisp Introduction manual
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1994-1999, 2001-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -648,7 +648,7 @@ Your @file{.emacs} File
|
|||
* Default Configuration::
|
||||
* Site-wide Init:: You can write site-wide init files.
|
||||
* defcustom:: Emacs will write code for you.
|
||||
* Beginning a .emacs File:: How to write a @code{.emacs file}.
|
||||
* Beginning init File:: How to write a @file{.emacs} init file.
|
||||
* Text and Auto-fill:: Automatically wrap lines.
|
||||
* Mail Aliases:: Use abbreviations for email addresses.
|
||||
* Indent Tabs Mode:: Don't use tabs with @TeX{}
|
||||
|
@ -3260,7 +3260,7 @@ line that follows a semicolon is a comment. The end of the line is the
|
|||
end of the comment. To stretch a comment over two or more lines, begin
|
||||
each line with a semicolon.
|
||||
|
||||
@xref{Beginning a .emacs File, , Beginning a @file{.emacs}
|
||||
@xref{Beginning init File, , Beginning a @file{.emacs}
|
||||
File}, and @ref{Comments, , Comments, elisp, The GNU Emacs Lisp
|
||||
Reference Manual}, for more about comments.
|
||||
|
||||
|
@ -7537,20 +7537,7 @@ retrieved. @xref{Yanking, , Yanking Text Back}.
|
|||
@section @code{zap-to-char}
|
||||
@findex zap-to-char
|
||||
|
||||
@c FIXME remove obsolete stuff
|
||||
The @code{zap-to-char} function changed little between GNU Emacs
|
||||
version 19 and GNU Emacs version 22. However, @code{zap-to-char}
|
||||
calls another function, @code{kill-region}, which enjoyed a major
|
||||
rewrite.
|
||||
|
||||
The @code{kill-region} function in Emacs 19 is complex, but does not
|
||||
use code that is important at this time. We will skip it.
|
||||
|
||||
The @code{kill-region} function in Emacs 22 is easier to read than the
|
||||
same function in Emacs 19 and introduces a very important concept,
|
||||
that of error handling. We will walk through the function.
|
||||
|
||||
But first, let us look at the interactive @code{zap-to-char} function.
|
||||
Let us look at the interactive @code{zap-to-char} function.
|
||||
|
||||
@menu
|
||||
* Complete zap-to-char:: The complete implementation.
|
||||
|
@ -16719,7 +16706,7 @@ expressions in Emacs Lisp you can change or extend Emacs.
|
|||
* Default Configuration::
|
||||
* Site-wide Init:: You can write site-wide init files.
|
||||
* defcustom:: Emacs will write code for you.
|
||||
* Beginning a .emacs File:: How to write a @code{.emacs file}.
|
||||
* Beginning init File:: How to write a @file{.emacs} init file.
|
||||
* Text and Auto-fill:: Automatically wrap lines.
|
||||
* Mail Aliases:: Use abbreviations for email addresses.
|
||||
* Indent Tabs Mode:: Don't use tabs with @TeX{}
|
||||
|
@ -16990,7 +16977,7 @@ intent is that neither programs nor users should ever change a value
|
|||
set by @code{defconst}. (You can change it; the value set is a
|
||||
variable; but please do not.)
|
||||
|
||||
@node Beginning a .emacs File
|
||||
@node Beginning init File
|
||||
@section Beginning a @file{.emacs} File
|
||||
@cindex @file{.emacs} file, beginning of
|
||||
|
||||
|
|
|
@ -1,3 +1,76 @@
|
|||
2013-08-10 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* edebug.texi (Instrumenting Macro Calls): Use @defmac for macros.
|
||||
|
||||
2013-08-09 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* control.texi (Error Symbols): Minor fix for previous change.
|
||||
|
||||
2013-08-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* errors.texi (Standard Errors): Don't refer to `error-conditions'.
|
||||
|
||||
* control.texi (Signaling Errors): Refer to define-error.
|
||||
(Error Symbols): Add `define-error'.
|
||||
|
||||
2013-08-06 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* positions.texi (Motion by Screen Lines):
|
||||
* display.texi (Truncation): Rename `cache-long-line-scans'
|
||||
to `cache-long-scans'.
|
||||
|
||||
2013-08-05 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* windows.texi (Window Start and End): Add an index.
|
||||
|
||||
2013-08-02 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* display.texi (Face Functions): Add an index.
|
||||
|
||||
* variables.texi (Variable Aliases): Add an index.
|
||||
|
||||
* functions.texi (Defining Functions): Add an index.
|
||||
|
||||
* nonascii.texi (Coding System Basics): Add an index.
|
||||
|
||||
2013-07-31 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* nonascii.texi (Non-ASCII Characters): Update menu.
|
||||
(Disabling Multibyte): Move here from doc/emacs/mule.texi. Fix cross-references.
|
||||
|
||||
* elisp.texi (Top): Update menu.
|
||||
|
||||
2013-07-30 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* windows.texi (Window History): Mention the default value of
|
||||
switch-to-visible-buffer. Add cross-references.
|
||||
|
||||
2013-07-24 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* errors.texi (Standard Errors): Fix typo.
|
||||
|
||||
* files.texi (Magic File Names):
|
||||
* os.texi (File Notifications): Remove file-notify-supported-p.
|
||||
|
||||
2013-07-24 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* eval.texi (Special Forms): Mention 'lambda'. Also, say that
|
||||
non-well-formed expressions result in unspecified behavior, though
|
||||
Emacs will not crash.
|
||||
|
||||
2013-07-22 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* files.texi (Magic File Names): Add file-notify-add-watch,
|
||||
file-notify-rm-watch and file-notify-supported-p. Move
|
||||
file-remote-p down.
|
||||
|
||||
* errors.texi (Standard Errors): Add file-notify-error.
|
||||
|
||||
* os.texi (Desktop Notifications): Rename from Notifications.
|
||||
(File Notifications): New node.
|
||||
|
||||
* elisp.texi (Top): Update menu for these changes.
|
||||
|
||||
2013-07-19 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* windows.texi (Display Action Functions): Mention next-window.
|
||||
|
@ -1054,7 +1127,7 @@
|
|||
* display.texi (Face Attributes): Copyedits. Add a few cindex entries.
|
||||
Overlining no longer behaves exactly like underlining.
|
||||
|
||||
2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com>
|
||||
2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com>
|
||||
|
||||
* display.texi (Face Attributes):
|
||||
Document wave-style underline face attribute.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Makefile for the GNU Emacs Lisp Reference Manual.
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1990-1996, 1998-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -890,9 +890,8 @@ argument @var{data} is a list of additional Lisp objects relevant to
|
|||
the circumstances of the error.
|
||||
|
||||
The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol
|
||||
bearing a property @code{error-conditions} whose value is a list of
|
||||
condition names. This is how Emacs Lisp classifies different sorts of
|
||||
errors. @xref{Error Symbols}, for a description of error symbols,
|
||||
defined with @code{define-error}. This is how Emacs Lisp classifies different
|
||||
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
|
||||
|
@ -1118,8 +1117,8 @@ Here are examples of handlers:
|
|||
@end example
|
||||
|
||||
Each error that occurs has an @dfn{error symbol} that describes what
|
||||
kind of error it is. The @code{error-conditions} property of this
|
||||
symbol is a list of condition names (@pxref{Error Symbols}). Emacs
|
||||
kind of error it is, and which describes also a list of condition names
|
||||
(@pxref{Error Symbols}). Emacs
|
||||
searches all the active @code{condition-case} forms for a handler that
|
||||
specifies one or more of these condition names; the innermost matching
|
||||
@code{condition-case} handles the error. Within this
|
||||
|
@ -1259,6 +1258,7 @@ should be robust if one does occur. Note that this macro uses
|
|||
@cindex condition name
|
||||
@cindex user-defined error
|
||||
@kindex error-conditions
|
||||
@kindex define-error
|
||||
|
||||
When you signal an error, you specify an @dfn{error symbol} to specify
|
||||
the kind of error you have in mind. Each error has one and only one
|
||||
|
@ -1275,42 +1275,38 @@ Thus, each error has one or more condition names: @code{error}, the
|
|||
error symbol if that is distinct from @code{error}, and perhaps some
|
||||
intermediate classifications.
|
||||
|
||||
In order for a symbol to be an error symbol, it must have an
|
||||
@code{error-conditions} property which gives a list of condition names.
|
||||
This list defines the conditions that this kind of error belongs to.
|
||||
(The error symbol itself, and the symbol @code{error}, should always be
|
||||
members of this list.) Thus, the hierarchy of condition names is
|
||||
defined by the @code{error-conditions} properties of the error symbols.
|
||||
Because quitting is not considered an error, the value of the
|
||||
@code{error-conditions} property of @code{quit} is just @code{(quit)}.
|
||||
@defun define-error name message &optional parent
|
||||
In order for a symbol to be an error symbol, it must be defined with
|
||||
@code{define-error} which takes a parent condition (defaults to @code{error}).
|
||||
This parent defines the conditions that this kind of error belongs to.
|
||||
The transitive set of parents always includes the error symbol itself, and the
|
||||
symbol @code{error}. Because quitting is not considered an error, the set of
|
||||
parents of @code{quit} is just @code{(quit)}.
|
||||
@end defun
|
||||
|
||||
@cindex peculiar error
|
||||
In addition to the @code{error-conditions} list, the error symbol
|
||||
should have an @code{error-message} property whose value is a string to
|
||||
be printed when that error is signaled but not handled. If the
|
||||
error symbol has no @code{error-message} property or if the
|
||||
@code{error-message} property exists, but is not a string, the error
|
||||
message @samp{peculiar error} is used. @xref{Definition of signal}.
|
||||
In addition to its parents, the error symbol has a @var{message} which
|
||||
is a string to be printed when that error is signaled but not handled. If that
|
||||
message is not valid, the error message @samp{peculiar error} is used.
|
||||
@xref{Definition of signal}.
|
||||
|
||||
Internally, the set of parents is stored in the @code{error-conditions}
|
||||
property of the error symbol and the message is stored in the
|
||||
@code{error-message} property of the error symbol.
|
||||
|
||||
Here is how we define a new error symbol, @code{new-error}:
|
||||
|
||||
@example
|
||||
@group
|
||||
(put 'new-error
|
||||
'error-conditions
|
||||
'(error my-own-errors new-error))
|
||||
@result{} (error my-own-errors new-error)
|
||||
@end group
|
||||
@group
|
||||
(put 'new-error 'error-message "A new error")
|
||||
@result{} "A new error"
|
||||
(define-error 'new-error "A new error" 'my-own-errors)
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This error has three condition names: @code{new-error}, the narrowest
|
||||
This error has several condition names: @code{new-error}, the narrowest
|
||||
classification; @code{my-own-errors}, which we imagine is a wider
|
||||
classification; and @code{error}, which is the widest of all.
|
||||
classification; and all the conditions of @code{my-own-errors} which should
|
||||
include @code{error}, which is the widest of all.
|
||||
|
||||
The error string should start with a capital letter but it should
|
||||
not end with a period. This is for consistency with the rest of Emacs.
|
||||
|
@ -1326,7 +1322,7 @@ your code can do this:
|
|||
@end group
|
||||
@end example
|
||||
|
||||
This error can be handled through any of the three condition names.
|
||||
This error can be handled through any of its condition names.
|
||||
This example handles @code{new-error} and any other errors in the class
|
||||
@code{my-own-errors}:
|
||||
|
||||
|
|
|
@ -217,9 +217,9 @@ over the @code{line-prefix} variable. @xref{Special Properties}.
|
|||
continuation to display them, computing the continuation lines can
|
||||
make redisplay slow. The column computation and indentation functions
|
||||
also become slow. Then you might find it advisable to set
|
||||
@code{cache-long-line-scans} to @code{t}.
|
||||
@code{cache-long-scans} to @code{t}.
|
||||
|
||||
@defvar cache-long-line-scans
|
||||
@defvar cache-long-scans
|
||||
If this variable is non-@code{nil}, various indentation and motion
|
||||
functions, and Emacs redisplay, cache the results of scanning the
|
||||
buffer, and consult the cache to avoid rescanning regions of the buffer
|
||||
|
@ -1243,6 +1243,7 @@ Type RET when done reading
|
|||
@node Overlays
|
||||
@section Overlays
|
||||
@cindex overlays
|
||||
@c FIXME: mention intervals in this section?
|
||||
|
||||
You can use @dfn{overlays} to alter the appearance of a buffer's text on
|
||||
the screen, for the sake of presentation features. An overlay is an
|
||||
|
@ -2738,6 +2739,7 @@ differently from the default face.
|
|||
@end defun
|
||||
|
||||
@cindex face alias
|
||||
@cindex alias, for faces
|
||||
A @dfn{face alias} provides an equivalent name for a face. You can
|
||||
define a face alias by giving the alias symbol the @code{face-alias}
|
||||
property, with a value of the target face name. The following example
|
||||
|
|
|
@ -1132,14 +1132,14 @@ from the macro definition with @code{def-edebug-spec}. Adding
|
|||
definitions in Lisp, but @code{def-edebug-spec} makes it possible to
|
||||
define Edebug specifications for special forms implemented in C.
|
||||
|
||||
@deffn Macro def-edebug-spec macro specification
|
||||
@defmac def-edebug-spec macro specification
|
||||
Specify which expressions of a call to macro @var{macro} are forms to be
|
||||
evaluated. @var{specification} should be the edebug specification.
|
||||
Neither argument is evaluated.
|
||||
|
||||
The @var{macro} argument can actually be any symbol, not just a macro
|
||||
name.
|
||||
@end deffn
|
||||
@end defmac
|
||||
|
||||
Here is a table of the possibilities for @var{specification} and how each
|
||||
directs processing of arguments.
|
||||
|
|
|
@ -1194,6 +1194,7 @@ Text Properties
|
|||
Non-@acronym{ASCII} Characters
|
||||
|
||||
* Text Representations:: How Emacs represents text.
|
||||
* Disabling Multibyte:: Controlling whether to use multibyte characters.
|
||||
* Converting Representations:: Converting unibyte to multibyte and vice versa.
|
||||
* Selecting a Representation:: Treating a byte sequence as unibyte or multi.
|
||||
* Character Codes:: How unibyte and multibyte relate to
|
||||
|
@ -1482,7 +1483,8 @@ Operating System Interface
|
|||
* Batch Mode:: Running Emacs without terminal interaction.
|
||||
* Session Management:: Saving and restoring state with
|
||||
X Session Management.
|
||||
* Notifications:: Desktop notifications.
|
||||
* Desktop Notifications:: Desktop notifications.
|
||||
* File Notifications:: File notifications.
|
||||
* Dynamic Libraries:: On-demand loading of support libraries.
|
||||
|
||||
Starting Up Emacs
|
||||
|
|
|
@ -7,12 +7,11 @@
|
|||
@appendix Standard Errors
|
||||
@cindex standard errors
|
||||
|
||||
Here is a list of the more important error symbols in standard Emacs,
|
||||
grouped by concept. The list includes each symbol's message (on the
|
||||
@code{error-message} property of the symbol) and a cross reference to a
|
||||
description of how the error can occur.
|
||||
Here is a list of the more important error symbols in standard Emacs, grouped
|
||||
by concept. The list includes each symbol's message and a cross reference
|
||||
to a description of how the error can occur.
|
||||
|
||||
Each error symbol has an @code{error-conditions} property that is a
|
||||
Each error symbol has an set of parent error conditions that is a
|
||||
list of symbols. Normally this list includes the error symbol itself
|
||||
and the symbol @code{error}. Occasionally it includes additional
|
||||
symbols, which are intermediate classifications, narrower than
|
||||
|
@ -24,8 +23,6 @@ conditions, that means it has none.
|
|||
As a special exception, the error symbol @code{quit} does not have the
|
||||
condition @code{error}, because quitting is not considered an error.
|
||||
|
||||
@c You can grep for "(put 'foo 'error-conditions ...) to find
|
||||
@c examples defined in Lisp. E.g., soap-client.el, sasl.el.
|
||||
Most of these error symbols are defined in C (mainly @file{data.c}),
|
||||
but some are defined in Lisp. For example, the file @file{userlock.el}
|
||||
defines the @code{file-locked} and @code{file-supersession} errors.
|
||||
|
@ -123,6 +120,11 @@ This is a subcategory of @code{file-error}. @xref{File Locks}.
|
|||
@item file-supersession
|
||||
This is a subcategory of @code{file-error}. @xref{Modification Time}.
|
||||
|
||||
@c filenotify.el
|
||||
@item file-notify-error
|
||||
This is a subcategory of @code{file-error}. It happens, when a file
|
||||
could not be watched for changes. @xref{File Notifications}.
|
||||
|
||||
@c net/ange-ftp.el
|
||||
@item ftp-error
|
||||
This is a subcategory of @code{file-error}, which results from
|
||||
|
|
|
@ -432,6 +432,14 @@ do.
|
|||
and which are used without evaluation. Whether a particular argument is
|
||||
evaluated may depend on the results of evaluating other arguments.
|
||||
|
||||
If an expression's first symbol is that of a special form, the
|
||||
expression should follow the rules of that special form; otherwise,
|
||||
Emacs's behavior is not well-defined (though it will not crash). For
|
||||
example, @code{((lambda (x) x . 3) 4)} contains a subexpression that
|
||||
begins with @code{lambda} but is not a well-formed @code{lambda}
|
||||
expression, so Emacs may signal an error, or may return 3 or 4 or
|
||||
@code{nil}, or may behave in other ways.
|
||||
|
||||
Here is a list, in alphabetical order, of all of the special forms in
|
||||
Emacs Lisp with a reference to where each is described.
|
||||
|
||||
|
@ -463,6 +471,9 @@ Emacs Lisp with a reference to where each is described.
|
|||
@item interactive
|
||||
@pxref{Interactive Call}
|
||||
|
||||
@item lambda
|
||||
@pxref{Lambda Expressions}
|
||||
|
||||
@item let
|
||||
@itemx let*
|
||||
@pxref{Local Variables}
|
||||
|
|
|
@ -2772,16 +2772,17 @@ first, before handlers for jobs such as remote file access.
|
|||
@code{file-equal-p},
|
||||
@code{file-executable-p}, @code{file-exists-p},
|
||||
@code{file-in-directory-p},
|
||||
@code{file-local-copy}, @code{file-remote-p},
|
||||
@code{file-local-copy},
|
||||
@code{file-modes}, @code{file-name-all-completions},
|
||||
@code{file-name-as-directory},
|
||||
@code{file-name-completion},
|
||||
@code{file-name-directory},
|
||||
@code{file-name-nondirectory},
|
||||
@code{file-name-sans-versions}, @code{file-newer-than-file-p},
|
||||
@code{file-notify-add-watch}, @code{file-notify-rm-watch},
|
||||
@code{file-ownership-preserved-p},
|
||||
@code{file-readable-p}, @code{file-regular-p},
|
||||
@code{file-selinux-context},
|
||||
@code{file-remote-p}, @code{file-selinux-context},
|
||||
@code{file-symlink-p}, @code{file-truename}, @code{file-writable-p},
|
||||
@code{find-backup-file-name},
|
||||
@c Not sure why it was here: @code{find-file-noselect},@*
|
||||
|
@ -2820,20 +2821,21 @@ first, before handlers for jobs such as remote file access.
|
|||
@code{file-accessible-direc@discretionary{}{}{}tory-p},
|
||||
@code{file-acl},
|
||||
@code{file-attributes},
|
||||
@code{file-direct@discretionary{}{}{}ory-p},
|
||||
@code{file-direc@discretionary{}{}{}tory-p},
|
||||
@code{file-equal-p},
|
||||
@code{file-executable-p}, @code{file-exists-p},
|
||||
@code{file-in-directory-p},
|
||||
@code{file-local-copy}, @code{file-remote-p},
|
||||
@code{file-local-copy},
|
||||
@code{file-modes}, @code{file-name-all-completions},
|
||||
@code{file-name-as-directory},
|
||||
@code{file-name-completion},
|
||||
@code{file-name-directory},
|
||||
@code{file-name-nondirec@discretionary{}{}{}tory},
|
||||
@code{file-name-sans-versions}, @code{file-newer-than-file-p},
|
||||
@code{file-notify-add-watch}, @code{file-notify-rm-watch},
|
||||
@code{file-ownership-pre@discretionary{}{}{}served-p},
|
||||
@code{file-readable-p}, @code{file-regular-p},
|
||||
@code{file-selinux-context},
|
||||
@code{file-remote-p}, @code{file-selinux-context},
|
||||
@code{file-symlink-p}, @code{file-truename}, @code{file-writable-p},
|
||||
@code{find-backup-file-name},
|
||||
@c Not sure why it was here: @code{find-file-noselect},
|
||||
|
|
|
@ -446,7 +446,7 @@ default parameters by supplying their own parameters.
|
|||
If you invoke Emacs with command-line options that specify frame
|
||||
appearance, those options take effect by adding elements to either
|
||||
@code{initial-frame-alist} or @code{default-frame-alist}. Options
|
||||
which affect just the initial frame, such as @samp{-geometry} and
|
||||
which affect just the initial frame, such as @samp{--geometry} and
|
||||
@samp{--maximized}, add to @code{initial-frame-alist}; the others add
|
||||
to @code{default-frame-alist}. @pxref{Emacs Invocation,, Command Line
|
||||
Arguments for Emacs Invocation, emacs, The GNU Emacs Manual}.
|
||||
|
|
|
@ -580,6 +580,7 @@ redefinition from unintentional redefinition.
|
|||
@end defmac
|
||||
|
||||
@cindex function aliases
|
||||
@cindex alias, for functions
|
||||
@defun defalias name definition &optional doc
|
||||
@anchor{Definition of defalias}
|
||||
This function defines the symbol @var{name} as a function, with
|
||||
|
|
|
@ -13,6 +13,7 @@ how they are stored in strings and buffers.
|
|||
|
||||
@menu
|
||||
* Text Representations:: How Emacs represents text.
|
||||
* Disabling Multibyte:: Controlling whether to use multibyte characters.
|
||||
* Converting Representations:: Converting unibyte to multibyte and vice versa.
|
||||
* Selecting a Representation:: Treating a byte sequence as unibyte or multi.
|
||||
* Character Codes:: How unibyte and multibyte relate to
|
||||
|
@ -140,6 +141,55 @@ This function concatenates all its argument @var{bytes} and makes the
|
|||
result a unibyte string.
|
||||
@end defun
|
||||
|
||||
@node Disabling Multibyte
|
||||
@section Disabling Multibyte Characters
|
||||
@cindex disabling multibyte
|
||||
|
||||
By default, Emacs starts in multibyte mode: it stores the contents
|
||||
of buffers and strings using an internal encoding that represents
|
||||
non-@acronym{ASCII} characters using multi-byte sequences. Multibyte
|
||||
mode allows you to use all the supported languages and scripts without
|
||||
limitations.
|
||||
|
||||
@cindex turn multibyte support on or off
|
||||
Under very special circumstances, you may want to disable multibyte
|
||||
character support, for a specific buffer.
|
||||
When multibyte characters are disabled in a buffer, we call
|
||||
that @dfn{unibyte mode}. In unibyte mode, each character in the
|
||||
buffer has a character code ranging from 0 through 255 (0377 octal); 0
|
||||
through 127 (0177 octal) represent @acronym{ASCII} characters, and 128
|
||||
(0200 octal) through 255 (0377 octal) represent non-@acronym{ASCII}
|
||||
characters.
|
||||
|
||||
To edit a particular file in unibyte representation, visit it using
|
||||
@code{find-file-literally}. @xref{Visiting Functions}. You can
|
||||
convert a multibyte buffer to unibyte by saving it to a file, killing
|
||||
the buffer, and visiting the file again with
|
||||
@code{find-file-literally}. Alternatively, you can use @kbd{C-x
|
||||
@key{RET} c} (@code{universal-coding-system-argument}) and specify
|
||||
@samp{raw-text} as the coding system with which to visit or save a
|
||||
file. @xref{Text Coding, , Specifying a Coding System for File Text,
|
||||
emacs, GNU Emacs Manual}. Unlike @code{find-file-literally}, finding
|
||||
a file as @samp{raw-text} doesn't disable format conversion,
|
||||
uncompression, or auto mode selection.
|
||||
|
||||
@c See http://debbugs.gnu.org/11226 for lack of unibyte tooltip.
|
||||
@vindex enable-multibyte-characters
|
||||
The buffer-local variable @code{enable-multibyte-characters} is
|
||||
non-@code{nil} in multibyte buffers, and @code{nil} in unibyte ones.
|
||||
The mode line also indicates whether a buffer is multibyte or not.
|
||||
With a graphical display, in a multibyte buffer, the portion of the
|
||||
mode line that indicates the character set has a tooltip that (amongst
|
||||
other things) says that the buffer is multibyte. In a unibyte buffer,
|
||||
the character set indicator is absent. Thus, in a unibyte buffer
|
||||
(when using a graphical display) there is normally nothing before the
|
||||
indication of the visited file's end-of-line convention (colon,
|
||||
backslash, etc.), unless you are using an input method.
|
||||
|
||||
@findex toggle-enable-multibyte-characters
|
||||
You can turn off multibyte support in a specific buffer by invoking the
|
||||
command @code{toggle-enable-multibyte-characters} in that buffer.
|
||||
|
||||
@node Converting Representations
|
||||
@section Converting Text Representations
|
||||
|
||||
|
@ -962,6 +1012,7 @@ The value of the @code{:mime-charset} property is also defined
|
|||
as an alias for the coding system.
|
||||
@end defun
|
||||
|
||||
@cindex alias, for coding systems
|
||||
@defun coding-system-aliases coding-system
|
||||
This function returns the list of aliases of @var{coding-system}.
|
||||
@end defun
|
||||
|
|
|
@ -34,7 +34,8 @@ terminal and the screen.
|
|||
* X11 Keysyms:: Operating on key symbols for X Windows.
|
||||
* Batch Mode:: Running Emacs without terminal interaction.
|
||||
* Session Management:: Saving and restoring state with X Session Management.
|
||||
* Notifications:: Desktop notifications.
|
||||
* Desktop Notifications:: Desktop notifications.
|
||||
* File Notifications:: File notifications.
|
||||
* Dynamic Libraries:: On-demand loading of support libraries.
|
||||
@end menu
|
||||
|
||||
|
@ -2270,7 +2271,7 @@ Emacs is restarted by the session manager.
|
|||
@end group
|
||||
@end example
|
||||
|
||||
@node Notifications
|
||||
@node Desktop Notifications
|
||||
@section Desktop Notifications
|
||||
@cindex desktop notifications
|
||||
|
||||
|
@ -2510,6 +2511,156 @@ If @var{SPEC_VERSION} is @code{nil}, the server supports a
|
|||
specification prior to @samp{"1.0"}.
|
||||
@end defun
|
||||
|
||||
@node File Notifications
|
||||
@section Notifications on File Changes
|
||||
@cindex file notifications
|
||||
|
||||
Several operating systems support watching of filesystems for changes
|
||||
of files. If configured properly, Emacs links a respective library
|
||||
like @file{gfilenotify}, @file{inotify}, or @file{w32notify}
|
||||
statically. These libraries enable watching of filesystems on the
|
||||
local machine.
|
||||
|
||||
It is also possible to watch filesystems on remote machines,
|
||||
@pxref{Remote Files,, Remote Files, emacs, The GNU Emacs Manual}
|
||||
This does not depend on one of the libraries linked to Emacs.
|
||||
|
||||
Since all these libraries emit different events on notified file
|
||||
changes, there is the Emacs library @code{filenotify} which provides a
|
||||
unique interface.
|
||||
|
||||
@defun file-notify-add-watch file flags callback
|
||||
Add a watch for filesystem events pertaining to @var{file}. This
|
||||
arranges for filesystem events pertaining to @var{file} to be reported
|
||||
to Emacs.
|
||||
|
||||
The returned value is a descriptor for the added watch. Its type
|
||||
depends on the underlying library, it cannot be assumed to be an
|
||||
integer as in the example below. It should be used for comparison by
|
||||
@code{equal} only.
|
||||
|
||||
If the @var{file} cannot be watched for some reason, this function
|
||||
signals a @code{file-notify-error} error.
|
||||
|
||||
Sometimes, mounted filesystems cannot be watched for file changes.
|
||||
This is not detected by this function, a non-@code{nil} return value
|
||||
does not guarantee that changes on @var{file} will be notified.
|
||||
|
||||
@var{flags} is a list of conditions to set what will be watched for.
|
||||
It can include the following symbols:
|
||||
|
||||
@table @code
|
||||
@item change
|
||||
watch for file changes
|
||||
@item attribute-change
|
||||
watch for file attribute changes, like permissions or modification
|
||||
time
|
||||
@end table
|
||||
|
||||
If @var{file} is a directory, changes for all files in that directory
|
||||
will be notified. This does not work recursively.
|
||||
|
||||
When any event happens, Emacs will call the @var{callback} function
|
||||
passing it a single argument @var{event}, which is of the form
|
||||
|
||||
@lisp
|
||||
(@var{descriptor} @var{action} @var{file} [@var{file1}])
|
||||
@end lisp
|
||||
|
||||
@var{descriptor} is the same object as the one returned by this
|
||||
function. @var{action} is the description of the event. It could be
|
||||
any one of the following symbols:
|
||||
|
||||
@table @code
|
||||
@item created
|
||||
@var{file} was created
|
||||
@item deleted
|
||||
@var{file} was deleted
|
||||
@item changed
|
||||
@var{file} has changed
|
||||
@item renamed
|
||||
@var{file} has been renamed to @var{file1}
|
||||
@item attribute-changed
|
||||
a @var{file} attribute was changed
|
||||
@end table
|
||||
|
||||
@var{file} and @var{file1} are the name of the file(s) whose event is
|
||||
being reported. For example:
|
||||
|
||||
@example
|
||||
@group
|
||||
(require 'filenotify)
|
||||
@result{} filenotify
|
||||
@end group
|
||||
|
||||
@group
|
||||
(defun my-notify-callback (event)
|
||||
(message "Event %S" event))
|
||||
@result{} my-notify-callback
|
||||
@end group
|
||||
|
||||
@group
|
||||
(file-notify-add-watch
|
||||
"/tmp" '(change attribute-change) 'my-notify-callback)
|
||||
@result{} 35025468
|
||||
@end group
|
||||
|
||||
@group
|
||||
(write-region "foo" nil "/tmp/foo")
|
||||
@result{} Event (35025468 created "/tmp/.#foo")
|
||||
Event (35025468 created "/tmp/foo")
|
||||
Event (35025468 changed "/tmp/foo")
|
||||
Event (35025468 deleted "/tmp/.#foo")
|
||||
@end group
|
||||
|
||||
@group
|
||||
(write-region "bla" nil "/tmp/foo")
|
||||
@result{} Event (35025468 created "/tmp/.#foo")
|
||||
Event (35025468 changed "/tmp/foo") [2 times]
|
||||
Event (35025468 deleted "/tmp/.#foo")
|
||||
@end group
|
||||
|
||||
@group
|
||||
(set-file-modes "/tmp/foo" (default-file-modes))
|
||||
@result{} Event (35025468 attribute-changed "/tmp/foo")
|
||||
@end group
|
||||
@end example
|
||||
|
||||
Whether the action @code{renamed} is returned, depends on the used
|
||||
watch library. It can be expected, when a directory is watched, and
|
||||
both @var{file} and @var{file1} belong to this directory. Otherwise,
|
||||
the actions @code{deleted} and @code{created} could be returned in a
|
||||
random order.
|
||||
|
||||
@example
|
||||
@group
|
||||
(rename-file "/tmp/foo" "/tmp/bla")
|
||||
@result{} Event (35025468 renamed "/tmp/foo" "/tmp/bla")
|
||||
@end group
|
||||
|
||||
@group
|
||||
(file-notify-add-watch
|
||||
"/var/tmp" '(change attribute-change) 'my-notify-callback)
|
||||
@result{} 35025504
|
||||
@end group
|
||||
|
||||
@group
|
||||
(rename-file "/tmp/bla" "/var/tmp/bla")
|
||||
@result{} ;; gfilenotify
|
||||
Event (35025468 renamed "/tmp/bla" "/var/tmp/bla")
|
||||
|
||||
@result{} ;; inotify
|
||||
Event (35025504 created "/var/tmp/bla")
|
||||
Event (35025468 deleted "/tmp/bla")
|
||||
@end group
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@defun file-notify-rm-watch descriptor
|
||||
Removes an existing file watch specified by its @var{descriptor}.
|
||||
@var{descriptor} should be an object returned by
|
||||
@code{file-notify-add-watch}.
|
||||
@end defun
|
||||
|
||||
@node Dynamic Libraries
|
||||
@section Dynamically Loaded Libraries
|
||||
|
|
|
@ -483,7 +483,7 @@ Display}.
|
|||
These functions scan text to determine where screen lines break, and
|
||||
thus take time proportional to the distance scanned. If you intend to
|
||||
use them heavily, Emacs provides caches which may improve the
|
||||
performance of your code. @xref{Truncation, cache-long-line-scans}.
|
||||
performance of your code. @xref{Truncation, cache-long-scans}.
|
||||
|
||||
@defun vertical-motion count &optional window
|
||||
This function moves point to the start of the screen line @var{count}
|
||||
|
|
|
@ -1838,6 +1838,7 @@ updates this list.
|
|||
@node Variable Aliases
|
||||
@section Variable Aliases
|
||||
@cindex variable aliases
|
||||
@cindex alias, for variables
|
||||
|
||||
It is sometimes useful to make two variables synonyms, so that both
|
||||
variables always have the same value, and changing either one also
|
||||
|
|
|
@ -2244,8 +2244,9 @@ window and defaults to the selected one.
|
|||
|
||||
Each list element has the form @code{(@var{buffer} @var{window-start}
|
||||
@var{window-pos})}, where @var{buffer} is a buffer previously shown in
|
||||
the window, @var{window-start} is the window start position when that
|
||||
buffer was last shown, and @var{window-pos} is the point position when
|
||||
the window, @var{window-start} is the window start position
|
||||
(@pxref{Window Start and End}) when that buffer was last shown, and
|
||||
@var{window-pos} is the point position (@pxref{Window Point}) when
|
||||
that buffer was last shown in @var{window}.
|
||||
|
||||
The list is ordered so that earlier elements correspond to more
|
||||
|
@ -2328,10 +2329,11 @@ same frame. The following option can be used to override this behavior.
|
|||
@defopt switch-to-visible-buffer
|
||||
If this variable is non-@code{nil}, @code{switch-to-prev-buffer} and
|
||||
@code{switch-to-next-buffer} may switch to a buffer that is already
|
||||
visible on the same frame, provided the buffer was shown in the relevant
|
||||
window before. If it is @code{nil}, @code{switch-to-prev-buffer} and
|
||||
@code{switch-to-next-buffer} always try to avoid switching to a buffer
|
||||
that is already visible in another window on the same frame.
|
||||
visible on the same frame, provided the buffer was shown in the
|
||||
relevant window before. If it is @code{nil},
|
||||
@code{switch-to-prev-buffer} and @code{switch-to-next-buffer} always
|
||||
try to avoid switching to a buffer that is already visible in another
|
||||
window on the same frame. The default is @code{t}.
|
||||
@end defopt
|
||||
|
||||
|
||||
|
@ -2362,6 +2364,7 @@ showing another buffer in that frame's only window. The function
|
|||
@code{replace-buffer-in-windows} (@pxref{Buffers and Windows}) which is
|
||||
called when a buffer gets killed, deletes the window in case (1) and
|
||||
behaves like @code{delete-windows-on} otherwise.
|
||||
@c FIXME: Does replace-buffer-in-windows _delete_ a window in case (1)?
|
||||
|
||||
When @code{bury-buffer} (@pxref{The Buffer List}) operates on the
|
||||
selected window (which shows the buffer that shall be buried), it
|
||||
|
@ -2566,6 +2569,7 @@ so @code{window-point} will stay behind text inserted there.
|
|||
@node Window Start and End
|
||||
@section The Window Start and End Positions
|
||||
@cindex window start position
|
||||
@cindex display-start position
|
||||
|
||||
Each window maintains a marker used to keep track of a buffer position
|
||||
that specifies where in the buffer display should start. This position
|
||||
|
@ -3191,6 +3195,7 @@ The value returned is @var{columns}.
|
|||
Here is how you can determine whether a given position @var{position}
|
||||
is off the screen due to horizontal scrolling:
|
||||
|
||||
@c FIXME: Maybe hscroll-on-screen-p is a better name?
|
||||
@example
|
||||
@group
|
||||
(defun hscroll-on-screen (window position)
|
||||
|
|
|
@ -1,3 +1,123 @@
|
|||
2013-08-10 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* ido.texi (Working Directories):
|
||||
(Flexible Matching, Regexp Matching, Find File At Point)
|
||||
(Ignoring, Misc Customization): Use @defopt for user options.
|
||||
|
||||
2013-08-09 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* htmlfontify.texi (Customization): Remove documentation of
|
||||
`hfy-fast-lock-save'. Minor fixes.
|
||||
|
||||
2013-08-08 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* ido.texi (Top): Insert node "Working Directories" in menu.
|
||||
(Working Directories): New node.
|
||||
(Misc Customization): Add documentation of
|
||||
`ido-confirm-unique-completion' and some other user options.
|
||||
|
||||
2013-08-07 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* todo-mode.texi: Update @dircategory.
|
||||
(Overview, Todo Items as Diary Entries, Todo Mode Entry Points)
|
||||
(File Editing, Marked Items, Item Prefix): Fix usage of @xref and
|
||||
@ref.
|
||||
|
||||
2013-08-07 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* sc.texi (Introduction): Fix index.
|
||||
(Usage Overview):
|
||||
(Citations, Citation Elements, Recognizing Citations)
|
||||
(Information Keys and the Info Alist, Reference Headers)
|
||||
(The Built-in Header Rewrite Functions)
|
||||
(Electric References, Reply Buffer Initialization)
|
||||
(Filling Cited Text, Selecting an Attribution)
|
||||
(Attribution Preferences)
|
||||
(Anonymous Attributions, Author Names)
|
||||
(Using Regi, Post-yank Formatting Commands)
|
||||
(Citing Commands, Insertion Commands)
|
||||
(Mail Field Commands)
|
||||
(Hints to MUA Authors, Thanks and History): Change from one space
|
||||
between sentences to two.
|
||||
(What Supercite Does): Typo fix.
|
||||
|
||||
* newsticker.texi (Usage): Use @key for RET.
|
||||
|
||||
* cl.texi (Argument Lists):
|
||||
(For Clauses):
|
||||
(Macros): Add indexes.
|
||||
|
||||
2013-08-05 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* cl.texi (Blocks and Exits): Add an index.
|
||||
|
||||
2013-08-04 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
* Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add todo-mode.
|
||||
(todo-mode, $(buildinfodir)/todo-mode$(INFO_EXT)):
|
||||
(todo-mode.dvi, todo-mode.pdf): New rules.
|
||||
|
||||
* todo-mode.texi: New file.
|
||||
|
||||
2013-08-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* gnus.texi (Basic Usage): Mention that warp means jump here.
|
||||
(The notmuch Engine): Mention notmuch.
|
||||
|
||||
2013-07-30 Tassilo Horn <tsdh@gnu.org>
|
||||
|
||||
* gnus.texi (Sorting the Summary Buffer): Document new defcustom
|
||||
`gnus-subthread-sort-functions' and remove the obsolete documentation
|
||||
of `gnus-sort-threads-recursively'.
|
||||
|
||||
2013-07-29 David Engster <deng@randomsample.de>
|
||||
|
||||
* eieio.texi (top): Make clear that EIEIO is not a full CLOS
|
||||
implementation.
|
||||
(Introduction): Add further missing features.
|
||||
(Building Classes): Add introductory paragraph.
|
||||
(Wish List): Add metaclasses and EQL specialization.
|
||||
|
||||
2013-07-29 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* tramp.texi (Frequently Asked Questions): Mention
|
||||
`tramp-use-ssh-controlmaster-options'.
|
||||
|
||||
2013-07-26 Tassilo Horn <tsdh@gnu.org>
|
||||
|
||||
* gnus.texi (Sorting the Summary Buffer): Document new defcustom
|
||||
`gnus-sort-threads-recursively'.
|
||||
|
||||
2013-07-25 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add ido.
|
||||
(ido, $(buildinfodir)/ido$(INFO_EXT), ido.dvi, ido.pdf): New rules.
|
||||
|
||||
* erc.texi (Special Features): Update contact information.
|
||||
(History): Avoid using @email.
|
||||
|
||||
* eshell.texi (Bugs and ideas): Minor updates.
|
||||
|
||||
* faq.texi (Reporting bugs, Origin of the term Emacs)
|
||||
(Setting up a customization file)
|
||||
(Using an already running Emacs process, Turning off beeping)
|
||||
(Packages that do not come with Emacs)
|
||||
(Replying to the sender of a message): Avoid using @email.
|
||||
|
||||
* pcl-cvs.texi (Contributors, Bugs): Avoid using @email.
|
||||
|
||||
* reftex.texi (Imprint): Avoid using @email.
|
||||
|
||||
* ses.texi (Top): Update bug reporting instructions.
|
||||
(Acknowledgments): Avoid using @email.
|
||||
|
||||
* woman.texi (Introduction, Background): Remove outdated information.
|
||||
(Bugs, Acknowledgments): Avoid using @email.
|
||||
|
||||
2013-07-24 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* ido.texi: New file.
|
||||
|
||||
2013-07-19 Geoff Kuenning <geoff@cs.hmc.edu> (tiny change)
|
||||
|
||||
* gnus.texi (Customizing Articles): Document function predicates.
|
||||
|
@ -126,7 +246,7 @@
|
|||
|
||||
2013-05-25 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* flymake.texi: Changing from one space between sentences to two.
|
||||
* flymake.texi: Change from one space between sentences to two.
|
||||
|
||||
2013-05-04 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
|
@ -1092,7 +1212,7 @@
|
|||
corresponding function names, according to
|
||||
`org-agenda-view-mode-dispatch'.
|
||||
|
||||
2012-09-30 Jan Bäcker <jan.boecker@jboecker.de>
|
||||
2012-09-30 Jan Böcker <jan.boecker@jboecker.de>
|
||||
|
||||
* org.texi (The spreadsheet): Fix typo.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#### Makefile for documentation other than the Emacs manual.
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1996-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -45,10 +45,10 @@ MAKEINFO_OPTS = --force -I$(emacsdir)
|
|||
INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \
|
||||
dbus dired-x ebrowse ede ediff edt eieio \
|
||||
emacs-mime epa erc ert eshell eudc efaq \
|
||||
flymake forms gnus emacs-gnutls htmlfontify idlwave info.info \
|
||||
flymake forms gnus emacs-gnutls htmlfontify idlwave ido info.info \
|
||||
mairix-el message mh-e newsticker nxml-mode \
|
||||
org pcl-cvs pgg rcirc remember reftex sasl \
|
||||
sc semantic ses sieve smtpmail speedbar srecode tramp \
|
||||
sc semantic ses sieve smtpmail speedbar srecode todo-mode tramp \
|
||||
url vip viper widget wisent woman
|
||||
|
||||
DVI_TARGETS = \
|
||||
|
@ -79,6 +79,7 @@ DVI_TARGETS = \
|
|||
emacs-gnutls.dvi \
|
||||
htmlfontify.dvi \
|
||||
idlwave.dvi \
|
||||
ido.dvi \
|
||||
info.dvi \
|
||||
mairix-el.dvi \
|
||||
message.dvi \
|
||||
|
@ -99,6 +100,7 @@ DVI_TARGETS = \
|
|||
smtpmail.dvi \
|
||||
speedbar.dvi \
|
||||
srecode.dvi \
|
||||
todo-mode.dvi \
|
||||
tramp.dvi \
|
||||
url.dvi \
|
||||
vip.dvi \
|
||||
|
@ -135,6 +137,7 @@ PDF_TARGETS = \
|
|||
htmlfontify.pdf \
|
||||
emacs-gnutls.pdf \
|
||||
idlwave.pdf \
|
||||
ido.pdf \
|
||||
info.pdf \
|
||||
mairix-el.pdf \
|
||||
message.pdf \
|
||||
|
@ -155,6 +158,7 @@ PDF_TARGETS = \
|
|||
smtpmail.pdf \
|
||||
speedbar.pdf \
|
||||
srecode.pdf \
|
||||
todo-mode.pdf \
|
||||
tramp.pdf \
|
||||
url.pdf \
|
||||
vip.pdf \
|
||||
|
@ -452,6 +456,15 @@ idlwave.dvi: ${srcdir}/idlwave.texi ${gfdl}
|
|||
idlwave.pdf: ${srcdir}/idlwave.texi ${gfdl}
|
||||
$(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi
|
||||
|
||||
ido : $(buildinfodir)/ido$(INFO_EXT)
|
||||
$(buildinfodir)/ido$(INFO_EXT): ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl}
|
||||
$(mkinfodir)
|
||||
$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ido.texi
|
||||
ido.dvi: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl}
|
||||
$(ENVADD) $(TEXI2DVI) ${srcdir}/ido.texi
|
||||
ido.pdf: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl}
|
||||
$(ENVADD) $(TEXI2PDF) ${srcdir}/ido.texi
|
||||
|
||||
# NB this one needs --no-split even without a .info extension.
|
||||
# Avoid name clash with overall "info" target.
|
||||
info.info : $(buildinfodir)/info$(INFO_EXT)
|
||||
|
@ -634,6 +647,15 @@ srecode.dvi: ${srcdir}/srecode.texi ${gfdl}
|
|||
srecode.pdf: ${srcdir}/srecode.texi ${gfdl}
|
||||
$(ENVADD) $(TEXI2PDF) ${srcdir}/srecode.texi
|
||||
|
||||
todo-mode : $(buildinfodir)/todo-mode$(INFO_EXT)
|
||||
$(buildinfodir)/todo-mode$(INFO_EXT): ${srcdir}/todo-mode.texi ${gfdl}
|
||||
$(mkinfodir)
|
||||
$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/todo-mode.texi
|
||||
todo-mode.dvi: ${srcdir}/todo-mode.texi ${gfdl}
|
||||
$(ENVADD) $(TEXI2DVI) ${srcdir}/todo-mode.texi
|
||||
todo-mode.pdf: ${srcdir}/todo-mode.texi ${gfdl}
|
||||
$(ENVADD) $(TEXI2PDF) ${srcdir}/todo-mode.texi
|
||||
|
||||
tramp : $(buildinfodir)/tramp$(INFO_EXT)
|
||||
$(buildinfodir)/tramp$(INFO_EXT): ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl}
|
||||
$(mkinfodir)
|
||||
|
|
|
@ -461,6 +461,7 @@ matter of stylistic taste:
|
|||
@var{body}))
|
||||
@end example
|
||||
|
||||
@cindex destructuring, in argument list
|
||||
Argument lists support @dfn{destructuring}. In Common Lisp,
|
||||
destructuring is only allowed with @code{defmacro}; this package
|
||||
allows it with @code{cl-defun} and other argument lists as well.
|
||||
|
@ -1492,6 +1493,7 @@ simply returning @code{nil}.
|
|||
|
||||
@node Blocks and Exits
|
||||
@section Blocks and Exits
|
||||
@cindex block
|
||||
|
||||
@noindent
|
||||
Common Lisp @dfn{blocks} provide a non-local exit mechanism very
|
||||
|
@ -2139,6 +2141,7 @@ that was just set by the previous clause; in the second loop,
|
|||
based on the value of @code{x} left over from the previous time
|
||||
through the loop.
|
||||
|
||||
@cindex destructuring, in cl-loop
|
||||
Another feature of the @code{cl-loop} macro is @emph{destructuring},
|
||||
similar in concept to the destructuring provided by @code{defmacro}
|
||||
(@pxref{Argument Lists}).
|
||||
|
@ -2503,6 +2506,8 @@ if @var{expr} returns a list of the wrong number of arguments
|
|||
or with incorrect keyword arguments.
|
||||
@end defmac
|
||||
|
||||
@cindex compiler macros
|
||||
@cindex define compiler macros
|
||||
This package also includes the Common Lisp @code{define-compiler-macro}
|
||||
facility, which allows you to define compile-time expansions and
|
||||
optimizations for your functions.
|
||||
|
|
|
@ -46,10 +46,10 @@ modify this GNU manual.''
|
|||
@comment node-name, next, previous, up
|
||||
@top EIEIO
|
||||
|
||||
@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is
|
||||
a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp.
|
||||
It provides a framework for writing object-oriented applications in
|
||||
Emacs.
|
||||
@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'')
|
||||
provides an Object Oriented layer for Emacs Lisp, following the basic
|
||||
concepts of the Common Lisp Object System (CLOS). It provides a
|
||||
framework for writing object-oriented applications in Emacs.
|
||||
|
||||
@ifnottex
|
||||
@insertcopying
|
||||
|
@ -201,8 +201,6 @@ Byte compilation support of methods.
|
|||
@item
|
||||
Help system extensions for classes and methods.
|
||||
@item
|
||||
Automatic texinfo documentation generator.
|
||||
@item
|
||||
Several base classes for interesting tasks.
|
||||
@item
|
||||
Simple test suite.
|
||||
|
@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS)
|
|||
Customization support in a class (extension to CLOS)
|
||||
@end enumerate
|
||||
|
||||
Here are some CLOS features that @eieio{} presently lacks:
|
||||
Here are some important CLOS features that @eieio{} presently lacks:
|
||||
|
||||
@table @asis
|
||||
@item Complete @code{defclass} tag support
|
||||
All CLOS tags are currently supported, but the following are not
|
||||
currently implemented correctly:
|
||||
|
||||
@table @code
|
||||
@item :metaclass
|
||||
There is only one base superclass for all @eieio{} classes, which is
|
||||
the @code{eieio-default-superclass}.
|
||||
@item :default-initargs
|
||||
@item Method dispatch
|
||||
EIEO does not support method dispatch for built-in types and multiple
|
||||
arguments types. In other words, method dispatch only looks at the
|
||||
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 `class-of' and
|
||||
`find-class', which should return instances of the metaclass, behave
|
||||
differently in @eieio{} in that they return symbols or plain structures
|
||||
instead.
|
||||
|
||||
@item EQL specialization
|
||||
EIEIO does not support it.
|
||||
|
||||
@item @code{:around} method tag
|
||||
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.
|
||||
@end table
|
||||
|
||||
@item Mock object initializers
|
||||
Each class contains a mock object used for fast initialization of
|
||||
|
@ -233,15 +242,23 @@ instantiated objects. Using functions with side effects on object slot
|
|||
values can potentially cause modifications in the mock object. @eieio{}
|
||||
should use a deep copy but currently does not.
|
||||
|
||||
@item @code{:around} method tag
|
||||
This CLOS method tag is non-functional.
|
||||
|
||||
@end table
|
||||
|
||||
@node Building Classes
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Building Classes
|
||||
|
||||
First off, please note that this manual cannot serve as a complete
|
||||
introduction to object oriented programming and generic functions in
|
||||
LISP. Although EIEIO is not a complete CLOS implementation and also
|
||||
differs from CLOS in several aspects, it follows the same basic
|
||||
concepts. Therefore, it is highly recommended to learn these from a
|
||||
textbook or tutorial first, especially if you only know OOP from
|
||||
languages like C++ or Java. If on the other hand you are already
|
||||
familiar with CLOS, you should be aware that @eieio{} does not implement
|
||||
the full CLOS specificiation and also differs in some other aspects
|
||||
(@xref{Introduction}, and @ref{CLOS compatibility}).
|
||||
|
||||
A @dfn{class} is a definition for organizing data and methods
|
||||
together. An @eieio{} class has structures similar to the classes
|
||||
found in other object-oriented (OO) languages.
|
||||
|
@ -1930,8 +1947,9 @@ Some important compatibility features that would be good to add are:
|
|||
|
||||
@enumerate
|
||||
@item
|
||||
Support for metaclasses and EQL specialization.
|
||||
@item
|
||||
@code{:around} method key.
|
||||
|
||||
@item
|
||||
Method dispatch for built-in types.
|
||||
@item
|
||||
|
|
|
@ -234,9 +234,8 @@ forwards.
|
|||
|
||||
Different channels and servers may have different language encodings.
|
||||
|
||||
In addition, it is possible to translate the messages that ERC uses
|
||||
into multiple languages. Please contact the developers of Emacs at
|
||||
@email{emacs-devel@@gnu.org} if you are interested in helping with the
|
||||
multiple languages. Please contact the Emacs developers
|
||||
if you are interested in helping with the
|
||||
translation effort.
|
||||
|
||||
@item user scripting
|
||||
|
@ -784,9 +783,9 @@ To report a bug in ERC, use @kbd{M-x report-emacs-bug}.
|
|||
@chapter History
|
||||
@cindex history, of ERC
|
||||
|
||||
ERC was originally written by Alexander L. Belikoff
|
||||
@email{abel@@bfr.co.il} and Sergey Berezin
|
||||
@email{sergey.berezin@@cs.cmu.edu}. They stopped development around
|
||||
@c abel@@bfr.co.il, sergey.berezin@@cs.cmu.edu
|
||||
ERC was originally written by Alexander L. Belikoff and Sergey Berezin.
|
||||
They stopped development around
|
||||
December 1999. Their last released version was ERC 2.0.
|
||||
|
||||
P.S.: If one of the original developers of ERC reads this, we'd like to
|
||||
|
@ -796,8 +795,9 @@ general.
|
|||
@itemize
|
||||
@item 2001
|
||||
|
||||
In June 2001, Mario Lang @email{mlang@@delysid.org} and Alex Schroeder
|
||||
@email{alex@@gnu.org} took over development and created a ERC Project at
|
||||
@c mlang@@delysid.org, alex@@gnu.org
|
||||
In June 2001, Mario Lang and Alex Schroeder
|
||||
took over development and created a ERC Project at
|
||||
@uref{http://sourceforge.net/projects/erc}.
|
||||
|
||||
In reaction to a mail about the new ERC development effort, Sergey
|
||||
|
@ -825,7 +825,8 @@ ERC 4.0 was released.
|
|||
|
||||
@item 2005
|
||||
|
||||
ERC 5.0 was released. Michael Olson @email{mwolson@@gnu.org} became
|
||||
@c mwolson@@gnu.org
|
||||
ERC 5.0 was released. Michael Olson became
|
||||
the release manager and eventually the maintainer.
|
||||
|
||||
After some discussion between him and the Emacs developers, it was
|
||||
|
|
|
@ -819,16 +819,18 @@ Eshell module.} You also need to load the following as shown:
|
|||
@cindex known bugs
|
||||
@cindex bugs, known
|
||||
|
||||
If you find a bug or misfeature, don't hesitate to let me know! Send
|
||||
email to @email{johnw@@gnu.org}. Feature requests should also be sent
|
||||
there. I prefer discussing one thing at a time. If you find several
|
||||
If you find a bug or misfeature, don't hesitate to report it, by
|
||||
using @kbd{M-x report-emacs-bug}. The same applies to feature requests.
|
||||
It is best to discuss one thing at a time. If you find several
|
||||
unrelated bugs, please report them separately.
|
||||
|
||||
@ignore
|
||||
If you have ideas for improvements, or if you have written some
|
||||
extensions to this package, I would like to hear from you. I hope you
|
||||
find this package useful!
|
||||
@end ignore
|
||||
|
||||
Below is a complete list of known problems with Eshell version 2.4.2,
|
||||
Below is a list of some known problems with Eshell version 2.4.2,
|
||||
which is the version included with Emacs 22.
|
||||
|
||||
@table @asis
|
||||
|
|
|
@ -444,9 +444,9 @@ mail-to-news gateway).
|
|||
|
||||
The correct way to report Emacs bugs is to use the command
|
||||
@kbd{M-x report-emacs-bug}. It sets up a mail buffer with the
|
||||
essential information and the correct e-mail address, which is
|
||||
@email{bug-gnu-emacs@@gnu.org} for the released versions of Emacs.
|
||||
Anything sent to @email{bug-gnu-emacs@@gnu.org} also appears in the
|
||||
essential information and the correct e-mail address,
|
||||
@email{bug-gnu-emacs@@gnu.org}.
|
||||
Anything sent there also appears in the
|
||||
newsgroup @uref{news:gnu.emacs.bug}, but please use e-mail instead of
|
||||
news to submit the bug report. This ensures a reliable return address
|
||||
so you can be contacted for further details.
|
||||
|
@ -459,13 +459,17 @@ report (@pxref{Bugs, , Reporting Bugs, emacs, The GNU Emacs Manual}).
|
|||
RMS says:
|
||||
|
||||
@quotation
|
||||
Sending bug reports to @email{help-gnu-emacs@@gnu.org} (which has the
|
||||
effect of posting on @uref{news:gnu.emacs.help}) is undesirable because
|
||||
it takes the time of an unnecessarily large group of people, most of
|
||||
whom are just users and have no idea how to fix these problem.
|
||||
@email{bug-gnu-emacs@@gnu.org} reaches a much smaller group of people
|
||||
who are more likely to know what to do and have expressed a wish to
|
||||
receive more messages about Emacs than the others.
|
||||
Sending bug reports to
|
||||
@url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs,
|
||||
the help-gnu-emacs mailing list}
|
||||
(which has the effect of posting on @uref{news:gnu.emacs.help}) is
|
||||
undesirable because it takes the time of an unnecessarily large group
|
||||
of people, most of whom are just users and have no idea how to fix
|
||||
these problem.
|
||||
@url{http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs, The
|
||||
bug-gnu-emacs list} reaches a much smaller group of people who are
|
||||
more likely to know what to do and have expressed a wish to receive
|
||||
more messages about Emacs than the others.
|
||||
@end quotation
|
||||
|
||||
RMS says it is sometimes fine to post to @uref{news:gnu.emacs.help}:
|
||||
|
@ -960,7 +964,8 @@ by RMS for the editor TECO (Text Editor and COrrector, originally Tape
|
|||
Editor and COrrector) under ITS (the Incompatible Timesharing System) on
|
||||
a PDP-10. RMS had already extended TECO with a ``real-time''
|
||||
full-screen mode with reprogrammable keys. Emacs was started by
|
||||
@email{gls@@east.sun.com, Guy Steele} as a project to unify the many
|
||||
@c gls@@east.sun.com
|
||||
Guy Steele as a project to unify the many
|
||||
divergent TECO command sets and key bindings at MIT, and completed by
|
||||
RMS.
|
||||
|
||||
|
@ -1340,7 +1345,9 @@ of files from Macintosh, Microsoft, and Unix platforms.
|
|||
|
||||
In general, new Emacs users should not be provided with @file{.emacs}
|
||||
files, because this can cause confusing non-standard behavior. Then
|
||||
they send questions to @email{help-gnu-emacs@@gnu.org} asking why Emacs
|
||||
they send questions to
|
||||
@url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs,
|
||||
the help-gnu-emacs mailing list} asking why Emacs
|
||||
isn't behaving as documented.
|
||||
|
||||
Emacs includes the Customize facility (@pxref{Using Customize}). This
|
||||
|
@ -1805,7 +1812,8 @@ requested by @code{emacsclient}, Emacs will switch to it; otherwise
|
|||
|
||||
@cindex @code{gnuserv}
|
||||
There is an alternative version of @samp{emacsclient} called
|
||||
@samp{gnuserv}, written by @email{ange@@hplb.hpl.hp.com, Andy Norman}
|
||||
@c ange@@hplb.hpl.hp.com
|
||||
@samp{gnuserv}, written by Andy Norman
|
||||
(@pxref{Packages that do not come with Emacs}). @samp{gnuserv} uses
|
||||
Internet domain sockets, so it can work across most network connections.
|
||||
|
||||
|
@ -1973,7 +1981,8 @@ On some systems, @key{Insert} toggles @code{overwrite-mode} on and off.
|
|||
@cindex Visible bell
|
||||
@cindex Bell, visible
|
||||
|
||||
@email{martin@@cc.gatech.edu, Martin R. Frank} writes:
|
||||
@c martin@@cc.gatech.edu
|
||||
Martin R. Frank writes:
|
||||
|
||||
Tell Emacs to use the @dfn{visible bell} instead of the audible bell,
|
||||
and set the visible bell to nothing.
|
||||
|
@ -3304,7 +3313,7 @@ to get more details about the features that it offers, and then if you
|
|||
wish, Emacs can download and automatically install it for you.
|
||||
|
||||
@uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html, The Emacs Lisp
|
||||
List (ELL)}, maintained by @email{S.J.Eglen@@damtp.cam.ac.uk, Stephen Eglen},
|
||||
List (ELL)}, maintained by Stephen Eglen,
|
||||
aims to provide one compact list with links to all of the current Emacs
|
||||
Lisp files on the Internet. The ELL can be browsed over the web, or
|
||||
from Emacs with @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.el,
|
||||
|
@ -4313,7 +4322,8 @@ these systems, you should configure @code{movemail} to use @code{flock}.
|
|||
@cindex Sender, replying only to
|
||||
@cindex Rmail, replying to the sender of a message in
|
||||
|
||||
@email{isaacson@@seas.upenn.edu, Ron Isaacson} says: When you hit
|
||||
@c isaacson@@seas.upenn.edu
|
||||
Ron Isaacson says: When you hit
|
||||
@key{r} to reply in Rmail, by default it CCs all of the original
|
||||
recipients (everyone on the original @samp{To} and @samp{CC}
|
||||
lists). With a prefix argument (i.e., typing @kbd{C-u} before @key{r}),
|
||||
|
|
|
@ -7394,6 +7394,14 @@ say something like:
|
|||
gnus-thread-sort-by-score))
|
||||
@end lisp
|
||||
|
||||
By default, threads including their subthreads are sorted according to
|
||||
the value of @code{gnus-thread-sort-functions}. By customizing
|
||||
@code{gnus-subthread-sort-functions} you can define a custom sorting
|
||||
order for subthreads. This allows for example to sort threads from
|
||||
high score to low score in the summary buffer, but to have subthreads
|
||||
still sorted chronologically from old to new without taking their
|
||||
score into account.
|
||||
|
||||
@vindex gnus-thread-score-function
|
||||
The function in the @code{gnus-thread-score-function} variable (default
|
||||
@code{+}) is used for calculating the total score of a thread. Useful
|
||||
|
@ -21101,17 +21109,17 @@ the articles that match this query, and takes you to a summary buffer
|
|||
showing these articles. Articles may then be read, moved and deleted
|
||||
using the usual commands.
|
||||
|
||||
The @code{nnir} group made in this way is an @code{ephemeral} group, and
|
||||
some changes are not permanent: aside from reading, moving, and
|
||||
The @code{nnir} group made in this way is an @code{ephemeral} group,
|
||||
and some changes are not permanent: aside from reading, moving, and
|
||||
deleting, you can't act on the original article. But there is an
|
||||
alternative: you can @emph{warp} to the original group for the article
|
||||
on the current line with @kbd{A W}, aka
|
||||
alternative: you can @emph{warp} (i.e., jump) to the original group
|
||||
for the article on the current line with @kbd{A W}, aka
|
||||
@code{gnus-warp-to-article}. Even better, the function
|
||||
@code{gnus-summary-refer-thread}, bound by default in summary buffers to
|
||||
@kbd{A T}, will first warp to the original group before it works its
|
||||
magic and includes all the articles in the thread. From here you can
|
||||
read, move and delete articles, but also copy them, alter article marks,
|
||||
whatever. Go nuts.
|
||||
@code{gnus-summary-refer-thread}, bound by default in summary buffers
|
||||
to @kbd{A T}, will first warp to the original group before it works
|
||||
its magic and includes all the articles in the thread. From here you
|
||||
can read, move and delete articles, but also copy them, alter article
|
||||
marks, whatever. Go nuts.
|
||||
|
||||
You say you want to search more than just the group on the current line?
|
||||
No problem: just process-mark the groups you want to search. You want
|
||||
|
@ -21153,6 +21161,7 @@ query language anyway.
|
|||
* The swish++ Engine:: Swish++ configuration and usage.
|
||||
* The swish-e Engine:: Swish-e configuration and usage.
|
||||
* The namazu Engine:: Namazu configuration and usage.
|
||||
* The notmuch Engine:: Notmuch configuration and usage.
|
||||
* The hyrex Engine:: Hyrex configuration and usage.
|
||||
* Customizations:: User customizable settings.
|
||||
@end menu
|
||||
|
@ -21382,6 +21391,26 @@ mknmz --mailnews ~/Mail/archive/ ~/Mail/mail/ ~/Mail/lists/
|
|||
For maximum searching efficiency you might want to have a cron job run
|
||||
this command periodically, say every four hours.
|
||||
|
||||
|
||||
@node The notmuch Engine
|
||||
@subsubsection The notmuch Engine
|
||||
|
||||
@table @code
|
||||
@item nnir-notmuch-program
|
||||
The name of the notmuch search executable. Defaults to
|
||||
@samp{notmuch}.
|
||||
|
||||
@item nnir-notmuch-additional-switches
|
||||
A list of strings, to be given as additional arguments to notmuch.
|
||||
|
||||
@item nnir-notmuch-remove-prefix
|
||||
The prefix to remove from each file name returned by notmuch in order
|
||||
to get a group name (albeit with @samp{/} instead of @samp{.}). This
|
||||
is a regular expression.
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
@node The hyrex Engine
|
||||
@subsubsection The hyrex Engine
|
||||
This engine is obsolete.
|
||||
|
|
|
@ -1275,6 +1275,7 @@ normally be applied.
|
|||
@vindex hfy-html-quote-regex
|
||||
@anchor{hfy-html-quote-regex}
|
||||
|
||||
@c FIXME: the cross-reference below looks ugly
|
||||
Regex to match (with a single back-reference per match) strings in HTML
|
||||
which should be quoted with @ref{hfy-html-quote}
|
||||
(and @pxref{hfy-html-quote-map}) to make them safe.
|
||||
|
@ -1340,31 +1341,6 @@ See also: @ref{hfy-page-footer}
|
|||
|
||||
String to add to the @samp{<style> a} variant of an Htmlfontify CSS class.
|
||||
|
||||
@item hfy-fast-lock-save
|
||||
@vindex hfy-fast-lock-save
|
||||
@anchor{hfy-fast-lock-save}
|
||||
|
||||
Minimum size of a buffer for cached fontification.
|
||||
This value is temporarily assigned to @code{fast-lock-minimum-size} during
|
||||
html-fontification.
|
||||
|
||||
Only buffers more than this can have associated Font Lock cache files saved.
|
||||
|
||||
If nil, means cache files are never created.
|
||||
|
||||
If a list, each element should be a cons pair of the form
|
||||
@code{(@var{major-mode} . @var{size})}, where @var{major-mode}
|
||||
is a symbol or t (meaning the default). For example:
|
||||
|
||||
@lisp
|
||||
((c-mode . 25600 )
|
||||
(c++-mode . 25600 )
|
||||
(rmail-mode . 1048576))
|
||||
@end lisp
|
||||
|
||||
means that the minimum size is 25K for buffers in C or C++ modes, one megabyte
|
||||
for buffers in Rmail mode, and size is irrelevant (i.e., no saves) otherwise.
|
||||
|
||||
@item hfy-split-index
|
||||
@vindex hfy-split-index
|
||||
@anchor{hfy-split-index}
|
||||
|
@ -1383,7 +1359,7 @@ be large and take a long time to render or be difficult to navigate.
|
|||
@vindex hfy-extn
|
||||
@anchor{hfy-extn}
|
||||
|
||||
File extension used for output files
|
||||
File extension used for output files.
|
||||
|
||||
@item hfy-default-face-def
|
||||
@vindex hfy-default-face-def
|
||||
|
@ -1464,7 +1440,7 @@ which can never slow you down, but may result in incomplete fontification.
|
|||
@vindex hfy-src-doc-link-unstyle
|
||||
@anchor{hfy-src-doc-link-unstyle}
|
||||
|
||||
Regex to remove from the <style> a variant of an Htmlfontify CSS class.
|
||||
Regex to remove from the @samp{<style> a} variant of an Htmlfontify CSS class.
|
||||
|
||||
@item hfy-link-extn
|
||||
@vindex hfy-link-extn
|
||||
|
|
803
doc/misc/ido.texi
Normal file
803
doc/misc/ido.texi
Normal file
|
@ -0,0 +1,803 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@setfilename ../../info/ido
|
||||
@settitle Interactive Do
|
||||
@include emacsver.texi
|
||||
|
||||
@copying
|
||||
This file documents the Ido package for GNU Emacs.
|
||||
|
||||
Copyright @copyright{} 2013 Free Software Foundation, Inc.
|
||||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
|
||||
modify this GNU manual.''
|
||||
@end quotation
|
||||
@end copying
|
||||
|
||||
@dircategory Emacs lisp libraries
|
||||
@direntry
|
||||
* Ido: (ido). Interactively do things with buffers and files.
|
||||
@end direntry
|
||||
|
||||
@finalout
|
||||
|
||||
@titlepage
|
||||
@sp 6
|
||||
@center @titlefont{Interactive Do}
|
||||
@sp 4
|
||||
@center For GNU Emacs
|
||||
@sp 1
|
||||
@center as distributed with Emacs @value{EMACSVER}
|
||||
@sp 5
|
||||
@center Kim F. Storm
|
||||
@center storm@@cua.dk
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
@insertcopying
|
||||
@end titlepage
|
||||
|
||||
@contents
|
||||
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top Interactive Do
|
||||
|
||||
@insertcopying
|
||||
@end ifnottex
|
||||
|
||||
@menu
|
||||
* Overview:: Basics, activation.
|
||||
* Matching:: Interactivity, matching, scrolling.
|
||||
* Highlighting:: Highlighting of matching items.
|
||||
* Hidden Buffers and Files:: Hidden buffers, files, and directories.
|
||||
* Customization:: Change the Ido functionality.
|
||||
* Misc:: Various other features.
|
||||
|
||||
Appendices
|
||||
* GNU Free Documentation License:: The license for this documentation.
|
||||
|
||||
Indexes
|
||||
* Variable Index:: An entry for each documented variable.
|
||||
|
||||
@detailmenu
|
||||
--- The Detailed Node Listing ---
|
||||
|
||||
Overview
|
||||
|
||||
* Activation:: How to use this package.
|
||||
* Working Directories:: Where files have most recently been opened.
|
||||
|
||||
Matching
|
||||
|
||||
* Interactive Substring Matching:: Interactivity, matching, scrolling.
|
||||
* Prefix Matching:: Standard completion.
|
||||
* Flexible Matching:: More flexible matching.
|
||||
* Regexp Matching:: Matching using regular expression.
|
||||
|
||||
Customization
|
||||
|
||||
* Changing List Order:: Changing the list of files.
|
||||
* Find File At Point:: Make Ido guess the context.
|
||||
* Ignoring:: Ignorance is bliss.
|
||||
* Misc Customization:: Miscellaneous customization for Ido.
|
||||
|
||||
Miscellaneous
|
||||
|
||||
* All Matching:: Seeing all the matching buffers or files.
|
||||
* Replacement:: Replacement for @code{read-buffer} and @code{read-file-name}.
|
||||
* Other Packages:: Don't want to depend on @code{ido-everywhere}?
|
||||
|
||||
@end detailmenu
|
||||
@end menu
|
||||
|
||||
@node Overview
|
||||
@chapter Overview
|
||||
@cindex overview
|
||||
|
||||
@noindent
|
||||
This document describes a set of features that can interactively do
|
||||
things with buffers and files. All the features are described here
|
||||
in detail.
|
||||
|
||||
The @dfn{Ido} package can let you switch between buffers and visit
|
||||
files and directories with a minimum of keystrokes. It is a superset
|
||||
of Iswitchb, the interactive buffer switching package by Stephen
|
||||
Eglen.
|
||||
|
||||
@cindex author of Ido
|
||||
@cindex Iswitchb
|
||||
This package was originally written by Kim F. Storm, based on the
|
||||
@file{iswitchb.el} package by Stephen Eglen.
|
||||
|
||||
@menu
|
||||
* Activation:: How to use this package.
|
||||
* Working Directories:: Where files have most recently been opened.
|
||||
@end menu
|
||||
|
||||
@node Activation
|
||||
@section Activation
|
||||
@cindex activation
|
||||
@cindex installation
|
||||
|
||||
@noindent
|
||||
This package is distributed with Emacs, so there is no need to install
|
||||
any additional files in order to start using it. To activate, use
|
||||
@kbd{M-x ido-mode}.
|
||||
|
||||
@noindent
|
||||
You may wish to add the following expressions to your initialization
|
||||
file (@pxref{Init File,,The Emacs Initialization File, emacs, GNU
|
||||
Emacs Manual}), if you make frequent use of features from this
|
||||
package.
|
||||
|
||||
@example
|
||||
(require 'ido)
|
||||
(ido-mode t)
|
||||
@end example
|
||||
|
||||
@node Working Directories
|
||||
@section Working Directories
|
||||
@cindex working directories
|
||||
|
||||
@vindex ido-work-directory-list
|
||||
@noindent
|
||||
@dfn{Working directories} are directories where files have most
|
||||
recently been opened. The current directory is inserted at the front
|
||||
of this @code{ido-work-directory-list} whenever a file is opened with
|
||||
@code{ido-find-file} and other file-related functions.
|
||||
|
||||
@c @cindex merge
|
||||
@c or maybe a new node for ``merge''
|
||||
|
||||
@c @deffn Command ido-merge-work-directories
|
||||
|
||||
@c @deffn Command ido-prev-work-directory
|
||||
|
||||
@c @deffn Command ido-next-work-directory
|
||||
|
||||
@c @deffn Command ido-forget-work-directory
|
||||
|
||||
@c @defvar ido-use-merged-list
|
||||
@c @defvar ido-try-merged-list
|
||||
@c @defvar ido-pre-merge-state
|
||||
|
||||
@defopt ido-max-work-directory-list
|
||||
This user option specifies maximum number of working directories to
|
||||
record.
|
||||
@end defopt
|
||||
|
||||
@c see (info "(elisp) File Name Completion")
|
||||
@defopt ido-max-dir-file-cache
|
||||
This user option specifies maximum number of working directories to be
|
||||
cached. This is the size of the cache of
|
||||
@code{file-name-all-completions} results. Each cache entry is time
|
||||
stamped with the modification time of the directory. Some systems,
|
||||
like MS-Windows, have unreliable directory modification times, so you
|
||||
may choose to disable caching on such systems, or explicitly refresh
|
||||
the cache contents using the command @code{ido-reread-directory}
|
||||
(usually @kbd{C-l}) in the minibuffer.
|
||||
@end defopt
|
||||
|
||||
@node Matching
|
||||
@chapter Matching
|
||||
@cindex matching
|
||||
|
||||
@noindent
|
||||
This section describes features of this package that have to
|
||||
do with various kinds of @emph{matching}: among buffers, files, and directories.
|
||||
|
||||
@menu
|
||||
* Interactive Substring Matching:: Interactivity, matching, scrolling.
|
||||
* Prefix Matching:: Standard completion.
|
||||
* Flexible Matching:: More flexible matching.
|
||||
* Regexp Matching:: Matching using regular expression.
|
||||
@end menu
|
||||
|
||||
@node Interactive Substring Matching
|
||||
@section Interactive Substring Matching
|
||||
@cindex interactive substring matching
|
||||
@cindex substring, interactive matching
|
||||
@cindex matching, using substring
|
||||
|
||||
@noindent
|
||||
As you type in a substring, the list of buffers or files currently
|
||||
matching the substring are displayed as you type. The list is
|
||||
ordered so that the most recent buffers or files visited come at
|
||||
the start of the list.
|
||||
|
||||
The buffer or file at the start of the list will be the one visited
|
||||
when you press @key{RET}. By typing more of the substring, the list
|
||||
is narrowed down so that gradually the buffer or file you want will be
|
||||
at the top of the list. Alternatively, you can use @kbd{C-s} and
|
||||
@kbd{C-r} (or the right and left arrow keys) to rotate buffer or file
|
||||
names in the list until the one you want is at the top of the list.
|
||||
|
||||
Completion is also available so that you can see what is common to
|
||||
all of the matching buffers or files as you type.
|
||||
|
||||
For example, if there are two buffers called @file{123456} and
|
||||
@file{123}, with @file{123456} the most recent, when using
|
||||
@code{ido-switch-buffer}, you first of all get presented with the list
|
||||
of all the buffers
|
||||
|
||||
@example
|
||||
Buffer: @{123456 | 123@}
|
||||
@end example
|
||||
|
||||
If you then press @kbd{2}:
|
||||
|
||||
@example
|
||||
Buffer: 2[3]@{123456 | 123@}
|
||||
@end example
|
||||
|
||||
The list in @{...@} are the matching buffers, most recent first
|
||||
(buffers visible in the current frame are put at the end of the list
|
||||
by default). At any time you can select the item at the head of the
|
||||
list by pressing @key{RET}. You can also put the first element at the
|
||||
end of the list by pressing @kbd{C-s} or @kbd{<right>}, or bring the
|
||||
last element to the head of the list by pressing @kbd{C-r} or
|
||||
@kbd{<left>}.
|
||||
|
||||
The item in [...] indicates what can be added to your input by
|
||||
pressing @key{TAB} (@code{ido-complete}). In this case, you will get
|
||||
"3" added to your input.
|
||||
|
||||
So, press @key{TAB}:
|
||||
|
||||
@example
|
||||
Buffer: 23@{123456 | 123@}
|
||||
@end example
|
||||
|
||||
At this point, you still have two matching buffers. If you want the
|
||||
first buffer in the list, you can simply press @key{RET}. If you want
|
||||
the second in the list, you can press @kbd{C-s} to move it to the top
|
||||
of the list and then press @kbd{RET} to select it.
|
||||
|
||||
However, if you type @kbd{4}, you'll only have one match left:
|
||||
|
||||
@example
|
||||
Buffer: 234[123456]
|
||||
@end example
|
||||
|
||||
Since there is only one matching buffer left, it is given in [] and it
|
||||
is shown in the @code{ido-only-match} face (ForestGreen). You can now
|
||||
press @key{TAB} or @key{RET} to go to that buffer.
|
||||
|
||||
If you want to create a new buffer named @file{234}, you can press
|
||||
@kbd{C-j} (@code{ido-select-text}) instead of @key{TAB} or @key{RET}.
|
||||
|
||||
If instead, you type @kbd{a}:
|
||||
|
||||
@example
|
||||
Buffer: 234a [No match]
|
||||
@end example
|
||||
|
||||
There are no matching buffers. If you press @key{RET} or @key{TAB},
|
||||
you can be prompted to create a new buffer called @file{234a}.
|
||||
|
||||
Of course, where this function comes in really useful is when you can
|
||||
specify the buffer using only a few keystrokes. In the above example,
|
||||
the quickest way to get to the @file{123456} file would be just to
|
||||
type @kbd{4} and then @key{RET} (assuming there isn't any newer buffer
|
||||
with @kbd{4} in its name).
|
||||
|
||||
Likewise, if you use @kbd{C-x C-f} (@code{ido-find-file}), the list of
|
||||
files and directories in the current directory is provided in the same
|
||||
fashion as the buffers above. The files and directories are normally
|
||||
sorted in alphabetical order, but the most recently visited directory
|
||||
is placed first to speed up navigating to directories that you have
|
||||
visited recently.
|
||||
|
||||
In addition to scrolling through the list using @kbd{<right>} and
|
||||
@kbd{<left>}, you can use @kbd{<up>} and @kbd{<down>} to quickly
|
||||
scroll the list to the next or previous subdirectory.
|
||||
|
||||
To go down into a subdirectory, and continue the file selection on
|
||||
the files in that directory, simply move the directory to the head
|
||||
of the list and hit @key{RET}.
|
||||
|
||||
To go up to the parent directory, delete any partial file name already
|
||||
specified (e.g. using @key{DEL}) and hit @key{DEL}.
|
||||
|
||||
@c @deffn Command ido-delete-backward-updir
|
||||
|
||||
@cindex root directory
|
||||
@cindex home directory
|
||||
To go to the root directory (on the current drive), enter two slashes.
|
||||
On MS-DOS or Windows, to select the root of another drive, enter
|
||||
@samp{X:/} where @samp{X} is the drive letter. To go to the home
|
||||
directory, enter @samp{~/}. To enter Dired for this directory, use
|
||||
@kbd{C-d}.
|
||||
|
||||
@c TODO: a new node for ftp hosts
|
||||
@cindex ftp hosts
|
||||
You can also visit files on other hosts using the ange-ftp
|
||||
notations @samp{/host:} and @samp{/user@@host:}.
|
||||
@c @defopt ido-record-ftp-work-directories
|
||||
@c @defopt ido-merge-ftp-work-directories
|
||||
@c @defopt ido-cache-ftp-work-directory-time
|
||||
@c @defopt ido-slow-ftp-hosts
|
||||
@c @defopt ido-slow-ftp-host-regexps
|
||||
|
||||
You can type @kbd{M-p} and @kbd{M-n} to change to previous/next
|
||||
directories from the history, @kbd{M-s} to search for a file matching
|
||||
your input, and @kbd{M-k} to remove the current directory from the history.
|
||||
|
||||
If for some reason you cannot specify the proper file using
|
||||
@code{ido-find-file}, you can press @kbd{C-f} to enter the normal
|
||||
@code{find-file}. You can also press @kbd{C-b} to drop into
|
||||
@code{ido-switch-buffer}.
|
||||
|
||||
@c @kindex C-x b
|
||||
@c @deffn Command ido-switch-buffer
|
||||
@c This command switch to another buffer interactively.
|
||||
@c @end deffn
|
||||
|
||||
@c @kindex C-x C-f
|
||||
@c @deffn Command ido-find-file
|
||||
@c Edit file with name obtained via minibuffer.
|
||||
@c @end deffn
|
||||
|
||||
@c @kindex C-x d
|
||||
@c @findex ido-dired
|
||||
@c @deffn Command ido-dired
|
||||
@c Call Dired the Ido way.
|
||||
@c @end deffn
|
||||
|
||||
@node Prefix Matching
|
||||
@section Prefix Matching
|
||||
@cindex prefix matching
|
||||
@cindex matching, using prefix
|
||||
@cindex standard way of completion
|
||||
|
||||
@noindent
|
||||
The standard way of completion with *nix shells and Emacs is to insert
|
||||
a @dfn{prefix} and then hitting @key{TAB} (or another completion key).
|
||||
Cause of this behavior has become second nature to a lot of Emacs
|
||||
users Ido offers in addition to the default substring matching method
|
||||
(look above) also the prefix matching method. The kind of matching is
|
||||
the only difference to the description of the substring matching
|
||||
above.
|
||||
|
||||
You can toggle prefix matching with @kbd{C-p}
|
||||
(@code{ido-toggle-prefix}).
|
||||
|
||||
For example, if you have two buffers @file{123456} and @file{123} then
|
||||
hitting @kbd{2} does not match because @kbd{2} is not a prefix in any
|
||||
of the buffer names.
|
||||
|
||||
@node Flexible Matching
|
||||
@section Flexible Matching
|
||||
@cindex flexible matching
|
||||
|
||||
@defopt ido-enable-flex-matching
|
||||
If non-@code{nil}, Ido will do flexible string matching. Flexible
|
||||
matching means that if the entered string does not match any item, any
|
||||
item containing the entered characters in the given sequence will
|
||||
match.
|
||||
@end defopt
|
||||
|
||||
@noindent
|
||||
If @code{ido-enable-flex-matching} is non-@code{nil}, Ido will do a
|
||||
more flexible matching (unless regexp matching is active) to find
|
||||
possible matches among the available buffer or file names if no
|
||||
matches are found using the normal prefix or substring matching.
|
||||
|
||||
The flexible matching implies that any item which simply contains all
|
||||
of the entered characters in the specified sequence will match.
|
||||
|
||||
For example, if you have four files @file{alpha}, @file{beta},
|
||||
@file{gamma}, and @file{delta}, entering @samp{aa} will match
|
||||
@file{alpha} and @file{gamma}, while @samp{ea} matches @file{beta} and
|
||||
@file{delta}. If prefix matching is also active, @samp{aa} only
|
||||
matches @file{alpha}, while @samp{ea} does not match any files.
|
||||
|
||||
@node Regexp Matching
|
||||
@section Regular Expression Matching
|
||||
@cindex regexp matching
|
||||
@cindex matching, using regular expression
|
||||
|
||||
@noindent
|
||||
There is limited provision for regexp matching within Ido, enabled
|
||||
through @code{ido-enable-regexp} (toggle with @kbd{C-t}). This allows
|
||||
you to type @samp{[ch]$} for example and see all file names ending in
|
||||
@samp{c} or @samp{h}.
|
||||
|
||||
@defopt ido-enable-regexp
|
||||
If the value of this user option is non-@code{nil}, Ido will do regexp
|
||||
matching. The value of this user option can be toggled within
|
||||
ido-mode using @code{ido-toggle-regexp}.
|
||||
@end defopt
|
||||
|
||||
@strong{Please notice:} Ido-style completion is inhibited when you
|
||||
enable regexp matching.
|
||||
|
||||
@node Highlighting
|
||||
@chapter Highlighting
|
||||
@cindex highlighting
|
||||
|
||||
@noindent
|
||||
The highlighting of matching items is controlled via
|
||||
@code{ido-use-faces}. The faces used are @code{ido-first-match},
|
||||
@code{ido-only-match} and @code{ido-subdir}.
|
||||
|
||||
Coloring of the matching item was suggested by Carsten Dominik.
|
||||
|
||||
@node Hidden Buffers and Files
|
||||
@chapter Hidden Buffers and Files
|
||||
@cindex hidden buffers and files
|
||||
|
||||
Normally, Ido does not include hidden buffers (whose name starts with
|
||||
a space) and hidden files and directories (whose name starts with
|
||||
@samp{.}) in the list of possible completions. However, if the
|
||||
substring you enter does not match any of the visible buffers or
|
||||
files, Ido will automatically look for completions among the hidden
|
||||
buffers or files.
|
||||
|
||||
You can toggle display of the hidden buffers and files with @kbd{C-a}
|
||||
(@code{ido-toggle-ignore}).
|
||||
|
||||
@c @deffn Command ido-toggle-ignore
|
||||
|
||||
@node Customization
|
||||
@chapter Customization
|
||||
@cindex customization
|
||||
|
||||
@noindent
|
||||
You can customize the @code{ido} group to change Ido functionality:
|
||||
|
||||
@example
|
||||
M-x customize-group RET ido RET
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
or customize a certain variable:
|
||||
|
||||
@example
|
||||
M-x customize-variable RET ido-xxxxx
|
||||
@end example
|
||||
|
||||
To modify the keybindings, use the @code{ido-setup-hook}. For example:
|
||||
|
||||
@example
|
||||
(add-hook 'ido-setup-hook 'ido-my-keys)
|
||||
|
||||
(defun ido-my-keys ()
|
||||
"Add my keybindings for Ido."
|
||||
(define-key ido-completion-map " " 'ido-next-match))
|
||||
@end example
|
||||
|
||||
@c @defopt ido-setup-hook
|
||||
@c a new node for Ido hooks?
|
||||
|
||||
@menu
|
||||
* Changing List Order:: Changing the list of files.
|
||||
* Find File At Point:: Make Ido guess the context.
|
||||
* Ignoring:: Ignorance is bliss.
|
||||
* Misc Customization:: Miscellaneous customization for Ido.
|
||||
@end menu
|
||||
|
||||
@node Changing List Order
|
||||
@section Changing List Order
|
||||
@cindex changing order of the list
|
||||
|
||||
@noindent
|
||||
By default, the list of current files is most recent first,
|
||||
oldest last, with the exception that the files visible in the
|
||||
current frame are put at the end of the list. A hook exists to
|
||||
allow other functions to order the list. For example, if you add:
|
||||
|
||||
@example
|
||||
(add-hook 'ido-make-buffer-list-hook 'ido-summary-buffers-to-end)
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
then all files matching "Summary" are moved to the end of the list.
|
||||
(I find this handy for keeping the INBOX Summary and so on out of the
|
||||
way.) It also moves files matching @samp{output\*$} to the end of the
|
||||
list (these are created by AUCTeX when compiling.) Other functions
|
||||
could be made available which alter the list of matching files (either
|
||||
deleting or rearranging elements.)
|
||||
|
||||
@node Find File At Point
|
||||
@section Find File At Point
|
||||
@cindex find file at point
|
||||
@cindex ffap
|
||||
|
||||
@noindent
|
||||
Find File At Point, also known generally as ``ffap'', is an
|
||||
intelligent system for opening files, and URLs.
|
||||
|
||||
The following expression will make Ido guess the context:
|
||||
|
||||
@example
|
||||
(setq ido-use-filename-at-point 'guess)
|
||||
@end example
|
||||
|
||||
@c @defopt ido-use-filename-at-point
|
||||
@c If the value of this user option is non-@code{nil}, ...
|
||||
@c @end defopt
|
||||
|
||||
You can disable URL ffap support by toggling
|
||||
@code{ido-use-url-at-point}.
|
||||
|
||||
@defopt ido-use-url-at-point
|
||||
If the value of this user option is non-@code{nil}, Ido will look for
|
||||
a URL at point. If found, call @code{find-file-at-point} to visit it.
|
||||
@end defopt
|
||||
|
||||
@node Ignoring
|
||||
@section Ignoring Buffers and Files
|
||||
@cindex ignoring
|
||||
@cindex regexp, ignore buffers and files
|
||||
|
||||
@noindent
|
||||
Ido is capable of ignoring buffers, directories, files and extensions
|
||||
using regular expression.
|
||||
|
||||
@defopt ido-ignore-buffers
|
||||
This variable takes a list of regular expressions for buffers to
|
||||
ignore in @code{ido-switch-buffer}.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-ignore-directories
|
||||
This variable takes a list of regular expressions for (sub)directories
|
||||
names to ignore in @code{ido-dired} and @code{ido-find-file}.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-ignore-files
|
||||
This variable takes a list of regular expressions for files to ignore
|
||||
in @code{ido-find-file}.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-ignore-unc-host-regexps
|
||||
This variable takes a list of regular expressions matching UNC hosts
|
||||
to ignore. The letter case will be ignored if
|
||||
@code{ido-downcase-unc-hosts} is non-@code{nil}.
|
||||
@end defopt
|
||||
|
||||
@c FIXME: Where to add this variable? This node or ``working directory''?
|
||||
@c @defopt ido-work-directory-list-ignore-regexps
|
||||
|
||||
To make Ido use @code{completion-ignored-extensions} you need to
|
||||
enable it:
|
||||
|
||||
@example
|
||||
(setq ido-ignore-extensions t)
|
||||
@end example
|
||||
|
||||
Now you can customize @code{completion-ignored-extensions} as well.
|
||||
Go ahead and add all the useless object files, backup files, shared
|
||||
library files and other computing flotsam you don’t want Ido to show.
|
||||
|
||||
@strong{Please notice:} Ido will still complete the ignored elements
|
||||
if it would otherwise not show any other matches. So if you type out
|
||||
the name of an ignored file, Ido will still let you open it just fine.
|
||||
|
||||
@node Misc Customization
|
||||
@section Miscellaneous Customization
|
||||
@cindex miscellaneous customization for Ido
|
||||
|
||||
@c Variables described in this sections may be moved to new nodes in
|
||||
@c the future.
|
||||
|
||||
@defopt ido-mode
|
||||
This user option determines for which functional group (buffer and
|
||||
files) Ido behavior should be enabled.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-case-fold
|
||||
If the value of this user option is non-@code{nil}, searching of
|
||||
buffer and file names should ignore case.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-show-dot-for-dired
|
||||
If the value of this user option is non-@code{nil}, always put
|
||||
@samp{.} as the first item in file name lists. This allows the
|
||||
current directory to be opened immediately with Dired
|
||||
@end defopt
|
||||
|
||||
@defopt ido-enable-dot-prefix
|
||||
If the value of this user option is non-@code{nil}, Ido will match
|
||||
leading dot as prefix. I.e., hidden files and buffers will match only
|
||||
if you type a dot as first char (even if @code{ido-enable-prefix} is
|
||||
@code{nil}).
|
||||
@end defopt
|
||||
|
||||
@defopt ido-confirm-unique-completion
|
||||
If the value of this user option is non-@code{nil}, even a unique
|
||||
completion must be confirmed. This means that @code{ido-complete}
|
||||
(@key{TAB}) must always be followed by @code{ido-exit-minibuffer}
|
||||
(@key{RET}) even when there is only one unique completion.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-cannot-complete-command
|
||||
When @code{ido-complete} can't complete any more, it will run the
|
||||
command specified by this user option. The most useful values are
|
||||
@code{ido-completion-help}, which pops up a window with completion
|
||||
alternatives, or @code{ido-next-match} or @code{ido-prev-match}, which
|
||||
cycle the buffer list.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-max-file-prompt-width
|
||||
This user option specifies the upper limit of the prompt string. If
|
||||
its value is an integer, it specifies the number of characters of the
|
||||
string. If its value is a floating point number, it specifies a
|
||||
fraction of the frame width.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-max-window-height
|
||||
If the value of this user option is non-@code{nil}, its value will
|
||||
override the variable @code{max-mini-window-height}, which is the
|
||||
maximum height for resizing mini-windows (the minibuffer and the echo
|
||||
area). If it's a floating point number, it specifies a fraction of
|
||||
the mini-window frame's height. If it's an integer, it specifies the
|
||||
number of lines.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-record-commands
|
||||
If the value of this user option is non-@code{nil}, Ido will record
|
||||
commands in the variable @code{command-history}. Note that non-Ido
|
||||
equivalent is recorded.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-all-frames
|
||||
This user option will be passed to @code{walk-windows} as its
|
||||
@var{all-frames} argument when Ido is finding buffers. @xref{Cyclic
|
||||
Window Ordering, , Cyclic Ordering of Windows, elisp, GNU Emacs Lisp
|
||||
Reference Manual}.
|
||||
@end defopt
|
||||
|
||||
@defopt ido-minibuffer-setup-hook
|
||||
This hook variable contains Ido-specific customization of minibuffer
|
||||
setup. It is run during minibuffer setup if Ido is active, and is
|
||||
intended for use in customizing ido for interoperation with other
|
||||
packages.
|
||||
@end defopt
|
||||
|
||||
@c @defopt ido-enable-tramp-completion
|
||||
@c cross-reference to tramp.texi
|
||||
|
||||
@c @cindex UNC host names, completion
|
||||
@c @defopt ido-unc-hosts
|
||||
@c @defopt ido-downcase-unc-hosts
|
||||
@c @defopt ido-cache-unc-host-shares-time
|
||||
|
||||
@c @defopt ido-enable-last-directory-history
|
||||
@c @defopt ido-max-work-file-list
|
||||
@c @defopt ido-work-directory-match-only
|
||||
@c @defopt ido-auto-merge-work-directories-length
|
||||
@c @defopt ido-auto-merge-delay-time
|
||||
@c @defopt ido-auto-merge-inhibit-characters-regexp
|
||||
@c @defopt ido-merged-indicator
|
||||
@c @defopt ido-max-directory-size
|
||||
@c @defopt ido-rotate-file-list-default
|
||||
@c @defopt ido-enter-matching-directory
|
||||
@c @defopt ido-create-new-buffer
|
||||
@c @defopt ido-separator
|
||||
@c @defopt ido-decorations
|
||||
@c @defopt ido-use-virtual-buffers
|
||||
@c @defopt ido-use-faces
|
||||
@c @defopt ido-make-file-list-hook
|
||||
@c @defopt ido-make-dir-list-hook
|
||||
@c @defopt ido-make-buffer-list-hook
|
||||
@c @defopt ido-rewrite-file-prompt-functions
|
||||
@c @defopt ido-completion-buffer
|
||||
@c @defopt ido-completion-buffer-all-completions
|
||||
@c @defopt ido-save-directory-list-file
|
||||
@c @defopt ido-read-file-name-as-directory-commands
|
||||
@c @defopt ido-read-file-name-non-ido
|
||||
@c @defopt ido-before-fallback-functions
|
||||
@c @defopt ido-buffer-disable-smart-matches
|
||||
|
||||
@node Misc
|
||||
@chapter Miscellaneous
|
||||
@cindex miscellaneous
|
||||
|
||||
@noindent
|
||||
After @kbd{C-x b} (@code{ido-switch-buffer}), the buffer at the head
|
||||
of the list can be killed by pressing @kbd{C-k}. If the buffer needs
|
||||
saving, you will be queried before the buffer is killed.
|
||||
|
||||
Likewise, after @kbd{C-x C-f}, you can delete (i.e., physically
|
||||
remove) the file at the head of the list with @kbd{C-k}. You will
|
||||
always be asked for confirmation before deleting the file.
|
||||
|
||||
If you enter @kbd{C-x b} to switch to a buffer visiting a given file,
|
||||
and you find that the file you are after is not in any buffer, you can
|
||||
press @kbd{C-f} to immediately drop into @code{ido-find-file}. And
|
||||
you can switch back to buffer selection with @kbd{C-b}.
|
||||
|
||||
@c @deffn Command ido-magic-forward-char
|
||||
@c @deffn Command ido-magic-backward-char
|
||||
|
||||
You can also use Ido in your Emacs Lisp programs:
|
||||
|
||||
@example
|
||||
(setq my-pkgs (list "CEDET" "Gnus" "Rcirc" "Tramp" "Org" "all-of-them"))
|
||||
(ido-completing-read "What's your favorite package? " my-pkgs)
|
||||
@end example
|
||||
|
||||
@menu
|
||||
* All Matching:: Seeing all the matching buffers or files.
|
||||
* Replacement:: Replacement for @code{read-buffer} and @code{read-file-name}.
|
||||
* Other Packages:: Don't want to depend on @code{ido-everywhere}?
|
||||
@end menu
|
||||
|
||||
@node All Matching
|
||||
@section All Matching
|
||||
@cindex all matching
|
||||
@cindex seeing all the matching buffers or files
|
||||
|
||||
@noindent
|
||||
If you have many matching files, they may not all fit onto one line of
|
||||
the minibuffer. Normally, the minibuffer window will grow to show you
|
||||
more of the matching files (depending on the value of the variables
|
||||
@code{resize-mini-windows} and @code{max-mini-window-height}). If you
|
||||
want Ido to behave differently from the default minibuffer resizing
|
||||
behavior, set the variable @code{ido-max-window-height}.
|
||||
|
||||
Also, to improve the responsiveness of Ido, the maximum number of
|
||||
matching items is limited to 12, but you can increase or removed this
|
||||
limit via the @code{ido-max-prospects} user option.
|
||||
|
||||
@c @defopt ido-max-prospects
|
||||
|
||||
To see a full list of all matching buffers in a separate buffer, hit
|
||||
@kbd{?} or press @key{TAB} when there are no further completions to
|
||||
the substring. Repeated @key{TAB} presses will scroll you through
|
||||
this separate buffer.
|
||||
|
||||
@node Replacement
|
||||
@section Replacement
|
||||
|
||||
@noindent
|
||||
@code{ido-read-buffer} and @code{ido-read-file-name} have been written
|
||||
to be drop in replacements for the normal buffer and file name reading
|
||||
functions @code{read-buffer} and @code{read-file-name}.
|
||||
|
||||
To use ido for all buffer and file selections in Emacs, customize the
|
||||
variable @code{ido-everywhere}.
|
||||
|
||||
@c @deffn Command ido-everywhere
|
||||
@c @defopt ido-everywhere
|
||||
|
||||
@node Other Packages
|
||||
@section Other Packages
|
||||
@cindex other packages
|
||||
@cindex used by other packages
|
||||
|
||||
@noindent
|
||||
If you don't want to rely on the @code{ido-everywhere} functionality,
|
||||
@code{ido-read-buffer}, @code{ido-read-file-name}, and
|
||||
@code{ido-read-directory-name} can be used by other packages to read a
|
||||
buffer name, a file name, or a directory name in the @emph{Ido} way.
|
||||
|
||||
@c @node Cheatsheet
|
||||
|
||||
@c * History and Acknowledgments:: How Ido came into being
|
||||
@c @node History and Acknowledgments
|
||||
@c @appendix History and Acknowledgments
|
||||
|
||||
@node GNU Free Documentation License
|
||||
@appendix GNU Free Documentation License
|
||||
@include doclicense.texi
|
||||
|
||||
@c @node Function Index
|
||||
@c @unnumbered Function Index
|
||||
|
||||
@c @printindex fn
|
||||
|
||||
@node Variable Index
|
||||
@unnumbered Variable Index
|
||||
|
||||
@printindex vr
|
||||
|
||||
@bye
|
|
@ -169,9 +169,9 @@ single buffer, called @samp{*newsticker*}. The modeline in the
|
|||
@samp{*newsticker*} buffer informs you whenever new headlines have
|
||||
arrived.
|
||||
@end itemize
|
||||
In both views clicking mouse-button 2 or pressing RET on a headline
|
||||
will call @code{browse-url} to load the corresponding news story in
|
||||
your favorite web browser.
|
||||
In both views clicking mouse-button 2 or pressing @key{RET} on a
|
||||
headline will call @code{browse-url} to load the corresponding news
|
||||
story in your favorite web browser.
|
||||
|
||||
@findex newsticker-start-ticker
|
||||
@findex newsticker-stop-ticker
|
||||
|
|
|
@ -172,17 +172,20 @@ Per Cederqvist wrote most of the otherwise unattributed functions in
|
|||
PCL-CVS as well as all the documentation.
|
||||
|
||||
@item
|
||||
@email{inge@@lysator.liu.se, Inge Wallin} wrote the skeleton of
|
||||
@c inge@@lysator.liu.se
|
||||
Inge Wallin wrote the skeleton of
|
||||
@file{pcl-cvs.texi}, and gave useful comments on it. He also wrote
|
||||
the files @file{elib-node.el} and @file{compile-all.el}. The file
|
||||
@file{cookie.el} was inspired by Inge.@refill
|
||||
|
||||
@item
|
||||
@email{linus@@lysator.liu.se, Linus Tolke} contributed useful comments
|
||||
@c linus@@lysator.liu.se
|
||||
Linus Tolke contributed useful comments
|
||||
on both the functionality and the documentation.@refill
|
||||
|
||||
@item
|
||||
@email{jwz@@jwz.com, Jamie Zawinski} contributed
|
||||
@c jwz@@jwz.com
|
||||
Jamie Zawinski contributed
|
||||
@file{pcl-cvs-lucid.el}, which was later renamed to
|
||||
@file{pcl-cvs-xemacs.el}.@refill
|
||||
|
||||
|
@ -191,34 +194,40 @@ Leif Lonnblad contributed RCVS support (since superseded by the new
|
|||
remote CVS support).
|
||||
|
||||
@item
|
||||
@email{jimb@@cyclic.com, Jim Blandy} contributed hooks to automatically
|
||||
@c jimb@@cyclic.com
|
||||
Jim Blandy contributed hooks to automatically
|
||||
guess CVS log entries from @file{ChangeLog} contents, and initial support of
|
||||
the new Cygnus / Cyclic remote CVS, as well as various sundry bug fixes
|
||||
and cleanups.
|
||||
|
||||
@item
|
||||
@email{kingdon@@cyclic.com, Jim Kingdon} contributed lots of fixes to
|
||||
@c kingdon@@cyclic.com
|
||||
Jim Kingdon contributed lots of fixes to
|
||||
the build and installation procedure.
|
||||
|
||||
@item
|
||||
@email{woods@@weird.com, Greg A. Woods} contributed code to implement
|
||||
@c woods@@weird.com
|
||||
Greg A. Woods contributed code to implement
|
||||
the use of per-file diff buffers, and vendor join diffs with emerge and
|
||||
ediff, as well as various and sundry bug fixes and cleanups.
|
||||
|
||||
@item
|
||||
@email{greg.klanderman@@alum.mit.edu, Greg Klanderman} implemented
|
||||
@c greg.klanderman@@alum.mit.edu
|
||||
Greg Klanderman implemented
|
||||
toggling of marked files, setting of CVS command flags via prefix
|
||||
arguments, updated the XEmacs support, updated the manual, and fixed
|
||||
numerous bugs.
|
||||
|
||||
@item
|
||||
@email{monnier@@gnu.org, Stefan Monnier} added a slew of other
|
||||
@c monnier@@gnu.org
|
||||
Stefan Monnier added a slew of other
|
||||
features and introduced even more new bugs. If there's any bug left,
|
||||
you can be sure it's his.
|
||||
|
||||
@item
|
||||
@c wordy to avoid an underfull hbox
|
||||
@email{masata-y@@is.aist-nara.ac.jp, Masatake YAMATO} made a gracious
|
||||
@c masata-y@@is.aist-nara.ac.jp
|
||||
Masatake YAMATO made a gracious
|
||||
contribution of his cvstree code to display a tree of tags which was later
|
||||
superseded by the new @code{cvs-status-mode}.
|
||||
@end itemize
|
||||
|
@ -1369,18 +1378,19 @@ Used to highlight CVS messages.
|
|||
@cindex FAQ
|
||||
@cindex Problems, list of common
|
||||
|
||||
If you find a bug or misfeature, don't hesitate to tell us! Send email
|
||||
to @email{bug-gnu-emacs@@gnu.org} which is gatewayed to the newsgroup
|
||||
@samp{gnu.emacs.bugs}. Feature requests should also be sent there. We
|
||||
prefer discussing one thing at a time. If you find several unrelated
|
||||
If you find a bug or misfeature, don't hesitate to tell us!
|
||||
Use @kbd{M-x report-emacs-bug} to send us a report.
|
||||
You can follow the same process for feature requests.
|
||||
We prefer discussing one thing at a time. If you find several unrelated
|
||||
bugs, please report them separately. If you are running PCL-CVS under
|
||||
XEmacs, you should also send a copy of bug reports to
|
||||
@email{xemacs-beta@@xemacs.org}.
|
||||
the @url{http://lists.xemacs.org/mailman/listinfo/xemacs-beta,
|
||||
XEmacs mailing list}.
|
||||
|
||||
If you have problems using PCL-CVS or other questions, send them to
|
||||
@email{help-gnu-emacs@@gnu.org}, which is gatewayed to the
|
||||
@samp{gnu.emacs.help} newsgroup. This is a good place to get help, as
|
||||
is @email{cvs-info@@gnu.org}, gatewayed to @samp{gnu.cvs.help}.
|
||||
the @url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs,
|
||||
help-gnu-emacs mailing list}. This is a good place to get help, as is
|
||||
the @url{http://lists.nongnu.org/mailman/listinfo/info-cvs, info-cvs list}.
|
||||
|
||||
If you have ideas for improvements, or if you have written some
|
||||
extensions to this package, we would like to hear from you. We hope that
|
||||
|
|
|
@ -3639,8 +3639,8 @@ With @i{Viper} mode prior to Vipers version 3.01, you need to protect
|
|||
@cindex @code{http}, @RefTeX{} home page
|
||||
@cindex @code{ftp}, @RefTeX{} site
|
||||
|
||||
@RefTeX{} was written by @i{Carsten Dominik}
|
||||
@email{dominik@@science.uva.nl}, with contributions by @i{Stephen
|
||||
@c dominik@@science.uva.nl
|
||||
@RefTeX{} was written by @i{Carsten Dominik}, with contributions by @i{Stephen
|
||||
Eglen}. @RefTeX{} is currently maintained by @value{MAINTAINER}, see
|
||||
the @value{MAINTAINERSITE} for detailed information.
|
||||
|
||||
|
|
194
doc/misc/sc.texi
194
doc/misc/sc.texi
|
@ -84,12 +84,15 @@ into the following chapters.
|
|||
@node Introduction
|
||||
@chapter Introduction
|
||||
|
||||
Supercite is a GNU Emacs package written entirely in Emacs Lisp. It
|
||||
@cindex MUA
|
||||
@cindex NUA
|
||||
Supercite is a GNU Emacs package written entirely in Emacs Lisp. It
|
||||
interfaces to most of the commonly used Emacs mail user agents
|
||||
(@dfn{MUAs}) and news user agents (@dfn{NUAs}), and provides
|
||||
sophisticated facilities for the citing and attributing of message
|
||||
replies. Supercite has a very specific and limited role in the process
|
||||
of composing replies to both USENET network news and electronic mail.
|
||||
replies. Supercite has a very specific and limited role in the
|
||||
process of composing replies to both USENET network news and
|
||||
electronic mail.
|
||||
|
||||
The preferred way to spell Supercite is with a capital @samp{S},
|
||||
lowercase @samp{upercite}.
|
||||
|
@ -100,8 +103,7 @@ lowercase @samp{upercite}.
|
|||
* What Supercite Does::
|
||||
@end menu
|
||||
|
||||
@cindex MUA
|
||||
@cindex NUA
|
||||
@c FIXME: move it above the menu? --xfq
|
||||
Supercite is only useful in conjunction with MUAs and NUAs such as VM,
|
||||
Gnus, RMAIL, MH-E, etc. Supercite is typically called by the MUA after a
|
||||
reply buffer has been setup. Thereafter, Supercite's many commands and
|
||||
|
@ -118,21 +120,22 @@ sent. Supercite is re-initialized in each new reply buffer.
|
|||
@cindex cite, citing
|
||||
@cindex attribute, attributing
|
||||
|
||||
Typical usage is as follows. You want to reply or followup to a message
|
||||
in your MUA@. You will probably hit @kbd{r} (i.e., ``reply'') or @kbd{f}
|
||||
(i.e., ``forward'') to begin composing the reply. In response, the MUA
|
||||
will create a reply buffer and initialize the outgoing mail headers
|
||||
appropriately. The body of the reply will usually be empty at this
|
||||
point. You now decide that you would like to include part of the
|
||||
original message in your reply. To do this, you @dfn{yank} the original
|
||||
message into the reply buffer, typically with a key stroke such as
|
||||
@kbd{C-c C-y}. This sequence will invoke an MUA-specific function which
|
||||
fills the body of the reply with the original message and then
|
||||
@dfn{attributes} this text to its author. This is called @dfn{citing}
|
||||
and its effect is to prefix every line from the original message with a
|
||||
special text tag. Most MUAs provide some default style of citing; by
|
||||
using Supercite you gain a wider flexibility in the look and style of
|
||||
citations. Supercite's only job is to cite the original message.
|
||||
Typical usage is as follows. You want to reply or followup to a
|
||||
message in your MUA@. You will probably hit @kbd{r} (i.e., ``reply'')
|
||||
or @kbd{f} (i.e., ``forward'') to begin composing the reply. In
|
||||
response, the MUA will create a reply buffer and initialize the
|
||||
outgoing mail headers appropriately. The body of the reply will
|
||||
usually be empty at this point. You now decide that you would like to
|
||||
include part of the original message in your reply. To do this, you
|
||||
@dfn{yank} the original message into the reply buffer, typically with
|
||||
a key stroke such as @kbd{C-c C-y}. This sequence will invoke an
|
||||
MUA-specific function which fills the body of the reply with the
|
||||
original message and then @dfn{attributes} this text to its author.
|
||||
This is called @dfn{citing} and its effect is to prefix every line
|
||||
from the original message with a special text tag. Most MUAs provide
|
||||
some default style of citing; by using Supercite you gain a wider
|
||||
flexibility in the look and style of citations. Supercite's only job
|
||||
is to cite the original message.
|
||||
|
||||
@node What Supercite Does Not Do
|
||||
@section What Supercite Doesn't Do
|
||||
|
@ -183,7 +186,7 @@ string carrying details about the citation it is about to perform.
|
|||
|
||||
@cindex modeline
|
||||
Next, Supercite visits each line in the reply, transforming the line
|
||||
according to a customizable ``script.'' Lines which were not previously
|
||||
according to a customizable ``script''. Lines which were not previously
|
||||
cited in the original message are given a citation, while already cited
|
||||
lines remain untouched, or are coerced to your preferred style.
|
||||
Finally, Supercite installs a keymap into the reply buffer so that you
|
||||
|
@ -253,10 +256,10 @@ make the message very difficult for the eye to scan.
|
|||
|
||||
@cindex non-nested citations
|
||||
In @dfn{non-nested citations}, each cited line begins with an
|
||||
informative string attributing that line to the original author. Only
|
||||
the first level of attribution will be shown; subsequent citations don't
|
||||
nest the citation strings. The above dialog might look like this when
|
||||
non-nested citations are used:
|
||||
informative string attributing that line to the original author. Only
|
||||
the first level of attribution will be shown; subsequent citations
|
||||
don't nest the citation strings. The above dialog might look like
|
||||
this when non-nested citations are used:
|
||||
|
||||
@example
|
||||
John> John originally wrote this
|
||||
|
@ -272,19 +275,20 @@ message did not result in a line cited with @samp{Jane>John>}.
|
|||
@vindex sc-nested-citation-p
|
||||
@vindex nested-citation-p (sc-)
|
||||
Supercite supports both styles of citation, and the variable
|
||||
@code{sc-nested-citation-p} controls which style it will use when citing
|
||||
previously uncited text. When this variable is @code{nil} (the default),
|
||||
non-nested citations are used. When non-@code{nil}, nested citations
|
||||
are used.
|
||||
@code{sc-nested-citation-p} controls which style it will use when
|
||||
citing previously uncited text. When this variable is @code{nil} (the
|
||||
default), non-nested citations are used. When non-@code{nil}, nested
|
||||
citations are used.
|
||||
|
||||
|
||||
@node Citation Elements
|
||||
@section Citation Elements
|
||||
@cindex citation string
|
||||
|
||||
@dfn{Citation strings} are composed of one or more elements. Non-nested
|
||||
citations are composed of four elements, three of which are directly
|
||||
user definable. The elements are concatenated together, in this order:
|
||||
@dfn{Citation strings} are composed of one or more elements.
|
||||
Non-nested citations are composed of four elements, three of which are
|
||||
directly user definable. The elements are concatenated together, in
|
||||
this order:
|
||||
|
||||
@cindex citation leader
|
||||
@vindex citation-leader (sc-)
|
||||
|
@ -337,10 +341,10 @@ multi-level nested citations.
|
|||
@section Recognizing Citations
|
||||
|
||||
Supercite also recognizes citations in the original article, and can
|
||||
transform these already cited lines in a number of ways. This is how
|
||||
transform these already cited lines in a number of ways. This is how
|
||||
Supercite suppresses the multiple citing of non-nested citations.
|
||||
Recognition of cited lines is controlled by variables analogous to those
|
||||
that make up the citation string as mentioned previously.
|
||||
Recognition of cited lines is controlled by variables analogous to
|
||||
those that make up the citation string as mentioned previously.
|
||||
|
||||
@vindex sc-citation-leader-regexp
|
||||
@vindex citation-leader-regexp (sc-)
|
||||
|
@ -387,16 +391,16 @@ change @code{sc-citation-root-regexp} you should always also change
|
|||
|
||||
@dfn{Mail header information keys} are nuggets of information that
|
||||
Supercite extracts from the various mail headers of the original
|
||||
message, placed in the reply buffer by the MUA@. Information is kept in
|
||||
the @dfn{Info Alist} as key-value pairs, and can be retrieved for use in
|
||||
various places within Supercite, such as in header rewrite functions and
|
||||
attribution selection. Other bits of data, composed and created by
|
||||
Supercite, are also kept as key-value pairs in this alist. In the case
|
||||
of mail fields, the key is the name of the field, omitting the trailing
|
||||
colon. Info keys are always case insensitive (as are mail headers), and
|
||||
the value for a corresponding key can be retrieved from the alist with
|
||||
the @code{sc-mail-field} function. Thus, if the following fields were
|
||||
present in the original article:@refill
|
||||
message, placed in the reply buffer by the MUA@. Information is kept
|
||||
in the @dfn{Info Alist} as key-value pairs, and can be retrieved for
|
||||
use in various places within Supercite, such as in header rewrite
|
||||
functions and attribution selection. Other bits of data, composed and
|
||||
created by Supercite, are also kept as key-value pairs in this alist.
|
||||
In the case of mail fields, the key is the name of the field, omitting
|
||||
the trailing colon. Info keys are always case insensitive (as are
|
||||
mail headers), and the value for a corresponding key can be retrieved
|
||||
from the alist with the @code{sc-mail-field} function. Thus, if the
|
||||
following fields were present in the original article:@refill
|
||||
|
||||
@example
|
||||
Date:@: 08 April 1991, 17:32:09 EST
|
||||
|
@ -419,7 +423,7 @@ then, the following lisp constructs return:
|
|||
Since the argument to @code{sc-mail-field} can be any string, it is
|
||||
possible that the mail field will not be present on the info alist
|
||||
(possibly because the mail header was not present in the original
|
||||
message). In this case, @code{sc-mail-field} will return the value of
|
||||
message). In this case, @code{sc-mail-field} will return the value of
|
||||
the variable @code{sc-mumble}.
|
||||
|
||||
Supercite always places all mail fields found in the yanked original
|
||||
|
@ -510,8 +514,8 @@ header.
|
|||
@vindex sc-rewrite-header-list
|
||||
@vindex rewrite-header-list (sc-)
|
||||
There are a number of built-in @dfn{header rewrite functions} supplied
|
||||
by Supercite, but you can write your own custom header rewrite functions
|
||||
(perhaps using the built-in ones as examples). The variable
|
||||
by Supercite, but you can write your own custom header rewrite
|
||||
functions (perhaps using the built-in ones as examples). The variable
|
||||
@code{sc-rewrite-header-list} contains the list of such header rewrite
|
||||
functions. This list is consulted both when inserting the initial
|
||||
reference header, and when displaying @dfn{electric references}.
|
||||
|
@ -521,7 +525,7 @@ reference header, and when displaying @dfn{electric references}.
|
|||
@vindex preferred-header-style (sc-)
|
||||
When Supercite is initially run on a reply buffer (via
|
||||
@code{sc-cite-original}), it will automatically call one of these
|
||||
functions. The one it uses is defined in the variable
|
||||
functions. The one it uses is defined in the variable
|
||||
@code{sc-preferred-header-style}. The value of this variable is an
|
||||
integer which is an index into the @code{sc-rewrite-header-list},
|
||||
beginning at zero.
|
||||
|
@ -556,9 +560,9 @@ problem either in your MUA or in Supercite's installation).
|
|||
@findex sc-no-header
|
||||
@findex no-header (sc-)
|
||||
@item sc-no-header
|
||||
This function produces no header. It should be used instead of
|
||||
@code{nil} to produce a blank header. This header can possibly contain
|
||||
a blank line after the @code{mail-header-separator} line.
|
||||
This function produces no header. It should be used instead of
|
||||
@code{nil} to produce a blank header. This header can possibly
|
||||
contain a blank line after the @code{mail-header-separator} line.
|
||||
|
||||
@item sc-no-blank-line-or-header
|
||||
@findex sc-no-blank-line-or-header
|
||||
|
@ -612,11 +616,11 @@ line after the @code{mail-header-separator} line will be removed.
|
|||
By default, when Supercite cites the original message for the first
|
||||
time, it just goes ahead and inserts the reference header indexed by
|
||||
@code{sc-preferred-header-style}. However, you may want to select
|
||||
different reference headers based on the type of reply or forwarding you
|
||||
are doing. You may also want to preview the reference header before
|
||||
deciding whether to insert it into the reply buffer or not. Supercite
|
||||
provides an optional @dfn{electric reference} mode which you can drop
|
||||
into to give you this functionality.
|
||||
different reference headers based on the type of reply or forwarding
|
||||
you are doing. You may also want to preview the reference header
|
||||
before deciding whether to insert it into the reply buffer or
|
||||
not. Supercite provides an optional @dfn{electric reference} mode
|
||||
which you can drop into to give you this functionality.
|
||||
|
||||
@vindex sc-electric-references-p
|
||||
@vindex electric-references-p (sc-)
|
||||
|
@ -629,7 +633,7 @@ through all the reference header rewrite functions in your
|
|||
@code{sc-rewrite-header-list}.
|
||||
|
||||
You can also set a new preferred header style, jump to any header, or
|
||||
jump to the preferred header. The header will be shown in the electric
|
||||
jump to the preferred header. The header will be shown in the electric
|
||||
reference buffer and the header index and function name will appear in
|
||||
the echo area.
|
||||
|
||||
|
@ -643,7 +647,7 @@ The following commands are available while in electric reference mode
|
|||
@kindex n
|
||||
@vindex sc-electric-circular-p
|
||||
@vindex electric-circular-p (sc-)
|
||||
Displays the next reference header in the electric reference buffer. If
|
||||
Displays the next reference header in the electric reference buffer. If
|
||||
the variable @code{sc-electric-circular-p} is non-@code{nil}, invoking
|
||||
@code{sc-eref-next} while viewing the last reference header in the list
|
||||
will wrap around to the first header.@refill
|
||||
|
@ -854,7 +858,7 @@ affect alternative citing styles.
|
|||
@vindex mail-warn-if-non-rfc822-p (sc-)
|
||||
All previously retrieved info key-value pairs are deleted from the info
|
||||
alist, then the mail headers in the body of the yanked message are
|
||||
scanned. Info key-value pairs are created for each header found. Also,
|
||||
scanned. Info key-value pairs are created for each header found. Also,
|
||||
such useful information as the author's name and email address are
|
||||
extracted. If the variable @code{sc-mail-warn-if-non-rfc822-p} is
|
||||
non-@code{nil}, then Supercite will warn you if it finds a mail header
|
||||
|
@ -931,7 +935,7 @@ in the original message should be cited or not. If this variable is
|
|||
non-@code{nil}, blank lines will be cited just like non-blank lines.
|
||||
Otherwise, blank lines will be treated as paragraph separators.
|
||||
|
||||
Citing of the original message is highly configurable. Supercite's
|
||||
Citing of the original message is highly configurable. Supercite's
|
||||
default setup does a pretty good job of citing many common forms of
|
||||
previously cited messages. But there are as many citation styles out
|
||||
there as people on the net, or just about! It would be impossible for
|
||||
|
@ -945,8 +949,8 @@ recognize those styles you see often.
|
|||
@vindex sc-post-hook
|
||||
@vindex post-hook (sc-)
|
||||
This variable is very similar to @code{sc-pre-hook}, except that it runs
|
||||
after @code{sc-cite-original} is finished. This hook is provided mostly
|
||||
for completeness and backward compatibility. Perhaps it could be used to
|
||||
after @code{sc-cite-original} is finished. This hook is provided mostly
|
||||
for completeness and backward compatibility. Perhaps it could be used to
|
||||
reset certain variables set in @code{sc-pre-hook}.@refill
|
||||
@end enumerate
|
||||
|
||||
|
@ -1012,7 +1016,7 @@ both of these variables is provided on the key binding
|
|||
@pxref{Post-yank Formatting Commands}).@refill
|
||||
|
||||
You will noticed that the minor mode string will
|
||||
show the state of these variables as qualifier characters. When both
|
||||
show the state of these variables as qualifier characters. When both
|
||||
variables are @code{nil}, the Supercite minor mode string will display
|
||||
@samp{SC}. When just @code{sc-auto-fill-region-p} is non-@code{nil}, the
|
||||
string will display @samp{SC:f}, and when just
|
||||
|
@ -1036,11 +1040,11 @@ fill cited text.
|
|||
@vindex preferred-attribution-list (sc-)
|
||||
|
||||
As you know, the attribution string is the part of the author's name
|
||||
that will be used to composed a non-nested citation string. Supercite
|
||||
that will be used to composed a non-nested citation string. Supercite
|
||||
scans the various mail headers present in the original article and uses
|
||||
a number of heuristics to extract strings which it puts into the
|
||||
@dfn{attribution association list} or @dfn{attribution alist}. This is
|
||||
analogous, but different than, the info alist previously mentioned. Each
|
||||
@dfn{attribution association list} or @dfn{attribution alist}. This is
|
||||
analogous, but different than, the info alist previously mentioned. Each
|
||||
element in the attribution alist is a key-value pair containing such
|
||||
information as the author's first name, middle names, and last name, the
|
||||
author's initials, and the author's email terminus.
|
||||
|
@ -1083,7 +1087,7 @@ the author's last name.
|
|||
the author's first middle name.
|
||||
|
||||
@item "sc-lastchoice"
|
||||
the last attribution string you have selected. This is useful when you
|
||||
the last attribution string you have selected. This is useful when you
|
||||
recite paragraphs in the reply.@refill
|
||||
|
||||
@item "sc-consult"
|
||||
|
@ -1094,7 +1098,7 @@ be used to select special attributions based on the value of any info
|
|||
key. See below for details.
|
||||
|
||||
@item "x-attribution"
|
||||
the original author's suggestion for attribution string choice. See below
|
||||
the original author's suggestion for attribution string choice. See below
|
||||
for details.@refill
|
||||
@end table
|
||||
|
||||
|
@ -1141,7 +1145,7 @@ Each element in this list contains lists of the following form:
|
|||
@findex sc-mail-field
|
||||
@findex mail-field (sc-)
|
||||
where @var{infokey} is a key for @code{sc-mail-field} and @var{regexp}
|
||||
is a regular expression to match against the @var{infokey}'s value. If
|
||||
is a regular expression to match against the @var{infokey}'s value. If
|
||||
@var{regexp} matches the @var{infokey}'s value, the @var{attribution} is
|
||||
used as the attribution string. Actually, @var{attribution} can be a
|
||||
string or a list; if it is a list, it is @code{eval}uated and the return
|
||||
|
@ -1166,7 +1170,7 @@ The fallback author name is contained in the variable
|
|||
@code{sc-default-author-name} and the fallback attribution string is
|
||||
contained in the variable @code{sc-default-attribution}. Default values
|
||||
for these variables are @code{"Anonymous"} and @code{"Anon"},
|
||||
respectively. Note that in most circumstances, getting the default
|
||||
respectively. Note that in most circumstances, getting the default
|
||||
author name or attribution is a sign that something is set up
|
||||
incorrectly.
|
||||
|
||||
|
@ -1174,7 +1178,7 @@ incorrectly.
|
|||
@vindex use-only-preference-p (sc-)
|
||||
Also, if the preferred attribution, which you specified in your
|
||||
@code{sc-preferred-attribution-list} variable cannot be found, a
|
||||
secondary method can be employed to find a valid attribution string. The
|
||||
secondary method can be employed to find a valid attribution string. The
|
||||
variable @code{sc-use-only-preference-p} controls what happens in this
|
||||
case. If the variable's value is non-@code{nil}, then
|
||||
@code{sc-default-author-name} and @code{sc-default-attribution} are
|
||||
|
@ -1209,11 +1213,11 @@ attribution alist.
|
|||
@vindex sc-confirm-always-p
|
||||
@vindex confirm-always-p (sc-)
|
||||
Once the attribution string has been automatically selected, a number of
|
||||
things can happen. If the variable @code{sc-confirm-always-p} is
|
||||
things can happen. If the variable @code{sc-confirm-always-p} is
|
||||
non-@code{nil}, you are queried for confirmation of the chosen
|
||||
attribution string. The possible values for completion are those strings
|
||||
attribution string. The possible values for completion are those strings
|
||||
in the attribution alist, however you are not limited to these choices.
|
||||
You can type any arbitrary string at the confirmation prompt. The string
|
||||
You can type any arbitrary string at the confirmation prompt. The string
|
||||
you enter becomes the value associated with the @code{"sc-lastchoice"}
|
||||
key in the attribution alist.
|
||||
|
||||
|
@ -1279,7 +1283,7 @@ author's name proper. Examples include the titles ``Dr.'', ``Mr.'',
|
|||
Also, some companies prepend or append the name of the division,
|
||||
organization, or project on the author's name. All of these titles are
|
||||
noise which should be ignored. The variable @code{sc-name-filter-alist}
|
||||
is used for this purpose. As implied by its name, this variable is an
|
||||
is used for this purpose. As implied by its name, this variable is an
|
||||
association list, where each element is a cons cell of the form:
|
||||
|
||||
@example
|
||||
|
@ -1290,7 +1294,7 @@ association list, where each element is a cons cell of the form:
|
|||
where @var{regexp} is a regular expression that is matched (using
|
||||
@code{string-match}) against each element of the @samp{From:@:} field's
|
||||
author name. @var{position} is a position indicator, starting at zero.
|
||||
Thus to strip out all titles of ``Dr.'', ``Mr.'', etc. from the name,
|
||||
Thus to strip out all titles of ``Dr.'', ``Mr.'', etc. from the name,
|
||||
@code{sc-name-filter-alist} would have an entry such as:
|
||||
|
||||
@example
|
||||
|
@ -1380,10 +1384,10 @@ The four special symbol values for @var{pred} are recognized:
|
|||
@item t
|
||||
Always produces a true outcome.
|
||||
@item begin
|
||||
Always executed before the frame is interpreted. This can be used to
|
||||
Always executed before the frame is interpreted. This can be used to
|
||||
initialize some global variables for example.
|
||||
@item end
|
||||
Always executed after frame interpreting is completed. This can be used
|
||||
Always executed after frame interpreting is completed. This can be used
|
||||
to perform any necessary post-processing.
|
||||
@item every
|
||||
Executes whenever the frame is reset, usually after the entire frame has
|
||||
|
@ -1406,12 +1410,12 @@ of the following elements:@refill
|
|||
@table @asis
|
||||
@item the symbol @code{continue}
|
||||
This tells Regi to continue processing entries after a match, instead of
|
||||
resetting the frame and moving @samp{point}. In this way, lines of text
|
||||
resetting the frame and moving @samp{point}. In this way, lines of text
|
||||
can have multiple matches, but you have to be careful to avoid entering
|
||||
infinite loops.
|
||||
|
||||
@item the symbol @code{abort}
|
||||
This tells Regi to terminate frame processing. However, any @code{end}
|
||||
This tells Regi to terminate frame processing. However, any @code{end}
|
||||
entry is still processed.
|
||||
|
||||
@item the list @code{(frame . @var{newframe})}
|
||||
|
@ -1422,7 +1426,7 @@ can be the frame in-lined.@refill
|
|||
|
||||
@item the list @code{(step . @var{step})}
|
||||
Tells Regi to move @var{step} number of lines forward as it continues
|
||||
processing. By default, Regi moves forward one line. @var{step} can be
|
||||
processing. By default, Regi moves forward one line. @var{step} can be
|
||||
zero or negative of course, but watch out for infinite loops.@refill
|
||||
@end table
|
||||
|
||||
|
@ -1510,12 +1514,12 @@ is not found from the alist, then the appropriate default frame is used.
|
|||
|
||||
Once the original message has been yanked into the reply buffer, and
|
||||
@code{sc-cite-original} has had a chance to do its thing, a number of
|
||||
useful Supercite commands will be available to you. Since there is wide
|
||||
useful Supercite commands will be available to you. Since there is wide
|
||||
variety in the keymaps that MUAs set up in their reply buffers, it is
|
||||
next to impossible for Supercite to properly sprinkle its commands into
|
||||
the existing keymap. For this reason Supercite places its commands on a
|
||||
separate keymap, putting this keymap onto a prefix key in the reply
|
||||
buffer. You can customize the prefix key Supercite uses by changing the
|
||||
buffer. You can customize the prefix key Supercite uses by changing the
|
||||
variable @code{sc-mode-map-prefix}. By default, the
|
||||
@code{sc-mode-map-prefix} is @kbd{C-c C-p}; granted, not a great choice,
|
||||
but unfortunately the best general solution so far. In the rest of this
|
||||
|
@ -1536,7 +1540,7 @@ prefix.@refill
|
|||
|
||||
Probably the three most common post-yank formatting operations that you
|
||||
will perform will be the manual citing, reciting, and unciting of
|
||||
regions of text in the reply buffer. Often you may want to recite a
|
||||
regions of text in the reply buffer. Often you may want to recite a
|
||||
paragraph to use a nickname, or manually cite a message when setting
|
||||
@code{sc-cite-region-limit} to @code{nil}. The following commands
|
||||
perform these functions on the region of text between @samp{point} and
|
||||
|
@ -1582,7 +1586,7 @@ cited line in the region by interpreting the selected frame from
|
|||
@item @code{sc-recite-region} (@kbd{C-c C-p r})
|
||||
This command recites each line the region by interpreting the selected
|
||||
frame from @code{sc-recite-frame-alist}, or the default reciting frame
|
||||
@code{sc-default-recite-frame}. It runs the hook
|
||||
@code{sc-default-recite-frame}. It runs the hook
|
||||
@code{sc-pre-recite-hook} before interpreting the frame.
|
||||
@xref{Configuring the Citation Engine}.@refill
|
||||
|
||||
|
@ -1606,7 +1610,7 @@ These two functions insert various strings into the reply buffer.
|
|||
@vindex preferred-header-style (sc-)
|
||||
Inserts a reference header into the reply buffer at @samp{point}. With
|
||||
no arguments, the header indexed by @code{sc-preferred-header-style} is
|
||||
inserted. An optional numeric argument is the index into
|
||||
inserted. An optional numeric argument is the index into
|
||||
@code{sc-rewrite-header-list} indicating which reference header to
|
||||
write.@refill
|
||||
|
||||
|
@ -1719,7 +1723,7 @@ Allows you to interactively view, modify, add, and delete info alist
|
|||
key-value pairs. With no argument, you are prompted (with completion)
|
||||
for a info key. The value associated with that key is displayed in the
|
||||
minibuffer. With an argument, this command will first ask if you want
|
||||
to view, modify, add, or delete an info key. Viewing is identical to
|
||||
to view, modify, add, or delete an info key. Viewing is identical to
|
||||
running the command with no arguments.
|
||||
|
||||
If you want to modify the value of a key, Supercite will first prompt
|
||||
|
@ -1770,7 +1774,7 @@ an optional numeric argument inserts that many new lines.@refill
|
|||
@chapter Hints to MUA Authors
|
||||
|
||||
In June of 1989, some discussion was held between the various MUA
|
||||
authors, the Supercite author, and other Supercite users. These
|
||||
authors, the Supercite author, and other Supercite users. These
|
||||
discussions centered around the need for a standard interface between
|
||||
MUAs and Supercite (or any future Supercite-like packages). This
|
||||
interface was formally proposed by Martin Neitzel on Fri, 23 Jun 89, in
|
||||
|
@ -1810,14 +1814,14 @@ some default citing when that is the case.@refill
|
|||
|
||||
If you are writing a new MUA package, or maintaining an existing MUA
|
||||
package, you should make it conform to this interface so that your users
|
||||
will be able to link Supercite easily and seamlessly. To do this, when
|
||||
will be able to link Supercite easily and seamlessly. To do this, when
|
||||
setting up a reply or forward buffer, your MUA should follow these
|
||||
steps:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Insert the original message, including the mail headers into the reply
|
||||
buffer. At this point you should not modify the raw text in any way
|
||||
buffer. At this point you should not modify the raw text in any way
|
||||
(except for any necessary decoding, e.g., of quoted-printable text), and
|
||||
you should place all the original headers into the body of the reply.
|
||||
This means that many of the mail headers will be duplicated, one copy
|
||||
|
@ -1826,7 +1830,7 @@ there will probably be more headers below this line.@refill
|
|||
|
||||
@item
|
||||
Set @samp{point} to the beginning of the line containing the first mail
|
||||
header in the body of the reply. Set @samp{mark} at the end of the
|
||||
header in the body of the reply. Set @samp{mark} at the end of the
|
||||
message text. It is very important that the region be set around the
|
||||
text Supercite is to modify and that the mail headers are within this
|
||||
region. Supercite will not venture outside the region for any reason,
|
||||
|
@ -1834,7 +1838,7 @@ and anything within the region is fair game, so don't put anything that
|
|||
@strong{must} remain unchanged inside the region.@refill
|
||||
|
||||
@item
|
||||
Run the hook @code{mail-citation-hook}. You will probably want to
|
||||
Run the hook @code{mail-citation-hook}. You will probably want to
|
||||
provide some kind of default citation functions in cases where the user
|
||||
does not have Supercite installed. By default, your MUA should
|
||||
@code{defvar} @code{mail-citation-hook} to @code{nil}, and in your
|
||||
|
@ -1853,9 +1857,9 @@ this interface ``out of the box.''
|
|||
|
||||
The Supercite package was derived from its predecessor Superyank 1.11
|
||||
which was inspired by various bits of code and ideas from Martin Neitzel
|
||||
and Ashwin Ram. They were the folks who came up with the idea of
|
||||
and Ashwin Ram. They were the folks who came up with the idea of
|
||||
non-nested citations and implemented some rough code to provide this
|
||||
style. Superyank and Supercite version 2 evolved to the point where much
|
||||
style. Superyank and Supercite version 2 evolved to the point where much
|
||||
of the attribution selection mechanism was automatic, and features have
|
||||
been continuously added through the comments and suggestions of the
|
||||
Supercite mailing list participants.
|
||||
|
|
|
@ -60,7 +60,7 @@ by formulas that can refer to the values of other cells.
|
|||
@end display
|
||||
@end ifnottex
|
||||
|
||||
To report bugs, send email to @email{jyavner@@member.fsf.org}.
|
||||
To report bugs, use @kbd{M-x report-emacs-bug}.
|
||||
|
||||
@insertcopying
|
||||
|
||||
|
@ -997,39 +997,62 @@ cell.
|
|||
|
||||
Coding by:
|
||||
@quotation
|
||||
Jonathan Yavner @email{jyavner@@member.fsf.org}@*
|
||||
Stefan Monnier @email{monnier@@gnu.org}@*
|
||||
Shigeru Fukaya @email{shigeru.fukaya@@gmail.com}
|
||||
@c jyavner@@member.fsf.org
|
||||
Jonathan Yavner,
|
||||
@c monnier@@gnu.org
|
||||
Stefan Monnier,
|
||||
@c shigeru.fukaya@@gmail.com
|
||||
Shigeru Fukaya
|
||||
@end quotation
|
||||
|
||||
@noindent
|
||||
Texinfo manual by:
|
||||
@quotation
|
||||
Jonathan Yavner @email{jyavner@@member.fsf.org}@*
|
||||
Brad Collins <brad@@chenla.org>
|
||||
@c jyavner@@member.fsf.org
|
||||
Jonathan Yavner,
|
||||
@c brad@@chenla.org
|
||||
Brad Collins
|
||||
@end quotation
|
||||
|
||||
@noindent
|
||||
Ideas from:
|
||||
@quotation
|
||||
Christoph Conrad @email{christoph.conrad@@gmx.de}@*
|
||||
CyberBob @email{cyberbob@@redneck.gacracker.org}@*
|
||||
Syver Enstad @email{syver-en@@online.no}@*
|
||||
Ami Fischman @email{fischman@@zion.bpnetworks.com}@*
|
||||
Thomas Gehrlein @email{Thomas.Gehrlein@@t-online.de}@*
|
||||
Chris F.A. Johnson @email{c.f.a.johnson@@rogers.com}@*
|
||||
Yusong Li @email{lyusong@@hotmail.com}@*
|
||||
Juri Linkov @email{juri@@jurta.org}@*
|
||||
Harald Maier @email{maierh@@myself.com}@*
|
||||
Alan Nash @email{anash@@san.rr.com}@*
|
||||
François Pinard @email{pinard@@iro.umontreal.ca}@*
|
||||
Pedro Pinto @email{ppinto@@cs.cmu.edu}@*
|
||||
Stefan Reichör @email{xsteve@@riic.at}@*
|
||||
Oliver Scholz @email{epameinondas@@gmx.de}@*
|
||||
Richard M. Stallman @email{rms@@gnu.org}@*
|
||||
Luc Teirlinck @email{teirllm@@dms.auburn.edu}@*
|
||||
J. Otto Tennant @email{jotto@@pobox.com}@*
|
||||
Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
|
||||
@c christoph.conrad@@gmx.de
|
||||
Christoph Conrad,
|
||||
@c cyberbob@@redneck.gacracker.org
|
||||
CyberBob,
|
||||
@c syver-en@@online.no
|
||||
Syver Enstad,
|
||||
@c fischman@@zion.bpnetworks.com
|
||||
Ami Fischman,
|
||||
@c Thomas.Gehrlein@@t-online.de
|
||||
Thomas Gehrlein,
|
||||
@c c.f.a.johnson@@rogers.com
|
||||
Chris F.A. Johnson,
|
||||
@c lyusong@@hotmail.com
|
||||
Yusong Li,
|
||||
@c juri@@jurta.org
|
||||
Juri Linkov,
|
||||
@c maierh@@myself.com
|
||||
Harald Maier,
|
||||
@c anash@@san.rr.com
|
||||
Alan Nash,
|
||||
@c pinard@@iro.umontreal.ca
|
||||
François Pinard,
|
||||
@c ppinto@@cs.cmu.edu
|
||||
Pedro Pinto,
|
||||
@c xsteve@@riic.at
|
||||
Stefan Reichör,
|
||||
@c epameinondas@@gmx.de
|
||||
Oliver Scholz,
|
||||
@c rms@@gnu.org
|
||||
Richard M. Stallman,
|
||||
@c teirllm@@dms.auburn.edu
|
||||
Luc Teirlinck,
|
||||
@c jotto@@pobox.com
|
||||
J. Otto Tennant,
|
||||
@c jphil@@acs.pagesjaunes.fr
|
||||
Jean-Philippe Theberge
|
||||
@end quotation
|
||||
|
||||
@c ===================================================================
|
||||
|
|
1760
doc/misc/todo-mode.texi
Normal file
1760
doc/misc/todo-mode.texi
Normal file
File diff suppressed because it is too large
Load diff
|
@ -3186,13 +3186,13 @@ for example:
|
|||
@end lisp
|
||||
|
||||
Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and
|
||||
"%%p", respectively. The entries of @code{ControlPath},
|
||||
@code{ControlMaster} and @code{ControlPersist} can be removed from
|
||||
this setting, if they are configured properly in your
|
||||
@file{~/.ssh/config}:
|
||||
"%%p", respectively.
|
||||
|
||||
These settings can be suppressed, if they are configured properly in
|
||||
your @file{~/.ssh/config}:
|
||||
|
||||
@lisp
|
||||
(setq tramp-ssh-controlmaster-options "")
|
||||
(setq tramp-use-ssh-controlmaster-options nil)
|
||||
@end lisp
|
||||
|
||||
|
||||
|
|
|
@ -105,10 +105,7 @@ version of Emacs. It was developed primarily on various versions of
|
|||
Microsoft Windows, but has also been tested on MS-DOS, and various
|
||||
versions of UNIX and GNU/Linux.
|
||||
|
||||
WoMan is distributed with GNU Emacs. In addition, the current source
|
||||
code and documentation files are available from
|
||||
@uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, the WoMan web
|
||||
server}.
|
||||
WoMan is distributed with GNU Emacs.
|
||||
|
||||
WoMan implements a subset of the formatting performed by the Emacs
|
||||
@code{man} (or @code{manual-entry}) command to format a Unix-style
|
||||
|
@ -148,11 +145,7 @@ which begin with the prefix @code{woman-} (or occasionally
|
|||
either running the command @code{woman-mini-help} or selecting the WoMan
|
||||
menu option @samp{Mini Help}.
|
||||
|
||||
WoMan is (of course) still under development! Please
|
||||
@email{F.J.Wright@@qmw.ac.uk, let me know} what doesn't work---I am
|
||||
adding and improving functionality as testing shows that it is
|
||||
necessary. Guidance on reporting bugs is given below. @xref{Bugs, ,
|
||||
Reporting Bugs}.
|
||||
Guidance on reporting bugs is given below. @xref{Bugs, , Reporting Bugs}.
|
||||
|
||||
@c ===================================================================
|
||||
|
||||
|
@ -276,6 +269,7 @@ of the facilities implemented in the Emacs @code{man} library. WoMan
|
|||
and man can happily co-exist, which is very useful for comparison and
|
||||
debugging purposes.
|
||||
|
||||
@ignore
|
||||
@code{nroff} simulates non-@acronym{ASCII} characters by using one or more
|
||||
@acronym{ASCII} characters. WoMan should be able to do much better than
|
||||
this. I have recently begun to add support for WoMan to use more of the
|
||||
|
@ -284,6 +278,7 @@ aspect that I intend to develop further in the near future. It should
|
|||
be possible to move WoMan from an emulation of @code{nroff} to an
|
||||
emulation of @code{troff} as GNU Emacs moves to providing bit-mapped
|
||||
display facilities.
|
||||
@end ignore
|
||||
|
||||
@node Finding
|
||||
@chapter Finding and Formatting Man Pages
|
||||
|
@ -1290,8 +1285,8 @@ try the latest version of @file{woman.el} from the Emacs repository
|
|||
on @uref{http://savannah.gnu.org/projects/emacs/}. If it still fails, please
|
||||
|
||||
@item
|
||||
send a bug report to @email{bug-gnu-emacs@@gnu.org} and to
|
||||
@email{F.J.Wright@@qmw.ac.uk}. Please include the entry from the
|
||||
use @kbd{M-x report-emacs-bug} to send a bug report.
|
||||
Please include the entry from the
|
||||
@code{*WoMan-Log*} buffer relating to the problem file, together with
|
||||
a brief description of the problem. Please indicate where you got the
|
||||
man source file from, but do not send it unless asked to send it.
|
||||
|
@ -1310,43 +1305,80 @@ I also thank the following for helpful suggestions, bug reports, code
|
|||
fragments, general interest, etc.:
|
||||
|
||||
@quotation
|
||||
Jari Aalto, @email{jari.aalto@@cs.tpu.fi}@*
|
||||
Dean Andrews, @email{dean@@dra.com}@*
|
||||
Juanma Barranquero, @email{barranquero@@laley-actualidad.es}@*
|
||||
Karl Berry, @email{kb@@cs.umb.edu}@*
|
||||
Jim Chapman, @email{jchapman@@netcomuk.co.uk}@*
|
||||
Frederic Corne, @email{frederic.corne@@erli.fr}@*
|
||||
Peter Craft, @email{craft@@alacritech.com}@*
|
||||
Charles Curley, @email{ccurley@@trib.com}@*
|
||||
Jim Davidson, @email{jdavidso@@teknowledge.com}@*
|
||||
Kevin D'Elia, @email{Kevin.DElia@@mci.com}@*
|
||||
John Fitch, @email{jpff@@maths.bath.ac.uk}@*
|
||||
Hans Frosch, @email{jwfrosch@@rish.b17c.ingr.com}@*
|
||||
Guy Gascoigne-Piggford, @email{ggp@@informix.com}@*
|
||||
Brian Gorka, @email{gorkab@@sanchez.com}@*
|
||||
Nicolai Henriksen, @email{nhe@@lyngso-industri.dk}@*
|
||||
Thomas Herchenroeder, @email{the@@software-ag.de}@*
|
||||
Alexander Hinds, @email{ahinds@@thegrid.net}@*
|
||||
Stefan Hornburg, @email{sth@@hacon.de}@*
|
||||
Theodore Jump, @email{tjump@@cais.com}@*
|
||||
Paul Kinnucan, @email{paulk@@mathworks.com}@*
|
||||
Jonas Linde, @email{jonas@@init.se}@*
|
||||
Andrew McRae, @email{andrewm@@optimation.co.nz}@*
|
||||
Howard Melman, @email{howard@@silverstream.com}@*
|
||||
Dennis Pixton, @email{dennis@@math.binghamton.edu}@*
|
||||
T. V. Raman, @email{raman@@Adobe.com}@*
|
||||
Bruce Ravel, @email{bruce.ravel@@nist.gov}@*
|
||||
Benjamin Riefenstahl, @email{benny@@crocodial.de}@*
|
||||
Kevin Ruland, @email{kruland@@seistl.com}@*
|
||||
Tom Schutter, @email{tom@@platte.com}@*
|
||||
Wei-Xue Shi, @email{wxshi@@ma.neweb.ne.jp}@*
|
||||
Fabio Somenzi, @email{fabio@@joplin.colorado.edu}@*
|
||||
Karel Sprenger, @email{ks@@ic.uva.nl}@*
|
||||
Chris Szurgot, @email{szurgot@@itribe.net}@*
|
||||
Paul A. Thompson, @email{pat@@po.cwru.edu}@*
|
||||
Arrigo Triulzi, @email{arrigo@@maths.qmw.ac.uk}@*
|
||||
Geoff Voelker, @email{voelker@@cs.washington.edu}@*
|
||||
Eli Zaretskii, @email{eliz@@is.elta.co.il}
|
||||
@c jari.aalto@@cs.tpu.fi
|
||||
Jari Aalto,
|
||||
@c dean@@dra.com
|
||||
Dean Andrews,
|
||||
@c barranquero@@laley-actualidad.es
|
||||
Juanma Barranquero,
|
||||
@c kb@@cs.umb.edu
|
||||
Karl Berry,
|
||||
@c jchapman@@netcomuk.co.uk
|
||||
Jim Chapman,
|
||||
@c frederic.corne@@erli.fr
|
||||
Frederic Corne,
|
||||
@c craft@@alacritech.com
|
||||
Peter Craft,
|
||||
@c ccurley@@trib.com
|
||||
Charles Curley,
|
||||
@c jdavidso@@teknowledge.com
|
||||
Jim Davidson,
|
||||
@c Kevin.DElia@@mci.com
|
||||
Kevin D'Elia,
|
||||
@c jpff@@maths.bath.ac.uk
|
||||
John Fitch,
|
||||
@c jwfrosch@@rish.b17c.ingr.com
|
||||
Hans Frosch,
|
||||
@c ggp@@informix.com
|
||||
Guy Gascoigne-Piggford,
|
||||
@c gorkab@@sanchez.com
|
||||
Brian Gorka,
|
||||
@c nhe@@lyngso-industri.dk
|
||||
Nicolai Henriksen,
|
||||
@c the@@software-ag.de
|
||||
Thomas Herchenroeder,
|
||||
@c ahinds@@thegrid.net
|
||||
Alexander Hinds,
|
||||
@c sth@@hacon.de
|
||||
Stefan Hornburg,
|
||||
@c tjump@@cais.com
|
||||
Theodore Jump,
|
||||
@c paulk@@mathworks.com
|
||||
Paul Kinnucan,
|
||||
@c jonas@@init.se
|
||||
Jonas Linde,
|
||||
@c andrewm@@optimation.co.nz
|
||||
Andrew McRae,
|
||||
@c howard@@silverstream.com
|
||||
Howard Melman,
|
||||
@c dennis@@math.binghamton.edu
|
||||
Dennis Pixton,
|
||||
@c raman@@Adobe.com
|
||||
T. V. Raman,
|
||||
@c bruce.ravel@@nist.gov
|
||||
Bruce Ravel,
|
||||
@c benny@@crocodial.de
|
||||
Benjamin Riefenstahl,
|
||||
@c kruland@@seistl.com
|
||||
Kevin Ruland,
|
||||
@c tom@@platte.com
|
||||
Tom Schutter,
|
||||
@c wxshi@@ma.neweb.ne.jp
|
||||
Wei-Xue Shi,
|
||||
@c fabio@@joplin.colorado.edu
|
||||
Fabio Somenzi,
|
||||
@c ks@@ic.uva.nl
|
||||
Karel Sprenger,
|
||||
@c szurgot@@itribe.net
|
||||
Chris Szurgot,
|
||||
@c pat@@po.cwru.edu
|
||||
Paul A. Thompson,
|
||||
@c arrigo@@maths.qmw.ac.uk
|
||||
Arrigo Triulzi,
|
||||
@c voelker@@cs.washington.edu
|
||||
Geoff Voelker,
|
||||
@c eliz@@is.elta.co.il
|
||||
Eli Zaretskii
|
||||
@end quotation
|
||||
|
||||
@c ===================================================================
|
||||
|
|
|
@ -1,3 +1,47 @@
|
|||
2013-08-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* NEWS: Mention -lz and `decompress-gzipped-region'.
|
||||
|
||||
2013-08-08 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* NEWS: Document new keybinding of `C-x r f' to frameset-to-register.
|
||||
|
||||
2013-08-06 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* NEWS: Mention `cache-long-scans'.
|
||||
|
||||
2013-08-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* tutorials/TUTORIAL.es: Fix typo (bug#15027).
|
||||
|
||||
2013-08-03 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* NEWS: Document new package frameset.el.
|
||||
|
||||
2013-08-03 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* TODO: Adjust entry about bug reporting.
|
||||
|
||||
2013-08-02 Bastien Guerry <bzg@gnu.org>
|
||||
|
||||
* DEVEL.HUMOR: New entry.
|
||||
|
||||
2013-08-02 Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* tutorials/TUTORIAL: Remove a redundant sentence about yanking.
|
||||
|
||||
* tutorials/TUTORIAL.cn: Update; synchronize with TUTORIAL.
|
||||
|
||||
* tutorials/TUTORIAL.translators (Maintainer): Update the maintainer.
|
||||
|
||||
2013-08-02 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* tutorials/TUTORIAL.es: Fix typos (bug#15000).
|
||||
|
||||
2013-07-26 Micah Anderson <micah@riseup.net> (tiny change)
|
||||
|
||||
* spook.lines: Additions. (Bug#14658)
|
||||
|
||||
2013-07-16 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* NEWS: Document blink-cursor-blinks and blink timers stopped.
|
||||
|
|
|
@ -194,3 +194,11 @@ drivers?"
|
|||
depression or loneliness when it is left out of the picture, so I
|
||||
wouldn't worry about it too much."
|
||||
-- Lennart Borgman and Jason Rumney
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
"... a non-CS-educated guy like me ..."
|
||||
|
||||
"Kind of late, but thanks for letting us know. I've just revoked your
|
||||
write access to the repository for the obvious safety reasons,"
|
||||
-- Bastien Guerry and Stefan Monnier
|
||||
|
|
82
etc/NEWS
82
etc/NEWS
|
@ -41,6 +41,10 @@ specially.
|
|||
** Directories passed to configure option `--enable-locallisppath' are
|
||||
no longer created during installation.
|
||||
|
||||
** Emacs can be compiled with zlib support. If this library is present
|
||||
(which it normally is on most systems), the function
|
||||
`decompress-gzipped-region' becomes available.
|
||||
|
||||
---
|
||||
** Emacs for NS (OSX, GNUStep) can be built with ImageMagick support.
|
||||
pkg-config is required to find ImageMagick libraries.
|
||||
|
@ -53,6 +57,10 @@ pkg-config is required to find ImageMagick libraries.
|
|||
|
||||
** Key ? also describes prefix bindings like C-h.
|
||||
|
||||
+++
|
||||
** `cache-long-line-scans' has been renamed to `cache-long-scans'
|
||||
because it affects caching of paragraph scanning results as well.
|
||||
|
||||
+++
|
||||
** `apropos-variable' is now `apropos-user-option'
|
||||
`apropos-user-option' shows all user options while `apropos-variable'
|
||||
|
@ -127,6 +135,11 @@ You can change the default by customizing the variable blink-cursor-blinks.
|
|||
Also timers for blinking are stopped when no blinking is done, so Emacs does
|
||||
not consume CPU cycles.
|
||||
|
||||
** New command `frameset-to-register' is now bound to `C-x r f', replacing
|
||||
`frame-configuration-to-register'. It offers similar functionality, plus
|
||||
some enhancements, like the ability to restore deleted frames. Command
|
||||
`frame-configuration-to-register' is still available, but unbound.
|
||||
|
||||
|
||||
* Editing Changes in Emacs 24.4
|
||||
|
||||
|
@ -158,6 +171,10 @@ You can pick the name of the function and the variables with `C-x 4 a'.
|
|||
|
||||
* Changes in Specialized Modes and Packages in Emacs 24.4
|
||||
|
||||
** The debugger's `e' command evaluates the code in the context at point.
|
||||
This includes using the lexical environment at point, which means that
|
||||
`e' now lets you access lexical variables as well.
|
||||
|
||||
** `eshell' now supports visual subcommands and options
|
||||
Eshell has been able to handle "visual" commands (interactive,
|
||||
non-line oriented commands such as top that require display
|
||||
|
@ -180,9 +197,6 @@ You can use the new function `remember-store-in-files' within the
|
|||
See `remember-data-directory' and `remember-directory-file-name-format'
|
||||
for new options related to this function.
|
||||
|
||||
** `ido-use-virtual-buffers' takes a new value 'auto.
|
||||
** `ido-decorations' has been slightly extended to give a bit more control.
|
||||
|
||||
** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>.
|
||||
Affected files:
|
||||
~/.emacs.d/timelog replaces ~/.timelog
|
||||
|
@ -228,10 +242,28 @@ The default separator is changed to allow surrounding spaces around the comma.
|
|||
|
||||
** Calendar and Diary
|
||||
|
||||
*** New faces: `calendar-weekday-header', `calendar-weekend-header',
|
||||
`calendar-month-header'.
|
||||
|
||||
*** New option `calendar-day-header-array'.
|
||||
|
||||
*** The variable `calendar-font-lock-keywords' is obsolete.
|
||||
|
||||
+++
|
||||
*** New variable `diary-from-outlook-function', used by the command
|
||||
`diary-from-outlook'.
|
||||
|
||||
** VC and related modes
|
||||
|
||||
*** In VC directory mode, `D' displays diffs between VC-controlled
|
||||
whole tree revisions.
|
||||
|
||||
*** In VC directory mode, `L' lists the change log for the current VC
|
||||
controlled tree in a window.
|
||||
|
||||
*** `C-x v G' (globally) and `G' (in VC directory mode) ignores a
|
||||
file under current version control system.
|
||||
|
||||
** cl-lib
|
||||
|
||||
*** New macro cl-tagbody.
|
||||
|
@ -261,9 +293,9 @@ on the given date.
|
|||
auto-saves of the desktop.
|
||||
|
||||
*** `desktop-restore-frames', enabled by default, allows saving and
|
||||
restoring the window/frame configuration. Additional options
|
||||
`desktop-restore-in-current-display' and
|
||||
`desktop-restoring-reuses-frames' allow further customization.
|
||||
restoring the frame/window configuration (frameset). Additional options
|
||||
`desktop-restore-in-current-display', `desktop-restore-reuses-frames'
|
||||
and `desktop-restore-forces-onscreen' offer further customization.
|
||||
|
||||
** Dired
|
||||
|
||||
|
@ -275,6 +307,22 @@ restoring the window/frame configuration. Additional options
|
|||
If set to a number, this can be used to avoid accidentally paste large
|
||||
amounts of data into the ERC input.
|
||||
|
||||
** EPA
|
||||
|
||||
*** New option `epa-mail-aliases'.
|
||||
|
||||
You can set this to a list of alias expansions for keys to use
|
||||
in `epa-mail-encrypt'.
|
||||
|
||||
If one element of the variable's value is ("foo@bar.com" "foo@hello.org"),
|
||||
that means: when one of the recipients of the message being encrypted
|
||||
is `foo@bar.com', encrypt the message for `foo@hello.org' instead.
|
||||
|
||||
If one element of the variable's value is ("foo@bar.com"),
|
||||
that means: when one of the recipients of the message being encrypted
|
||||
is `foo@bar.com', ignore that name as regards encryption.
|
||||
This is useful to avoid a query when you have no key for that name.
|
||||
|
||||
---
|
||||
** New F90 mode option `f90-smart-end-names'.
|
||||
|
||||
|
@ -283,6 +331,11 @@ amounts of data into the ERC input.
|
|||
*** The icomplete-separator is customizable, and its default has changed.
|
||||
*** Removed icomplete-show-key-bindings.
|
||||
|
||||
** Ido
|
||||
*** Ido has a manual now.
|
||||
*** `ido-use-virtual-buffers' takes a new value 'auto.
|
||||
*** `ido-decorations' has been slightly extended to give a bit more control.
|
||||
|
||||
** Image mode
|
||||
|
||||
*** New commands `n' (`image-next-file') and `p' (`image-previous-file')
|
||||
|
@ -395,6 +448,7 @@ New features include:
|
|||
archive files, undoing or unarchiving done items;
|
||||
- reprioritizing items by inputting a numerical priority;
|
||||
- extensive customizability of operation and display, including numerous faces.
|
||||
The Todo mode user manual describes all commands and most user options.
|
||||
To support some of these features, a new file format is used, which is
|
||||
incompatible with the old format; however, you can convert old todo and done
|
||||
item files to the new format on initializing the first new todo file, or at any
|
||||
|
@ -483,13 +537,22 @@ It is layered as:
|
|||
- advice-add/advice-remove to add/remove a piece of advice on a named function,
|
||||
much like `defadvice' does.
|
||||
|
||||
** The package file-notify.el provides an interface for file system
|
||||
** New frameset.el package.
|
||||
It provides a set of operations to save a frameset (the state of all
|
||||
or a subset of the existing frames and windows, somewhat similar to a
|
||||
frame configuration), both in-session and persistently, and restore it
|
||||
at some point in the future.
|
||||
|
||||
+++
|
||||
** The package filenotify.el provides an interface for file system
|
||||
notifications. It requires, that Emacs is compiled with one of the
|
||||
low-level libraries gfilenotify.c, inotify.c or w32notify.c.
|
||||
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 24.4
|
||||
|
||||
** `defvar' and `defcustom' in a let-binding affect the "external" default.
|
||||
|
||||
** The syntax of ?» and ?« is now punctuation instead of matched parens.
|
||||
Some languages match those as »...« and others as «...» so better stay neutral.
|
||||
|
||||
|
@ -540,6 +603,9 @@ in the presence of files with negative time stamps.
|
|||
|
||||
* Lisp Changes in Emacs 24.4
|
||||
|
||||
+++
|
||||
** New function `define-error'.
|
||||
|
||||
** New hook `tty-setup-hook'.
|
||||
|
||||
+++
|
||||
|
@ -649,7 +715,7 @@ These attributes are only meaningful for coding-systems of type
|
|||
with the same interpretation as the returned value of `visited-file-modtime'.
|
||||
|
||||
** time-to-seconds is not obsolete any more.
|
||||
** New function special-form-p.
|
||||
** New functions special-form-p and macrop.
|
||||
** Docstrings can be made dynamic by adding a `dynamic-docstring-function'
|
||||
text-property on the first char.
|
||||
|
||||
|
|
12
etc/TODO
12
etc/TODO
|
@ -76,7 +76,8 @@ to use it.
|
|||
** Convert all defvars with leading `*' in the doc-strings into defcustoms
|
||||
of appropriate :type and :group.
|
||||
|
||||
** Remove any leading `*'s from defcustom doc-strings. [done?]
|
||||
** Remove any leading `*'s from defcustom doc-strings.
|
||||
[done?] [A lot of them are in CC Mode.]
|
||||
|
||||
** Remove unnecessary autoload cookies from defcustoms.
|
||||
This needs a bit of care, since often people have become used to
|
||||
|
@ -176,6 +177,15 @@ where <device> is the network device found under the first key.
|
|||
|
||||
** Check for any included packages that define obsolete bug-reporting commands.
|
||||
Change them to use report-emacs-bug.
|
||||
*** Related functions:
|
||||
**** gnus-bug
|
||||
**** report-calc-bug
|
||||
**** org-submit-bug-report
|
||||
**** lm-report-bug
|
||||
**** tramp-bug
|
||||
**** c-submit-bug-report
|
||||
**** ffap-bug and ffap-submit-bug (obsoleted)
|
||||
[Do all of them need changing?]
|
||||
|
||||
** Allow fringe indicators to display a tooltip (provide a help-echo property?)
|
||||
|
||||
|
|
BIN
etc/spook.lines
BIN
etc/spook.lines
Binary file not shown.
|
@ -372,13 +372,15 @@ the text between the two positions.
|
|||
|
||||
The difference between "killing" and "deleting" is that "killed" text
|
||||
can be reinserted (at any position), whereas "deleted" things cannot
|
||||
be reinserted in this way (you can, however, undo a deletion--see below).
|
||||
Reinsertion of killed text is called "yanking". Generally, the
|
||||
commands that can remove a lot of text kill the text (they are set up so
|
||||
that you can yank the text), while the commands that remove just one
|
||||
character, or only remove blank lines and spaces, do deletion (so you
|
||||
cannot yank that text). <DEL> and C-d do deletion in the simplest
|
||||
case, with no argument. When given an argument, they kill instead.
|
||||
be reinserted in this way (you can, however, undo a deletion--see
|
||||
below). Reinsertion of killed text is called "yanking". (Think of it
|
||||
as yanking back, or pulling back, some text that was taken away.)
|
||||
Generally, the commands that can remove a lot of text kill the text
|
||||
(they are set up so that you can yank the text), while the commands
|
||||
that remove just one character, or only remove blank lines and spaces,
|
||||
do deletion (so you cannot yank that text). <DEL> and C-d do deletion
|
||||
in the simplest case, with no argument. When given an argument, they
|
||||
kill instead.
|
||||
|
||||
>> Move the cursor to the beginning of a line which is not empty.
|
||||
Then type C-k to kill the text on that line.
|
||||
|
@ -391,13 +393,12 @@ treats a numeric argument specially: it kills that many lines AND
|
|||
their contents. This is not mere repetition. C-u 2 C-k kills two
|
||||
lines and their newlines; typing C-k twice would not do that.
|
||||
|
||||
Reinserting killed text is called "yanking". (Think of it as yanking
|
||||
back, or pulling back, some text that was taken away.) You can yank
|
||||
the killed text either at the same place where it was killed, or at
|
||||
some other place in the text you are editing, or even in a different
|
||||
file. You can yank the same text several times; that makes multiple
|
||||
copies of it. Some other editors call killing and yanking "cutting"
|
||||
and "pasting" (see the Glossary in the Emacs manual).
|
||||
You can yank the killed text either at the same place where it was
|
||||
killed, or at some other place in the text you are editing, or even in
|
||||
a different file. You can yank the same text several times; that
|
||||
makes multiple copies of it. Some other editors call killing and
|
||||
yanking "cutting" and "pasting" (see the Glossary in the Emacs
|
||||
manual).
|
||||
|
||||
The command for yanking is C-y. It reinserts the last killed text,
|
||||
at the current cursor position.
|
||||
|
|
|
@ -14,8 +14,9 @@ META 键(有时候用 EDIT 或 ALT 来标示)。为了避免每次都要写
|
|||
先按一下 ESC 键然后放开,再输入 <chr>。我们用 <ESC> 来表示
|
||||
ESC 键。
|
||||
|
||||
重要提示:要退出 Emacs,请用 C-x C-c(两个连续的组合键)。下文中左边顶
|
||||
行的“>>”字样用来提示你尝试键盘命令。比如:
|
||||
重要提示:要退出 Emacs,请用 C-x C-c(两个连续的组合键)。
|
||||
要退出一个正在运行中的命令,请用 C-g。
|
||||
下文中左边顶行的“>>”字样用来提示你尝试键盘命令。比如:
|
||||
<<Blank lines inserted around following line by help-with-tutorial>>
|
||||
[本页当中特意留出一些空白是出于教学目的,请继续往后阅读]
|
||||
>> 现在输入 C-v (查看下一屏文字)移动到下一屏。
|
||||
|
@ -43,7 +44,9 @@ META、EDIT 或 ALT 键那么就先按 <ESC> 再按 v)。
|
|||
(注意是 CONTROL-L,不是 CONTROL-1)
|
||||
|
||||
>> 找到光标,留意其附近的文字,然后输入 C-l。
|
||||
找找光标在哪里,你会发现其附近的文字并没有变化。
|
||||
找找光标在哪里,你会发现其附近的文字与之前相同,位置却变为屏幕的中心。
|
||||
如果你再次输入 C-l ,附近的文字将移动到屏幕的顶端。再次输入 C-l ,
|
||||
文字将移动到底端。
|
||||
|
||||
如果你的键盘上有 PageUp 和 PageDn,也可以用这两个键来滚屏。不过使用
|
||||
C-v 和 M-v 的效率要更高一些。
|
||||
|
@ -78,8 +81,8 @@ P 代表 previous(上一行),N 代表 next(下一行),B 代表 backw
|
|||
>> 用 C-f 把光标移动到这一行,然后再用 C-p 往上挪。
|
||||
注意观察当光标在一行的中央时 C-p 命令的行为。
|
||||
|
||||
每行文字都以一个“换行符”结束,“换行符”把行与行区分开来。文件的最后
|
||||
一行也应该也有一个换行符(不过 Emacs 并不强制要求这一点)。
|
||||
每行文字都以一个“换行符”结束,“换行符”把行与行区分开来。(通常情况下,
|
||||
一个文件的最后一行会有一个换行符,但是 Emacs 不强制要求这一点。)
|
||||
|
||||
>> 在一行的行头输入 C-b。
|
||||
光标应该会移动到前一行的行尾,因为光标在回退过程中越过了换行符。
|
||||
|
@ -179,27 +182,20 @@ EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不放,然
|
|||
标志――只要给出有一个前缀参数,不管其值为何,它都会改变命令的功能。
|
||||
|
||||
而 C-v 和 M-v 则属于另一种类型的例外。当给定一个参数时,它们将滚动你指
|
||||
定的“行数”,而不是“屏数”。举例来说,C-u 8 C-v 将屏幕向下滚动 8 行,
|
||||
而不是 8 屏。
|
||||
定的“行数”,而不是“屏数”。举例来说,C-u 8 C-v 将文本向下滚动 8 行。
|
||||
|
||||
>> 现在试试看,输入 C-u 8 C-v。
|
||||
|
||||
这个命令应该已经将文字向上滚动了 8 行。如果你想将它再次地向下滚动,你可
|
||||
以给定一个参数然后执行 M-v。
|
||||
|
||||
如果你正在使用一个窗口系统,比如 X11 或者微软的 Windows,那么在 Emacs
|
||||
窗口的边缘应该有一个长方形的区域叫“滚动条”,你可以用鼠标操纵滚动条来
|
||||
滚动文字。
|
||||
如果你正在使用图形界面,比如 X 或者微软的 Windows,那么在 Emacs窗
|
||||
口的一边应该有一个长方形的区域叫“滚动条”。你可以用鼠标操纵滚动条来滚动
|
||||
文字。
|
||||
|
||||
>> 试着在“滚动条内的反白区域”上按一下鼠标中键。
|
||||
文字应该会滚动到鼠标所指示的位置。
|
||||
如果你的鼠标有滚轮的话,你也可以使用滚轮来滚动。
|
||||
|
||||
>> 当按住中键时,试着将鼠标上下移动。
|
||||
你会看到文字随着鼠标的移动而上下滚动。
|
||||
【Windows 版本符合 Windows 程序的传统操作习惯,上述操作不适用。】
|
||||
|
||||
|
||||
* 在 EMACS 失去响应的时候(WHEN EMACS IS HUNG)
|
||||
* 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
|
||||
-----------------------------------------------
|
||||
|
||||
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
|
||||
|
@ -234,7 +230,7 @@ C-g 还可以取消数字参数和只输入到一半的命令。
|
|||
* 窗格(WINDOWS)
|
||||
-----------------
|
||||
|
||||
Emacs 可以有多个窗格,每个窗格显示不同的文字。后面会介绍怎么对付多个窗
|
||||
Emacs 可以有多个“窗格”,每个窗格显示不同的文字。后面会介绍怎么对付多个窗
|
||||
格,现在我们先学会如何关掉多余的窗格。其实也很简单:
|
||||
|
||||
C-x 1 只保留一个窗格(也就是关掉其它所有窗格)。
|
||||
|
@ -244,49 +240,46 @@ Emacs 可以有多个窗格,每个窗格显示不同的文字。后面会介
|
|||
|
||||
>> 把光标移到本行然后输入 C-u 0 C-l。
|
||||
|
||||
>> 输入 CONTROL-h k CONTROL-f。观察当一个新窗格出现时当前窗格(用来显示
|
||||
CONTROL-f 命令的文档)是如何缩小的。
|
||||
>> 输入 C-h k C-f。观察当一个新窗格出现时当前窗格(用来显示
|
||||
C-f 命令的文档)是如何缩小的。
|
||||
|
||||
>> 输入 C-x 1 关掉文档窗格。
|
||||
|
||||
这个命令跟先前学过的命令不太一样,因为它包含了两个字符,以 CONTROL-x 开
|
||||
始。有一系列命令都是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、
|
||||
缓冲区【缓冲区(buffer)会在后文详细介绍】”等等诸如此类的东西有关,其
|
||||
中有些命令可能包含了 2 个、3 个或者 4 个字符。
|
||||
有一系列命令是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、缓冲区
|
||||
【缓冲区(buffer)会在后文详细介绍】”等等诸如此类的东西有关,其中有些
|
||||
命令可能包含了 2 个、3 个或者 4 个字符。
|
||||
|
||||
|
||||
* 插入与删除(INSERTING AND DELETING)
|
||||
--------------------------------------
|
||||
|
||||
插入文字很简单,直接敲键盘就可以了。你能看到的字符,比如 A、7、* 等等,
|
||||
都被 Emacs 视为文字并且可以直接插入。敲 <Return>(回车键)会插入一个换
|
||||
行符。
|
||||
插入文字很简单,直接敲键盘就可以了。普通的字符,比如 A、7、* 等等,会
|
||||
随着你的输入而插入。要插入一个换行符,输入 <Return>(这个键在键盘上有
|
||||
时会被标注成“Enter”)。
|
||||
|
||||
你可以用 <Delback> 来删除最后输入的一个字符,这个跟你在 Emacs 之外的用
|
||||
法应该一样。一般来说 <Delback> 就是位于 <Return> 键上方某处的一个大块头
|
||||
的键,通常被标示为“Delete”、“Del”或者“Backspace”。
|
||||
你可以用 <DEL> 来删除光标左边的字符,这个键通常被标注为“Backspace”――跟
|
||||
你在 Emacs 之外的用法应该一样,删除最后一个输入的字符。
|
||||
|
||||
如果你找到了“Backspace”键,那么它应该就是 <Delback>;这时哪怕你又在别
|
||||
的地方找到了一个“Del”键,那么它也应该不是 <Delback>。
|
||||
你的键盘上可能有另外一个键,标注着 <Delete>,但那个不是我们所说的 <DEL>。
|
||||
|
||||
一种更通用的说法是,<Delback> 将删除位于光标前的一个字符。
|
||||
|
||||
>> 现在就来试试――敲点字,然后按几下 <Delback> 删除它们。
|
||||
>> 现在就来试试――敲点字,然后按几下 <DEL> 删除它们。
|
||||
不用担心文件被修改,你做什么都没关系,这里就是专给你练习用的。
|
||||
|
||||
如果一行文字很长、超出了窗格的宽度,显示不下的部分会在紧邻的下一行继续
|
||||
显示。这时会有一个反斜线(在控制台下是反斜线,如果你用图形窗口系统,则
|
||||
应该是一个小小的转弯箭头)显示在右边沿,表明这是某一行的接续显示。
|
||||
显示。如果你使用的是图形界面,文本区域两边的狭窄区域(左右“边缘”)会出
|
||||
现小小的转弯箭头,表明这是某一行的接续显示。如果你使用的是文本终端,接
|
||||
续显示由屏幕最右边一列的一个反斜线来表示。
|
||||
|
||||
>> 输入文字,一直到屏幕的右边界,然后继续,你会看到一个接续行出现。
|
||||
>> 输入文字,一直到屏幕的右边界,然后继续。
|
||||
你会看到一个接续行出现。
|
||||
|
||||
>> 用 <Delback> 删掉一些文字,直到此行长度小于窗格宽度,接续行就消失了。
|
||||
>> 用 <DEL> 删掉一些文字,直到此行长度小于窗格宽度,接续行就消失了。
|
||||
|
||||
换行符跟其它字符一样可以被删除。两行中间的换行符被删除后,这两行将会合
|
||||
并成一行。如果合并后的这一行太长,超出了窗格宽度,它就会以一个接续行来
|
||||
显示。
|
||||
|
||||
>> 移动光标到某行的开头并输入 <Delback>。
|
||||
>> 移动光标到某行的开头并输入 <DEL>。
|
||||
这时该行将与其前一行一起被合并为一行。
|
||||
|
||||
>> 输入 <Return> 重新插入你刚才删除的换行符。
|
||||
|
@ -299,10 +292,10 @@ Emacs 可以有多个窗格,每个窗格显示不同的文字。后面会介
|
|||
好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以
|
||||
“以词为单位”进行,下面是一个关于“删除”操作的小结:
|
||||
|
||||
<Delback> 删除光标前的一个字符
|
||||
<DEL> 删除光标前的一个字符
|
||||
C-d 删除光标后的一个字符
|
||||
|
||||
M-<Delback> 移除光标前的一个词
|
||||
M-<DEL> 移除光标前的一个词
|
||||
M-d 移除光标后的一个词
|
||||
|
||||
C-k 移除从光标到“行尾”间的字符
|
||||
|
@ -311,29 +304,31 @@ Emacs 可以有多个窗格,每个窗格显示不同的文字。后面会介
|
|||
【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后
|
||||
文会有详细说明。】
|
||||
|
||||
注意“<Delback> 和 C-d”还有“M-<Delback> 和 M-d”是根据前述惯例从 C-f
|
||||
和 M-f 衍生出来的(其实<Delback>不是控制字符,我们先忽略这一点)。C-k
|
||||
和 M-k 的关系在某种程度上与 C-e 和 M-e 一样――如果把“一行”和“一句”
|
||||
作一个类比的话。
|
||||
注意“<DEL> 和 C-d”还有“M-<DEL> 和 M-d”是根据前述惯例从 C-f和 M-f 衍生
|
||||
出来的(其实<DEL>不是控制字符,我们先忽略这一点)。C-k和 M-k 的关系在
|
||||
某种程度上与 C-e 和 M-e 一样――如果把“一行”和“一句”作一个类比的话。
|
||||
|
||||
你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
|
||||
想要移除的区域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意,
|
||||
C-SPC 往往被中文用户设定成输入法热键,如果这样,C-SPC 就被系统拦截而无
|
||||
法传递给 Emacs 了,因此这里还是推荐使用C-@。】,然后将光标移动到另一端,
|
||||
再按 C-w 就可以把位于这两点之间的所有文字移除了。
|
||||
想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
|
||||
往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
|
||||
给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
|
||||
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
|
||||
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。
|
||||
|
||||
>> 移动光标到上一段开头的“你”字。
|
||||
>> 输入 C-@ 。Emacs 应该会在屏幕的下方显示一个“Mark set”的消息。
|
||||
>> 输入 C-<SPC> 。Emacs 应该会在屏幕的下方显示一个“Mark set”的消息。
|
||||
>> 移动光标到第二行中的“端”字。
|
||||
>> 输入 C-w,从“你”开始到“端”之前的文字被全部移除。
|
||||
|
||||
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以找回
|
||||
来,而被删除的就不行了。【实际上,移除掉的东西虽然看起来“消失”了,但
|
||||
实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉的东西虽然也可能还
|
||||
在内存里,但是已经被 Emacs“抛弃”了,所以就找不回来了。】重新插入被移
|
||||
除的文字称为“召回(yank)”。一般而言,那些可能消除很多文字的命令会把
|
||||
消除掉的文字记录下来(它们被设定成了“可召回”),而那些只消除一个字符
|
||||
或者只消除空白的命令就不会记录被消除的内容(自然你也就无法召回了)。
|
||||
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
|
||||
插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
|
||||
通过撤销一个删除命令来做到,后文会提到)。【实际上,移除掉的东西虽然看
|
||||
起来“消失”了,但实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉
|
||||
的东西虽然也可能还在内存里,但是已经被 Emacs“抛弃”了,所以就找不回来
|
||||
了。】重新插入被移除的文字称为“召回(yank)”。一般而言,那些可能消除很
|
||||
多文字的命令会把消除掉的文字记录下来(它们被设定成了“可召回”),而那些
|
||||
只消除一个字符或者只消除空白的命令就不会记录被消除的内容(自然你也就无
|
||||
法召回了)。
|
||||
|
||||
>> 移动光标到一非空白行的行头,然后输入 C-k 移除那一行上的文字。
|
||||
|
||||
|
@ -345,9 +340,10 @@ C-SPC 往往被中文用户设定成输入法热键,如果这样,C-SPC 就
|
|||
C-k 会把两行以及它们的换行符移除;而如果只是输入 C-k 两次显然不是这个结
|
||||
果。
|
||||
|
||||
将被移除的文字恢复的动作称为“召回(yanking)”。(就好像把别人从你身边
|
||||
重新插入被移除的文字恢复的动作称为“召回(yanking)”。(就好像把别人从你身边
|
||||
移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回,也可以在别的
|
||||
地方召回,还可以多次召回同样的文字以得到它的多个拷贝。
|
||||
地方召回,还可以多次召回同样的文字以得到它的多个拷贝。很多其它的编辑器
|
||||
把移除和召回叫做“剪切”和“粘贴” (详情可见 Emacs 使用手册里的术语表)。
|
||||
|
||||
召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。
|
||||
|
||||
|
@ -383,24 +379,23 @@ C-y 可以召回最近一次移除的内容,那如何召回前几次移除的
|
|||
* 撤销(UNDO)
|
||||
--------------
|
||||
|
||||
如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:
|
||||
C-x u。
|
||||
如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:C-/。
|
||||
|
||||
通常 C-x u 会消除一个命令所造成的所有改变;如果你在一行中连续多次地使用
|
||||
C-x u,你会把以前的命令也依次撤销。
|
||||
通常 C-/ 会消除一个命令所造成的所有改变;如果你在一行中连续多次地使用
|
||||
C-/,你会把以前的命令也依次撤销。
|
||||
|
||||
但是有两个例外:
|
||||
1) 没有改变文字的命令不算(包括光标移动命令和滚动命令)
|
||||
2) 从键盘输入的字符以组为单位――每组 20 个字符――来进行处理。
|
||||
(这是为了减少你在撤销“插入文字”动作时需要输入 C-x u 的次数)
|
||||
2) 从键盘输入的字符以组为单位――每组最多 20 个字符――来进行处理。
|
||||
(这是为了减少你在撤销“插入文字”动作时需要输入 C-/ 的次数)
|
||||
|
||||
>> 用 C-k 将这一行移除,然后输入 C-x u ,它会再次出现。
|
||||
>> 用 C-k 将这一行移除,然后输入 C-/ ,它会再次出现。
|
||||
|
||||
C-_ 也是撤销命令;它的作用跟 C-x u 一样,但是它比较容易多次输入。C-_ 的
|
||||
缺点是在某些键盘上可能不太容易按,这也正是我们同时提供 C-x u 的原因。在
|
||||
某些终端上,你可以按住 CONTROL 再按“/”来输入 C-_。
|
||||
C-_ 也是撤销命令;它的作用跟 C-/ 一样,但是它比较容易多次输入。在
|
||||
某些终端上,输入 C-/ 实际上向 Emacs 发送的是 C-_ 。
|
||||
另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。
|
||||
|
||||
数字参数对于 C-_ 和 C-x u 的意义是执行撤销的重复次数。
|
||||
数字参数对于 C-/ 、 C-_ 和 C-x u 的意义是执行撤销的重复次数。
|
||||
|
||||
|
||||
* 文件(FILE)
|
||||
|
@ -416,14 +411,13 @@ C-_ 也是撤销命令;它的作用跟 C-x u 一样,但是它比较容易多
|
|||
文件也保存到计算机上。在存盘的时候,Emacs 会把存盘前的文件重命名保存,
|
||||
以防你改完之后又想反悔。
|
||||
|
||||
在屏幕的下方,你应该能够看到头尾都是短线“-”的一行,行首通常是一些诸如
|
||||
“--:-- TUTORIAL.cn”的文字,这些文字代表了你当前正在访问的文件。比如你
|
||||
现在正在访问的文件叫“TUTORIAL.cn”,它只是一个给你临时使用的拷贝。每当
|
||||
Emacs 寻找到一个文件,文件名就会出现在这个位置。
|
||||
在屏幕的下方,你应该能够看到头部有短线“-”的一行,行首通常是一些诸如“
|
||||
-:--- TUTORIAL.cn”的文字,这些文字代表了你当前正在访问的文件。比如你现
|
||||
在正在访问的文件是对 Emacs 快速指南的一份临时拷贝,叫做“TUTORIAL.cn”。
|
||||
每当Emacs 寻找到一个文件,文件名就会出现在这个位置。
|
||||
|
||||
寻找文件的命令有一个特点,那就是你必须给出文件名。我们称这个命令“从终
|
||||
端读入了一个参数”(在这里,这个参数显然就是文件名)。在你输入这条命令
|
||||
之后:
|
||||
寻找文件的命令有一个特点,那就是你必须给出文件名。我们称这个命令“读入
|
||||
了一个参数”(在这里,这个参数显然就是文件名)。在你输入这条命令之后:
|
||||
|
||||
C-x C-f 寻找一个文件
|
||||
|
||||
|
@ -437,10 +431,10 @@ Emacs 会提示你输入文件名。你输入的文件名会出现在屏幕最
|
|||
这会关掉小缓冲,同时也会取消使用小缓冲的 C-x C-f 命令。
|
||||
当然了,你也没有找任何文件。
|
||||
|
||||
用 <Return> 结束文件名的输入。这之后 C-x C-f 命令开始工作并找到你指定的
|
||||
文件。小缓冲在 C-x C-f 命令结束之后也会消失。
|
||||
用 <Return> 结束文件名的输入。之后,小缓冲会消失,C-x C-f 将会去寻找你
|
||||
指定的文件。小缓冲在 C-x C-f 命令结束之后也会消失。
|
||||
|
||||
眨眼间文件就被显示在屏幕上,你可以开始编辑了。存盘用这条命令:
|
||||
文件被显示在了屏幕上,你可以开始编辑了。存盘用这条命令:
|
||||
|
||||
C-x C-s 储存这个文件
|
||||
|
||||
|
@ -450,15 +444,16 @@ Emacs 会提示你输入文件名。你输入的文件名会出现在屏幕最
|
|||
M-x customize-variable <Return> make-backup-files <Return>】
|
||||
|
||||
存盘结束后,Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这
|
||||
可以减少系统崩溃和死机给你带来的损失。
|
||||
可以减少系统崩溃和死机给你带来的损失(也可参见下面的“自动保存”一节)。
|
||||
|
||||
>> 输入 C-x C-s 把本快速指南存下来。
|
||||
你会在屏幕的下方看到一条消息:“Wrote ...TUTORIAL.cn”。
|
||||
>> 输入 C-x C-s TUTORIAL.cn <Return> 。
|
||||
这将会把该指南保存为一个名为 TUTORIAL.cn 的文件,并且在屏幕的下方显
|
||||
示一条消息:“Wrote ...TUTORIAL.cn”。
|
||||
|
||||
你不但可以寻找一个已有的文件来查看或编辑,还可以寻找一个不存在的文件。
|
||||
实际上这正是 Emacs 创建新文件的方法:找到不存在的新文件。只有在存盘的时
|
||||
候,Emacs 才会真正创建这个文件。而在这之后的一切就跟编辑一个已有文件没
|
||||
有区别了。
|
||||
实际上这正是 Emacs 创建新文件的方法:找到不存在的新文件。事实上,只有
|
||||
在存盘的时候,Emacs 才会真正创建这个文件。而在这之后的一切就跟编辑一个
|
||||
已有文件没有区别了。
|
||||
|
||||
|
||||
* 缓冲区(BUFFER)
|
||||
|
@ -468,10 +463,6 @@ Emacs 会提示你输入文件名。你输入的文件名会出现在屏幕最
|
|||
切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
|
||||
时打开多个文件。
|
||||
|
||||
>> 用 C-x C-f foo <Return> 的方式建立一个名为“foo”的文件。
|
||||
输入一些文字,再用 C-x C-s 保存文件“foo”。
|
||||
最后,输入 C-x C-f TUTORIAL.cn <Return> 回到这里。
|
||||
|
||||
Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻
|
||||
找到一个文件,Emacs 就在其内部开辟一个缓冲区。用下面的命令可以列出当前
|
||||
所有的缓冲区:
|
||||
|
@ -490,24 +481,28 @@ Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)
|
|||
C-x C-f 是一种办法。不过还有一个更简单的办法,那就是用 C-x b。用这条命
|
||||
令,你必须输入缓冲区的名称。
|
||||
|
||||
>> 输入 C-x b foo <Return> 以回到文件“foo”的缓冲区。
|
||||
>> 通过输入 C-x C-f foo <Return> 创建一个名为“foo”的文件。
|
||||
然后输入 C-x b TUTORIAL.cn <Return> 回到这里。
|
||||
|
||||
大多数情况下,缓冲区与跟其对应的文件是同名的(不包括目录名),不过这也
|
||||
不是绝对的。用 C-x C-b 得到的缓冲区列表总是显示缓冲区名。
|
||||
|
||||
你在 Emacs 窗格里看到的“任何”文字都一定属于某个缓冲区。然而,缓冲区未
|
||||
必有对应文件:比如显示缓冲区列表的缓冲区就是这样。再比如“*Messages*”
|
||||
缓冲区也没有对应文件,这个缓冲区里存放的都是在 Emacs 底部出现的消息。
|
||||
缓冲区未必有对应文件。显示缓冲区列表的缓冲区(叫做“*Buffer List*”)就
|
||||
是这样。这个 TUTORIAL.cn 缓冲区起初没有对应的文件,但是现在有了,因为
|
||||
在前一节你输入了 C-x C-s , 将它保存成了一个文件。
|
||||
|
||||
“*Messages*”缓冲区也没有对应文件,这个缓冲区里存放的都是在 Emacs 底部
|
||||
出现的消息。
|
||||
|
||||
>> 输入 C-x b *Messages* <Return> 瞅瞅消息缓冲区里都有什么东西。
|
||||
然后再输入 C-x b TUTORIAL.cn <Return> 回到这里。
|
||||
|
||||
如果你对某个文件做了些修改,然后切换到另一个文件,这个动作并不会帮你把
|
||||
前一个文件存盘。对第一个文件的修改仍然仅存在于 Emacs 中,也就是在它对应
|
||||
的缓冲区里。并且,对第二个文件的修改也不会影响到第一个文件。这很有用,
|
||||
但是也挺麻烦:因为如果你想要存储第一个文件,还需要先 C-x C-f 切换回去再
|
||||
用 C-x C-s 存盘。你需要一个更简便的方法,而 Emacs 已经为你准备好了:
|
||||
前一个文件存盘。对第一个文件的修改仍然仅存在于 Emacs 中,也就是在它对
|
||||
应的缓冲区里。并且,对第二个文件的修改也不会影响到第一个文件。这很有用,
|
||||
但也意味着你需要一个简便的办法来保存第一个文件的缓冲区。先切换回那个缓
|
||||
冲区,再用 C-x C-s 存盘,太麻烦了。你需要一个更简便的方法,而 Emacs 已
|
||||
经为你准备好了:
|
||||
|
||||
C-x s 保存多个缓冲区
|
||||
|
||||
|
@ -532,21 +527,18 @@ Emacs 的命令就像天上的星星,数也数不清。把它们都对应到 C
|
|||
很多扩展命令都相当有用,虽然与你已经学过的命令比起来,他们可能不那么常
|
||||
用。我们早已经见过一些扩展命令了,比如用 C-x C-f 寻找文件和用 C-x C-s
|
||||
保存文件;退出 Emacs 用的 C-x C-c 也是扩展命令。(不用担心退出 Emacs 会
|
||||
给你带来什么损失,Emacs 会在退出之前提醒你存盘的)
|
||||
给你带来什么损失,Emacs 会在退出之前提醒你存盘的。)
|
||||
|
||||
在控制台下,C-z 可以暂时离开 Emacs――当然,你还可以再回来。
|
||||
如果你使用图形界面,你不需要任何特殊的命令来切换 Emacs 和其他应用程序。
|
||||
你可以使用鼠标或者窗口管理器的命令。然而,如果你使用只能同时显示一个应
|
||||
用程序的文本终端,你需要“挂起” Emacs ,以切换到其他的应用程序。
|
||||
|
||||
在允许 C-z 的系统中,C-z 会把 Emacs“挂起”,也就是说,它会回到 shell
|
||||
但不退出 Emacs。在常用的 shell 中,通常可以用“fg”或者“%emacs”命令再
|
||||
次回到 Emacs 中。
|
||||
C-z 可以暂时离开 Emacs――当然,你还可以再回来。在允许 C-z 的系统中,C-z
|
||||
会把 Emacs“挂起”,也就是说,它会回到 shell但不杀死 Emacs 的进程。在常
|
||||
用的 shell 中,通常可以用“fg”或者“%emacs”命令再次回到 Emacs 中。
|
||||
|
||||
在没有提供挂起功能的系统中,C-z 会在 Emacs 之下创建一个子 shell 来让你
|
||||
运行其它程序,并且再次“回到”Emacs 中――虽然我们并没有真正离开过。这
|
||||
种情况下,通常用 shell 命令“exit”从子 shell 回到 Emacs。
|
||||
|
||||
你最好在打算退出登陆的时候再用 C-x C-c。在 Emacs 被诸如邮件处理程序之类
|
||||
的外部程序调用之后,也可以用 C-x C-c 退出。不过一般来讲,如果你不想退出
|
||||
登录,最好还是把 Emacs 挂起而不是退出。
|
||||
你最好在打算退出登陆的时候再用 C-x C-c。在把 Emacs 当做一个临时的编辑
|
||||
器的时候(比如被一个邮件处理程序调用),也可以用 C-x C-c 退出。
|
||||
|
||||
C-x 的扩展命令有很多,下面列出的是你已经学过的:
|
||||
|
||||
|
@ -557,11 +549,11 @@ C-x 的扩展命令有很多,下面列出的是你已经学过的:
|
|||
C-x 1 关掉其它所有窗格,只保留一个。
|
||||
C-x u 撤销。
|
||||
|
||||
用命令名扩展的命令通常并不常用,或只用在部分模式下。比如 replace-string
|
||||
(字符串替换)这个命令,它会在全文范围内把一个字符串替换成另一个。在输
|
||||
入 M-x 之后,Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想输入
|
||||
“replace-string”,其实只需要敲“repl s<TAB>”就行了,Emacs 会帮你自动
|
||||
补齐。输入完之后按 <Return> 。
|
||||
用命令名扩展的命令通常并不常用,或只用在部分模式下。比如
|
||||
replace-string(字符串替换)这个命令,它会把一个字符串替换成另一个。在
|
||||
输入 M-x 之后,Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想
|
||||
输入“replace-string”,其实只需要敲“repl s<TAB>”就行了,Emacs 会帮你自
|
||||
动补齐。输入完之后按 <Return> 提交。
|
||||
|
||||
字符串替换命令需要两个参数――被替换的字符串和用来替换它的字符串。每个
|
||||
参数的输入都以换行符来结束。
|
||||
|
@ -586,8 +578,8 @@ C-x 的扩展命令有很多,下面列出的是你已经学过的:
|
|||
“#hello.c#”。这个文件会在正常存盘之后被 Emacs 删除。
|
||||
|
||||
所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
|
||||
存文件)然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提
|
||||
示确认的时候,输入 yes<Return>。
|
||||
存文件)然后输入 M-x recover file <Return> 来恢复你的自动保存文件。在
|
||||
提示确认的时候,输入 yes<Return>。
|
||||
|
||||
|
||||
* 回显区(ECHO AREA)
|
||||
|
@ -602,7 +594,7 @@ C-x 的扩展命令有很多,下面列出的是你已经学过的:
|
|||
|
||||
位于回显区正上方的一行被称为“状态栏”。状态栏上会显示一些信息,比如:
|
||||
|
||||
--:** TUTORIAL.cn (Fundamental)--L670--54%----------------
|
||||
-:**- TUTORIAL.cn 63% L749 (Fundamental)
|
||||
|
||||
状态栏显示了 Emacs 的状态和你正在编辑的文字的一些信息。
|
||||
|
||||
|
@ -631,7 +623,7 @@ Emacs 的主模式林林总总。有用来编辑程序代码的――比如 Lisp
|
|||
|
||||
编辑自然语言文本――比如现在――应该用 Text 模式。
|
||||
|
||||
>> 输入 M-x text mode<Return>。
|
||||
>> 输入 M-x text-mode <Return>。
|
||||
|
||||
别担心,什么都没变。不过细心一些可以发现,M-f 和 M-b 现在把单引号(')
|
||||
视为词的一部分了。而在先前的 Fundamental 模式中,M-f 和 M-b 都将单引号
|
||||
|
@ -643,7 +635,8 @@ Emacs 里得到了很好的体现】
|
|||
|
||||
用 C-h m 可以查看当前主模式的文档。
|
||||
|
||||
>> 用 C-u C-v 将本行带到屏幕的最上方。
|
||||
>> 把光标移动到下一行。
|
||||
>> 用 C-l C-l 将本行带到屏幕的最上方。
|
||||
>> 输入 C-h m,看看 Text 模式与 Fundamental 模式有哪些不同。
|
||||
>> 输入 C-x 1 关掉文档窗格。
|
||||
|
||||
|
@ -655,12 +648,12 @@ mode)存在。辅模式并不能替代主模式,而是提供一些辅助的
|
|||
有一个叫做自动折行(Auto Fill)的辅模式很有用,特别是在编辑自然语言文本
|
||||
的时候。启用自动折行后,Emacs 会在你打字超出一行边界时自动替你换行。
|
||||
|
||||
用 M-x auto fill mode<Return> 启动自动折行模式。再用一次这条命令,自动
|
||||
折行模式会被关闭。也就是说,如果自动折行模式没有被开启,这个命令会开启
|
||||
它;如果已经开启了,这个命令会关闭它。所以我们说,这个命令可以用来“开
|
||||
关(toggle)”模式。
|
||||
用 M-x auto-fill-mode <Return> 启动自动折行模式。再用一次这条命令,自
|
||||
动折行模式会被关闭。也就是说,如果自动折行模式没有被开启,这个命令会开
|
||||
启它;如果已经开启了,这个命令会关闭它。所以我们说,这个命令可以用来
|
||||
“开关(toggle)”模式。
|
||||
|
||||
>> 现在输入 M-x auto fill mode<Return>。然后随便敲点什么,直到你看到它
|
||||
>> 现在输入 M-x auto-fill-mode <Return>。然后随便敲点什么,直到你看到它
|
||||
分成两行。你必须敲一些空格,因为 Auto Fill 只在空白处进行断行。
|
||||
【输入空格对英文来说是必须的,而对中文则不必。】
|
||||
|
||||
|
@ -680,12 +673,11 @@ mode)存在。辅模式并不能替代主模式,而是提供一些辅助的
|
|||
* 搜索(SEARCHING)
|
||||
-------------------
|
||||
|
||||
Emacs 可以向前或向后搜索字符串。搜索命令是一个移动光标的命令:搜索成功
|
||||
后,光标会停留在搜索目标出现的地方。
|
||||
Emacs 可以向前或向后搜索字符串(“字符串”指的是一组连续的字符)。搜索命
|
||||
令是一个移动光标的命令:搜索成功后,光标会停留在搜索目标出现的地方。
|
||||
|
||||
Emacs 的搜索命令的独特之处在于,它是“渐进的(incremental)”。意思是搜
|
||||
索与输入同时进行:你在键盘上一字一句地输入搜索词的过程中,Emacs 就已经
|
||||
开始替你搜索了。
|
||||
Emacs 的搜索命令是“渐进的(incremental)”。意思是搜索与输入同时进行:
|
||||
你在键盘上一字一句地输入搜索词的过程中,Emacs 就已经开始替你搜索了。
|
||||
|
||||
C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。
|
||||
|
||||
|
@ -696,7 +688,7 @@ C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试
|
|||
慢慢输入“cursor”这个词,每敲一个字都停顿一下并观察光标。
|
||||
现在你应该已曾经找到“cursor”这个词了。
|
||||
>> 再按一次 C-s,搜索下一个“cursor”出现的位置。
|
||||
>> 现在按四次退格键,看看光标是如何移动的。
|
||||
>> 现在按四次 <DEL> ,看看光标是如何移动的。
|
||||
>> 敲 <Return> 结束搜索。
|
||||
|
||||
看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
|
||||
|
@ -705,19 +697,14 @@ C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试
|
|||
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
|
||||
这是很有用的功能。】
|
||||
|
||||
注意:在某些终端下,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,使你看
|
||||
不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能拦截了 C-s 并
|
||||
冻结了屏幕。用 C-q 可以解除屏幕冻结。要解决这个问题,请参考 Emacs 手册
|
||||
里的“Spontaneous Entry to Incremental Search”一节【Emacs 手册可能还没
|
||||
有中文翻译】,那里提供了一些有用的建议。
|
||||
在渐进式搜索中,按 <DEL> 会“撤回”到最近一次搜索的命中位置。如果之前没
|
||||
有一个命中, <DEL> 会抹去搜索字符串中的最后一个字符。比如你已经输入了
|
||||
“c”,光标就停在“c”第一次出现的位置,再输入“u”,光标停在“cu”第一次出现
|
||||
的位置,这时再按 <DEL> ,“u”就从搜索字串中消失了,然后光标会回到“c”第
|
||||
一次出现的位置。
|
||||
|
||||
在渐进式搜索中,按退格键会删除目标字符串的最后一个字符,并且光标会回到
|
||||
最近一次搜索的命中位置。比如你已经输入了“c”,光标就停在“c”第一次出
|
||||
现的位置,再输入“u”,光标停在“cu”第一次出现的位置,这时再按退格键,
|
||||
“u”就从搜索字串中消失了,然后光标会回到“c”第一次出现的位置。
|
||||
|
||||
另外,如果你在搜索的时候输入了 CONTROL 或者 META 组合键的话,搜索可能会
|
||||
结束。(也有例外,比如 C-s 和 M-r 这些用于搜索的命令。)
|
||||
另外,如果你在搜索的时候输入了 control 或者 meta 组合键的话,搜索可能会
|
||||
结束。(也有例外,比如 C-s 和 C-r 这些用于搜索的命令。)
|
||||
|
||||
前面说的都是“向下”搜索,如果想“向上”搜索,可以用 C-r。C-r 与 C-s
|
||||
相比除了搜索方向相反之外,其余的操作都一样。
|
||||
|
@ -728,7 +715,7 @@ C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试
|
|||
|
||||
Emacs 的迷人之处很多,能够在屏幕上同时显示多个窗格就是其中之一。
|
||||
|
||||
>> 移动光标到这一行,然后输入 C-u 0 C-l。
|
||||
>> 移动光标到这一行,然后输入 C-l C-l。
|
||||
|
||||
>> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
|
||||
这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
|
||||
|
@ -746,18 +733,17 @@ Emacs 的迷人之处很多,能够在屏幕上同时显示多个窗格就是
|
|||
>> 再输入 C-x o 将光标移回到上方的窗格里。
|
||||
光标会回到它在上方窗格中原本所在的位置。
|
||||
|
||||
连续使用 C-x o 可以遍历所有窗格。每一个窗格都有它自己的光标位置,但是只
|
||||
有一个窗格会真正显示这个光标。【其它窗格在控制台下不会显示光标,在图形
|
||||
窗口下缺省显示为镂空光标。】一般所有的编辑命令都作用于这个光标所在的窗
|
||||
格,我们称这个窗格为“被选中的窗格”。
|
||||
连续使用 C-x o 可以遍历所有窗格。“被选中的窗格”,也就是绝大多数的编辑
|
||||
操作所发生的地方,是在你不打字时闪烁光标的那个窗格。其他的窗格有它们自
|
||||
己的光标位置; 如果你在图形界面下运行 Emacs ,这些光标是镂空的长方形。
|
||||
|
||||
当你在一个窗格中编辑,但用另一个窗格作为参考的时候,C-M-v 是很有用的命
|
||||
令。你可以始终处于编辑窗格中,然后用 C-M-v 命令滚动另外一个窗格。【比如
|
||||
翻译和校对就很适合用这种方式进行。】
|
||||
令。无需离开被选中的窗格,你就可以用 C-M-v 命令滚动另外一个窗格中的文
|
||||
字。【比如翻译和校对就很适合用这种方式进行。】
|
||||
|
||||
C-M-v 是一个 CONTROL-META 组合键。如果你有 META 键的话,可以同时按住
|
||||
CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,因为它们
|
||||
只是用来“修饰(modify)”你输入的字符的。
|
||||
C-M-v 是一个 CONTROL-META 组合键。如果你有 META (或 Alt)键的话,可以
|
||||
同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
|
||||
因为它们只是用来“修饰(modify)”你输入的字符的。
|
||||
|
||||
如果你并没有 META 键,你也可以用 ESC 来代替,不过这样的话就要注意按键顺
|
||||
序了:你必须先输入 ESC ,然后再输入 CONTROL-v。CONTROL-ESC v 是没用的,
|
||||
|
@ -779,6 +765,26 @@ CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
|
|||
>> 输入 C-x o 回到上方的窗格,然后再用 C-x 1 关掉下方窗格。
|
||||
|
||||
|
||||
* 多窗口(MULTIPLE FRAMES)
|
||||
------------------
|
||||
|
||||
Emacs 可以创建多个窗口。窗口由许多窗格以及菜单、滚动条、回显区等组成。
|
||||
在图形界面下,多个窗口可以同时显示出来。在文本终端中,只能同时显示一个
|
||||
窗口。
|
||||
|
||||
>> 输入 M-x make-frame <Return>。
|
||||
可以看到一个新的窗口出现在了你的屏幕上。
|
||||
|
||||
你可以在新的窗口里做最初的窗口里可以做的任何事情。第一个窗口没有什么特
|
||||
别的。
|
||||
|
||||
>> 输入 M-x delete-frame <Return>.
|
||||
这个命令将会关闭选中的窗口。
|
||||
|
||||
你也可以通过图形系统来关闭某个窗口(通常是在窗口上面的某个角落里的一个
|
||||
“X”按钮)。如果你关闭的是 Emacs 进程的最后一个窗口, Emacs 将会退出。
|
||||
|
||||
|
||||
* 递归编辑(RECURSIVE EDITING LEVELS)
|
||||
--------------------------------------
|
||||
|
||||
|
@ -810,9 +816,7 @@ CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
|
|||
么帮助。如果你连自己到底需要什么帮助都不知道,那么就输入 C-h ?,Emacs
|
||||
会告诉你它能提供了哪些帮助。如果你按了 C-h 又想反悔,可以用 C-g 取消。
|
||||
|
||||
(有些主机改变了 C-h 的意义,这种以己度人外加一刀切的做法确实不太好,不
|
||||
过倒是让你可以义正辞严地抱怨他们的系统管理员。话说回来,如果你按 C-h 之
|
||||
后没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help <Return> 。)
|
||||
(如果你按 C-h 之后没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help <Return> 。)
|
||||
|
||||
最基本的帮助功能是 C-h c。输入 C-h c 之后再输入一个组合键,Emacs 会给出
|
||||
这个命令的简要说明。
|
||||
|
@ -823,9 +827,9 @@ CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
|
|||
|
||||
C-p runs the command previous-line
|
||||
|
||||
这条消息显示了 C-p 命令对应的函数名,函数名主要用来定制和扩展 Emacs。命
|
||||
令的功能由函数完成,所以函数名本身也可以被看成是最简单的文档――至少对
|
||||
于你已经学过的命令来说,它们的函数名足以解释它们的功能了。
|
||||
这条消息显示了 C-p 命令对应的函数名。命令的功能由函数完成,所以函数名
|
||||
本身也可以被看成是最简单的文档――至少对于你已经学过的命令来说,它们的函
|
||||
数名足以解释它们的功能了。
|
||||
|
||||
多字符命令一样可以用 C-h c 来查看。
|
||||
|
||||
|
@ -841,7 +845,7 @@ CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
|
|||
|
||||
C-h f 解释一个函数。需要输入函数名。
|
||||
|
||||
>> 试试看,输入 C-h f previous-line<Return>。
|
||||
>> 试试看,输入 C-h f previous-line <Return>。
|
||||
Emacs 会给出它所知道的所有有关“实现 C-p 命令功能的函数”的信息。
|
||||
|
||||
C-h v 用来显示 Emacs 变量的文档。Emacs 变量可以被用来“定制 Emacs 的行
|
||||
|
@ -852,7 +856,7 @@ C-h v 用来显示 Emacs 变量的文档。Emacs 变量可以被用来“定制
|
|||
的命令。这些命令全都可以用 M-x 来启动。对于某些命令来说,
|
||||
相关命令搜索还会列出一两个组合键。
|
||||
|
||||
>> 输入 C-h a file<Return>。
|
||||
>> 输入 C-h a file <Return>。
|
||||
|
||||
Emacs 会在另一个窗格里显示一个 M-x 命令列表,这个列表包含了所有名称中含
|
||||
有“file”的命令。你可以看到像“C-x C-f”这样的组合键显示在“find-file”
|
||||
|
@ -862,7 +866,7 @@ Emacs 会在另一个窗格里显示一个 M-x 命令列表,这个列表包含
|
|||
|
||||
>> 输入 C-x 1 来删除 help 窗格。
|
||||
|
||||
C-h i 阅读联机手册(也就是通常讲的 Info)。
|
||||
C-h i 阅读手册(也就是通常讲的 Info)。
|
||||
这个命令会打开一个称为“*info*”的特殊缓冲区,在那里,
|
||||
你可以阅读安装在系统里的软件包使用手册。要读 Emacs 的使
|
||||
用手册,按 m emacs <Return> 就可以了。如果你之前从没用
|
||||
|
@ -875,18 +879,19 @@ Emacs 会在另一个窗格里显示一个 M-x 命令列表,这个列表包含
|
|||
---------------------------
|
||||
|
||||
想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的
|
||||
书,也可以看电子版的联机手册(可以从 Help 菜单进入或者按 F10 h r)。提
|
||||
两个你可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动
|
||||
补全),另一个是方便文件处理的 dired(目录编辑)。
|
||||
书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你
|
||||
可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),
|
||||
另一个是方便文件处理的 dired(目录编辑)。
|
||||
|
||||
Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
|
||||
冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
|
||||
文字确定你想要输入的内容,它就会自动帮你补齐。有关 Completion 的详细说
|
||||
明可以在 Emacs Info 中的“Completion”一节里找到。
|
||||
文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令
|
||||
名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的
|
||||
“Completion”一节里找到。
|
||||
|
||||
Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
|
||||
目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
|
||||
等等操作。Dired 也在 Emacs Info 中有详细介绍,参见“Dired”一节。
|
||||
等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。
|
||||
|
||||
Emacs 使用手册里还有许许多多的精彩功能等着你来了解。
|
||||
|
||||
|
@ -894,8 +899,7 @@ Emacs 使用手册里还有许许多多的精彩功能等着你来了解。
|
|||
* 总结(CONCLUSION)
|
||||
--------------------
|
||||
|
||||
记住,要退出 Emacs 请用 C-x C-c。要暂时切换到 shell 并且稍后再回到
|
||||
Emacs 里来,请用 C-z。【切换到 shell 仅对控制台下的 Emacs 有效】
|
||||
要退出 Emacs 请用 C-x C-c。
|
||||
|
||||
本文完全是为零起点新手所写的起步教程。如果你觉得哪里还看不明白,千万不
|
||||
要怀疑自己,那一定是我们没有写好。我们永远欢迎你的不满和抱怨。
|
||||
|
@ -905,6 +909,7 @@ Emacs 里来,请用 C-z。【切换到 shell 仅对控制台下的 Emacs 有
|
|||
---------------------
|
||||
|
||||
翻译:孙一江 <sunyijiang@gmail.com>
|
||||
维护:薛富侨 <xfq.free@gmail.com>
|
||||
校对:水木社区(www.newsmth.net)Emacs 板众多网友及众多 Emacs 中文用户
|
||||
|
||||
Emacs 快速指南(Tutorial)早有两个刘昭宏的中文译本,繁简各一。其简体版本
|
||||
|
@ -915,11 +920,11 @@ Emacs 快速指南(Tutorial)早有两个刘昭宏的中文译本,繁简各
|
|||
的译文质量很高,在翻译过程中给予过我们许多借鉴和参考,在此对刘昭宏的工作
|
||||
表示感谢。
|
||||
|
||||
翻译过程中最大的挑战莫过于术语译词的选择了。经过水木社区 Emacs 板热心网
|
||||
友小范围内的讨论,我们选择了现在的译法。用户的广泛参与是自由软件生命力
|
||||
的源泉,所以如果你有任何建议、勘误或想法,请用你喜欢的方式向我们提出。
|
||||
你可以通过电子邮件直接联系译者,也可以放到 GNU Emacs 的开发邮件列表或者
|
||||
水木社区的 Emacs 板上进行讨论。
|
||||
翻译过程中最大的挑战莫过于术语译词的选择了。经过水木社区 Emacs 板热心
|
||||
网友小范围内的讨论,我们选择了现在的译法。用户的广泛参与是自由软件生命
|
||||
力的源泉,所以如果你有任何建议、勘误或想法,请用你喜欢的方式向我们提出。
|
||||
你可以通过电子邮件直接联系维护者,也可以放到 GNU Emacs 的开发邮件列表
|
||||
或者水木社区的 Emacs 板上进行讨论。
|
||||
|
||||
下面列出主要术语的译词对照,并给出注释说明:
|
||||
|
||||
|
@ -941,6 +946,8 @@ Emacs 快速指南(Tutorial)早有两个刘昭宏的中文译本,繁简各
|
|||
search 搜索
|
||||
incremental search 渐进式搜索 [3]
|
||||
|
||||
对于其他没有提到的术语,读者可以参考 Emacs 使用手册里的术语表。
|
||||
|
||||
[1] “window”一词在计算机相关的领域一般都被译为“窗口”。但是在 Emacs
|
||||
中,还有一个“frame”的概念。在被广泛使用的 X 窗口系统和微软的视窗
|
||||
(Windows)系列操作系统中,Emacs 的一个“frame”就是一个“窗口”,因
|
||||
|
@ -977,46 +984,56 @@ Emacs 快速指南(Tutorial)早有两个刘昭宏的中文译本,繁简各
|
|||
This tutorial descends from a long line of Emacs tutorials
|
||||
starting with the one written by Stuart Cracraft for the original Emacs.
|
||||
|
||||
This version of the tutorial, like GNU Emacs, is copyrighted, and
|
||||
comes with permission to distribute copies on certain conditions:
|
||||
This version of the tutorial is a part of GNU Emacs. It is copyrighted
|
||||
and comes with permission to distribute copies on certain conditions:
|
||||
|
||||
Copyright (C) 1985, 1996, 1998, 2001-2013 Free Software Foundation, Inc.
|
||||
Copyright (C) 1985, 1996, 1998, 2001-2013 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
Permission is granted to anyone to make or distribute verbatim copies
|
||||
of this document as received, in any medium, provided that the
|
||||
copyright notice and permission notice are preserved,
|
||||
and that the distributor grants the recipient permission
|
||||
for further redistribution as permitted by this notice.
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
Permission is granted to distribute modified versions
|
||||
of this document, or of portions of it,
|
||||
under the above conditions, provided also that they
|
||||
carry prominent notices stating who last altered them.
|
||||
GNU Emacs is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The conditions for copying Emacs itself are more complex, but in the
|
||||
same spirit. Please read the file COPYING and then do give copies of
|
||||
GNU Emacs to your friends. Help stamp out software obstructionism
|
||||
("ownership") by using, writing, and sharing free software!
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Please read the file COPYING and then do give copies of GNU Emacs to
|
||||
your friends. Help stamp out software obstructionism ("ownership") by
|
||||
using, writing, and sharing free software!
|
||||
|
||||
【下面为版权声明的译文,仅供参考。实际法律效力以英文原文为准。】
|
||||
|
||||
本快速指南沿袭自历史悠久的 Emacs 快速指南,可上溯至 Stuart Cracraft 为最
|
||||
初的 Emacs 所作的版本。
|
||||
|
||||
本篇文档与 GNU Emacs 一样拥有版权,并允许在下列条件的约束下发行其拷贝:
|
||||
本篇指南是 GNU Emacs 的一部分,并允许在下列条件的约束下发行其拷贝:
|
||||
|
||||
Copyright (C) 1985, 1996, 1998, 2001-2013 Free Software Foundation, Inc.
|
||||
Copyright (C) 1985, 1996, 1998, 2001-2013 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
本文档允许在不变更文档内容的情况下由任何人发布在任何媒体上,同时必须
|
||||
完整保留版权和许可声明,且需给予受众与发行者完全相同的、如本声明所允
|
||||
许的再次发行本文档的权利。
|
||||
本文件为 GNU Emacs 的一部分。
|
||||
|
||||
本声明允许在与上述条件相同的情况下发布经过修改的全部或部分文档,同时
|
||||
必须附带显要的文字以申明文档的最后修改者。
|
||||
GNU Emacs 为自由软件;您可依据自由软件基金会所发表的GNU通用公共授权
|
||||
条款,对本程序再次发布和/或修改;无论您依据的是本授权的第三版,或
|
||||
(您可选的)任一日后发行的版本。
|
||||
|
||||
Emacs 自身的版权问题虽比本文档要复杂一些,但也基于相同的精神。敬请阅读文
|
||||
件“COPYING”,然后向你的朋友们分发 GNU Emacs 拷贝。让我们以使用、编写和
|
||||
分享自由软件的实际行动来共同祛除软件障碍主义(所谓的“所有权”)!
|
||||
GNU Emacs 是基于使用目的而加以发布,然而不负任何担保责任;亦无对适
|
||||
售性或特定目的适用性所为的默示性担保。详情请参照GNU通用公共授权。
|
||||
|
||||
您应已收到附随于 GNU Emacs 的GNU通用公共授权的副本;如果没有,请参照
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
敬请阅读文件“COPYING”,然后向你的朋友们分发 GNU Emacs 拷贝。让我们以使
|
||||
用、编写和分享自由软件的实际行动来共同祛除软件障碍主义(所谓的“所有
|
||||
权”)!
|
||||
|
||||
;;; Local Variables:
|
||||
;;; coding: utf-8
|
||||
|
|
|
@ -285,7 +285,7 @@ Explicaremos después como usar múltiples ventanas. Ahora mismo
|
|||
queremos explicar cómo deshacerse de ventanas adicionales y volver a
|
||||
la edición básica en una ventana. Es sencillo:
|
||||
|
||||
C-x 1 Una ventana (p.ej., elimina todas las otras ventanas).
|
||||
C-x 1 Una ventana (es decir, elimina todas las demás ventanas).
|
||||
|
||||
Esto es CONTROL-x seguido por el dígito 1. C-x 1 expande la ventana que
|
||||
contiene el cursor, para ocupar toda la pantalla. Esto borra todas las
|
||||
|
@ -374,7 +374,7 @@ resumen de las operaciones de borrado:
|
|||
Note que <DEL> y C-d, comparados con M-<DEL> y M-d, extienden el
|
||||
paralelismo iniciado por C-f y M-f (bien, <DEL> no es realmente una
|
||||
tecla de control, pero no nos preocuparemos de eso ahora). C-k y M-k,
|
||||
en ciertas forma, son como C-e y M-e, en que las líneas de unos
|
||||
en cierta forma, son como C-e y M-e, en que las líneas de unos
|
||||
corresponden a sentencias en los otros.
|
||||
|
||||
También puede eliminar un segmento contiguo de texto con un método
|
||||
|
@ -974,7 +974,7 @@ diferentes:
|
|||
|
||||
>> Teclee C-x 4 C-f seguido del nombre de uno de sus archivos.
|
||||
Finalice con <Return>. Vea que el archivo especificado aparece en
|
||||
la ventana inferior. El cursor vá allá también.
|
||||
la ventana inferior. El cursor va allá también.
|
||||
|
||||
>> Teclee C-x o para regresar a la ventana superior, y C-x 1 para
|
||||
borrar la ventana inferior.
|
||||
|
|
|
@ -7,7 +7,7 @@ Maintainer: Ognyan Kulev <ogi@tower.3.bg>
|
|||
|
||||
* TUTORIAL.cn:
|
||||
Author: Sun Yijiang <sunyijiang@gmail.com>
|
||||
Maintainer: Sun Yijiang <sunyijiang@gmail.com>
|
||||
Maintainer: Xue Fuqiao <xfq.free@gmail.com>
|
||||
|
||||
* TUTORIAL.cs:
|
||||
Author: Milan Zamazal <pdm@zamazal.org>
|
||||
|
|
4
info/dir
4
info/dir
|
@ -36,7 +36,7 @@ Emacs editing modes
|
|||
Java, Pike, AWK, and CORBA IDL code.
|
||||
* IDLWAVE: (idlwave). Major mode and shell for IDL files.
|
||||
* nXML Mode: (nxml-mode). XML editing mode with RELAX NG support.
|
||||
* Org Mode: (org). Outline-based notes management and organizer
|
||||
* Org Mode: (org). Outline-based notes management and organizer.
|
||||
|
||||
Emacs network features
|
||||
* EUDC: (eudc). Emacs client for directory servers (LDAP, PH).
|
||||
|
@ -75,6 +75,7 @@ Emacs misc features
|
|||
* Forms: (forms). Emacs package for editing data bases
|
||||
by filling in forms.
|
||||
* Htmlfontify: (htmlfontify). Convert source code to html.
|
||||
* Ido: (ido). Interactively do things with buffers and files.
|
||||
* PCL-CVS: (pcl-cvs). Emacs front-end to CVS.
|
||||
* RefTeX: (reftex). Emacs support for LaTeX cross-references
|
||||
and citations.
|
||||
|
@ -85,6 +86,7 @@ Emacs misc features
|
|||
* Wisent: (wisent). Semantic Wisent parser development.
|
||||
* SES: (ses). Simple Emacs Spreadsheet.
|
||||
* Speedbar: (speedbar). File/Tag summarizing utility.
|
||||
* Todo Mode: (todo-mode). Make and maintain todo lists.
|
||||
* VIP: (vip). An older VI-emulation for Emacs.
|
||||
* VIPER: (viper). A VI-emulation mode for Emacs.
|
||||
* WoMan: (woman). Browse UN*X Manual Pages "W.O. (without) Man".
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Makefile for leim subdirectory in GNU Emacs.
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||
|
|
|
@ -1,3 +1,46 @@
|
|||
2013-08-10 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* update-game-score.exe.manifest: New file.
|
||||
|
||||
* Makefile.in (UPDATE_MANIFEST): New variable.
|
||||
(SCRIPTS): Add $(UPDATE_MANIFEST).
|
||||
|
||||
2013-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* makefile.w32-in (lisp2): Add nadvice.elc.
|
||||
|
||||
2013-08-05 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* update-game-score.c (read_score): Try reading a character before
|
||||
probing the stream for EOF. Initialize score->score to zero,
|
||||
before reading and accumulating the score.
|
||||
(read_scores): Fix logic that determines which value to return.
|
||||
Close the input stream when finished reading the scores (avoids
|
||||
failures in overwriting the file with a new one on MS-Windows,
|
||||
since a file that is open cannot be deleted).
|
||||
|
||||
* ntlib.h (rename): Don't undefine.
|
||||
|
||||
* ntlib.c (sys_rename): New function, needed for
|
||||
update-game-score.
|
||||
|
||||
2013-08-04 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* ntlib.h: Include fcntl.h.
|
||||
(mkostemp): Declare prototype.
|
||||
(mktemp): Don't redefine.
|
||||
|
||||
* ntlib.c (mkostemp): New function. (Bug#15015)
|
||||
|
||||
2013-08-04 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Fix some minor races in hosts lacking mkostemp (Bug#15015).
|
||||
* movemail.c (main):
|
||||
* update-game-score.c (write_scores):
|
||||
Use mkostemp (which now works on all platforms, due to changes
|
||||
in the portability layer) rather than mktemp (which has a race)
|
||||
or mkstemp (which we no longer bother with).
|
||||
|
||||
2013-07-10 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Port to C89.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Makefile for lib-src subdirectory in GNU Emacs.
|
||||
# Copyright (C) 1985, 1987-1988, 1993-1994, 2001-2013 Free Software
|
||||
# Foundation, Inc.
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1985, 1987-1988, 1993-1994, 2001-2013
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
@ -39,6 +40,7 @@ C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
|
|||
PROFILING_CFLAGS = @PROFILING_CFLAGS@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WERROR_CFLAGS = @WERROR_CFLAGS@
|
||||
UPDATE_MANIFEST = @UPDATE_MANIFEST@
|
||||
|
||||
# Program name transformation.
|
||||
TRANSFORM = @program_transform_name@
|
||||
|
@ -131,7 +133,7 @@ DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT}
|
|||
|
||||
# Like UTILITIES, but they're not system-dependent, and should not be
|
||||
# deleted by the distclean target.
|
||||
SCRIPTS= rcs2log
|
||||
SCRIPTS= rcs2log $(UPDATE_MANIFEST)
|
||||
|
||||
# All files that are created by the linker, i.e., whose names end in ${EXEEXT}.
|
||||
EXE_FILES = ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}
|
||||
|
|
|
@ -251,6 +251,7 @@ lisp2 = \
|
|||
$(lispsource)register.elc \
|
||||
$(lispsource)replace.elc \
|
||||
$(lispsource)simple.elc \
|
||||
$(lispsource)emacs-lisp/nadvice.elc \
|
||||
$(lispsource)minibuffer.elc \
|
||||
$(lispsource)startup.elc \
|
||||
$(lispsource)subr.elc \
|
||||
|
|
|
@ -304,24 +304,13 @@ main (int argc, char **argv)
|
|||
|
||||
memcpy (tempname, inname, inname_dirlen);
|
||||
strcpy (tempname + inname_dirlen, "EXXXXXX");
|
||||
#ifdef HAVE_MKSTEMP
|
||||
desc = mkstemp (tempname);
|
||||
#else
|
||||
mktemp (tempname);
|
||||
if (!*tempname)
|
||||
desc = -1;
|
||||
else
|
||||
{
|
||||
unlink (tempname);
|
||||
desc = open (tempname, O_WRONLY | O_CREAT | O_EXCL, 0600);
|
||||
}
|
||||
#endif
|
||||
desc = mkostemp (tempname, 0);
|
||||
if (desc < 0)
|
||||
{
|
||||
int mkstemp_errno = errno;
|
||||
int mkostemp_errno = errno;
|
||||
error ("error while creating what would become the lock file",
|
||||
0, 0);
|
||||
errno = mkstemp_errno;
|
||||
errno = mkostemp_errno;
|
||||
pfatal_with_name (tempname);
|
||||
}
|
||||
close (desc);
|
||||
|
|
|
@ -422,3 +422,72 @@ lstat (const char * path, struct stat * buf)
|
|||
{
|
||||
return stat (path, buf);
|
||||
}
|
||||
|
||||
/* Implementation of mkostemp for MS-Windows, to avoid race conditions
|
||||
when using mktemp. Copied from w32.c.
|
||||
|
||||
This is used only in update-game-score.c. It is overkill for that
|
||||
use case, since update-game-score renames the temporary file into
|
||||
the game score file, which isn't atomic on MS-Windows anyway, when
|
||||
the game score already existed before running the program, which it
|
||||
almost always does. But using a simpler implementation just to
|
||||
make a point is uneconomical... */
|
||||
|
||||
int
|
||||
mkostemp (char * template, int flags)
|
||||
{
|
||||
char * p;
|
||||
int i, fd = -1;
|
||||
unsigned uid = GetCurrentThreadId ();
|
||||
int save_errno = errno;
|
||||
static char first_char[] = "abcdefghijklmnopqrstuvwyz0123456789!%-_@#";
|
||||
|
||||
errno = EINVAL;
|
||||
if (template == NULL)
|
||||
return -1;
|
||||
|
||||
p = template + strlen (template);
|
||||
i = 5;
|
||||
/* replace up to the last 5 X's with uid in decimal */
|
||||
while (--p >= template && p[0] == 'X' && --i >= 0)
|
||||
{
|
||||
p[0] = '0' + uid % 10;
|
||||
uid /= 10;
|
||||
}
|
||||
|
||||
if (i < 0 && p[0] == 'X')
|
||||
{
|
||||
i = 0;
|
||||
do
|
||||
{
|
||||
p[0] = first_char[i];
|
||||
if ((fd = open (template,
|
||||
flags | _O_CREAT | _O_EXCL | _O_RDWR,
|
||||
S_IRUSR | S_IWUSR)) >= 0
|
||||
|| errno != EEXIST)
|
||||
{
|
||||
if (fd >= 0)
|
||||
errno = save_errno;
|
||||
return fd;
|
||||
}
|
||||
}
|
||||
while (++i < sizeof (first_char));
|
||||
}
|
||||
|
||||
/* Template is badly formed or else we can't generate a unique name. */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* On Windows, you cannot rename into an existing file. */
|
||||
int
|
||||
sys_rename (const char *from, const char *to)
|
||||
{
|
||||
int retval = rename (from, to);
|
||||
|
||||
if (retval < 0 && errno == EEXIST)
|
||||
{
|
||||
if (unlink (to) == 0)
|
||||
retval = rename (from, to);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Include these headers now so we don't have to worry about include
|
||||
order dependencies in common source files. */
|
||||
#include <direct.h>
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -41,6 +42,7 @@ int setuid (unsigned uid);
|
|||
int setregid (unsigned rgid, unsigned gid);
|
||||
char * getpass (const char * prompt);
|
||||
int fchown (int fd, unsigned uid, unsigned gid);
|
||||
int mkostemp (char * template, int flags);
|
||||
|
||||
/* redirect or undo interceptions created by config.h */
|
||||
#undef access
|
||||
|
@ -61,15 +63,12 @@ int fchown (int fd, unsigned uid, unsigned gid);
|
|||
#undef fopen
|
||||
#undef mkdir
|
||||
#define mkdir _mkdir
|
||||
#undef mktemp
|
||||
#define mktemp _mktemp
|
||||
#undef open
|
||||
#define open _open
|
||||
#undef pipe
|
||||
#define pipe _pipe
|
||||
#undef read
|
||||
#define read _read
|
||||
#undef rename
|
||||
#undef rmdir
|
||||
#define rmdir _rmdir
|
||||
#undef unlink
|
||||
|
|
|
@ -228,10 +228,11 @@ static int
|
|||
read_score (FILE *f, struct score_entry *score)
|
||||
{
|
||||
int c;
|
||||
if ((c = getc (f)) != EOF)
|
||||
ungetc (c, f);
|
||||
if (feof (f))
|
||||
return 1;
|
||||
while ((c = getc (f)) != EOF
|
||||
&& isdigit (c))
|
||||
for (score->score = 0; (c = getc (f)) != EOF && isdigit (c); )
|
||||
{
|
||||
score->score *= 10;
|
||||
score->score += (c-48);
|
||||
|
@ -311,34 +312,38 @@ read_score (FILE *f, struct score_entry *score)
|
|||
static int
|
||||
read_scores (const char *filename, struct score_entry **scores, int *count)
|
||||
{
|
||||
int readval, scorecount, cursize;
|
||||
int readval = -1, scorecount, cursize;
|
||||
struct score_entry *ret;
|
||||
FILE *f = fopen (filename, "r");
|
||||
int retval = -1;
|
||||
if (!f)
|
||||
return -1;
|
||||
scorecount = 0;
|
||||
cursize = 16;
|
||||
ret = (struct score_entry *) malloc (sizeof (struct score_entry) * cursize);
|
||||
if (!ret)
|
||||
return -1;
|
||||
while ((readval = read_score (f, &ret[scorecount])) == 0)
|
||||
if (ret)
|
||||
{
|
||||
/* We encountered an error. */
|
||||
if (readval < 0)
|
||||
return -1;
|
||||
scorecount++;
|
||||
if (scorecount >= cursize)
|
||||
while ((readval = read_score (f, &ret[scorecount])) == 0)
|
||||
{
|
||||
cursize *= 2;
|
||||
ret = (struct score_entry *)
|
||||
realloc (ret, (sizeof (struct score_entry) * cursize));
|
||||
if (!ret)
|
||||
return -1;
|
||||
scorecount++;
|
||||
if (scorecount >= cursize)
|
||||
{
|
||||
cursize *= 2;
|
||||
ret = (struct score_entry *)
|
||||
realloc (ret, (sizeof (struct score_entry) * cursize));
|
||||
if (!ret)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
*count = scorecount;
|
||||
*scores = ret;
|
||||
return 0;
|
||||
if (readval > 0)
|
||||
{
|
||||
*count = scorecount;
|
||||
*scores = ret;
|
||||
retval = 0;
|
||||
}
|
||||
fclose (f);
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -383,6 +388,7 @@ sort_scores (struct score_entry *scores, int count, int reverse)
|
|||
static int
|
||||
write_scores (const char *filename, const struct score_entry *scores, int count)
|
||||
{
|
||||
int fd;
|
||||
FILE *f;
|
||||
int i;
|
||||
char *tempfile = malloc (strlen (filename) + strlen (".tempXXXXXX") + 1);
|
||||
|
@ -390,12 +396,11 @@ write_scores (const char *filename, const struct score_entry *scores, int count)
|
|||
return -1;
|
||||
strcpy (tempfile, filename);
|
||||
strcat (tempfile, ".tempXXXXXX");
|
||||
#ifdef HAVE_MKSTEMP
|
||||
if (mkstemp (tempfile) < 0
|
||||
#else
|
||||
if (mktemp (tempfile) != tempfile
|
||||
#endif
|
||||
|| !(f = fopen (tempfile, "w")))
|
||||
fd = mkostemp (tempfile, 0);
|
||||
if (fd < 0)
|
||||
return -1;
|
||||
f = fdopen (fd, "w");
|
||||
if (! f)
|
||||
return -1;
|
||||
for (i = 0; i < count; i++)
|
||||
if (fprintf (f, "%ld %s %s\n", scores[i].score, scores[i].username,
|
||||
|
@ -461,5 +466,4 @@ unlock_file (const char *filename, void *state)
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* update-game-score.c ends here */
|
||||
|
|
10
lib-src/update-game-score.exe.manifest
Normal file
10
lib-src/update-game-score.exe.manifest
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
|
||||
<v3:security>
|
||||
<v3:requestedPrivileges>
|
||||
<v3:requestedExecutionLevel level="asInvoker" />
|
||||
</v3:requestedPrivileges>
|
||||
</v3:security>
|
||||
</v3:trustInfo>
|
||||
</assembly>
|
|
@ -21,7 +21,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream 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 intprops largefile lstat manywarnings memrchr mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream 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 intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
|
||||
|
||||
MOSTLYCLEANFILES += core *.stackdump
|
||||
|
@ -560,6 +560,15 @@ EXTRA_libgnu_a_SOURCES += memrchr.c
|
|||
|
||||
## end gnulib module memrchr
|
||||
|
||||
## begin gnulib module mkostemp
|
||||
|
||||
|
||||
EXTRA_DIST += mkostemp.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += mkostemp.c
|
||||
|
||||
## end gnulib module mkostemp
|
||||
|
||||
## begin gnulib module mktime
|
||||
|
||||
|
||||
|
@ -657,6 +666,17 @@ EXTRA_DIST += root-uid.h
|
|||
|
||||
## end gnulib module root-uid
|
||||
|
||||
## begin gnulib module secure_getenv
|
||||
|
||||
if gl_GNULIB_ENABLED_secure_getenv
|
||||
|
||||
endif
|
||||
EXTRA_DIST += secure_getenv.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += secure_getenv.c
|
||||
|
||||
## end gnulib module secure_getenv
|
||||
|
||||
## begin gnulib module sig2str
|
||||
|
||||
|
||||
|
@ -1480,6 +1500,16 @@ EXTRA_DIST += sys_time.in.h
|
|||
|
||||
## end gnulib module sys_time
|
||||
|
||||
## begin gnulib module tempname
|
||||
|
||||
if gl_GNULIB_ENABLED_tempname
|
||||
libgnu_a_SOURCES += tempname.c
|
||||
|
||||
endif
|
||||
EXTRA_DIST += tempname.h
|
||||
|
||||
## end gnulib module tempname
|
||||
|
||||
## begin gnulib module time
|
||||
|
||||
BUILT_SOURCES += time.h
|
||||
|
|
46
lib/mkostemp.c
Normal file
46
lib/mkostemp.c
Normal file
|
@ -0,0 +1,46 @@
|
|||
/* Copyright (C) 1998-1999, 2001, 2005-2007, 2009-2013 Free Software
|
||||
Foundation, Inc.
|
||||
This file is derived from the one in the GNU C Library.
|
||||
|
||||
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/>. */
|
||||
|
||||
#if !_LIBC
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#if !_LIBC
|
||||
# include "tempname.h"
|
||||
# define __gen_tempname gen_tempname
|
||||
# ifndef __GTFILE
|
||||
# define __GT_FILE GT_FILE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef __GT_FILE
|
||||
# define __GT_FILE 0
|
||||
#endif
|
||||
|
||||
/* Generate a unique temporary file name from XTEMPLATE.
|
||||
The last six characters of XTEMPLATE must be "XXXXXX";
|
||||
they are replaced with a string that makes the file name unique.
|
||||
Then open the file and return a fd. */
|
||||
int
|
||||
mkostemp (char *xtemplate, int flags)
|
||||
{
|
||||
return __gen_tempname (xtemplate, 0, flags, __GT_FILE);
|
||||
}
|
41
lib/secure_getenv.c
Normal file
41
lib/secure_getenv.c
Normal file
|
@ -0,0 +1,41 @@
|
|||
/* Look up an environment variable more securely.
|
||||
|
||||
Copyright 2013 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/>. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#if !HAVE___SECURE_GETENV
|
||||
# if HAVE_ISSETUGID
|
||||
# include <unistd.h>
|
||||
# else
|
||||
# undef issetugid
|
||||
# define issetugid() 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
char *
|
||||
secure_getenv (char const *name)
|
||||
{
|
||||
#if HAVE___SECURE_GETENV
|
||||
return __secure_getenv (name);
|
||||
#else
|
||||
if (issetugid ())
|
||||
return 0;
|
||||
return getenv (name);
|
||||
#endif
|
||||
}
|
306
lib/tempname.c
Normal file
306
lib/tempname.c
Normal file
|
@ -0,0 +1,306 @@
|
|||
/* tempname.c - generate the name of a temporary file.
|
||||
|
||||
Copyright (C) 1991-2003, 2005-2007, 2009-2013 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/>. */
|
||||
|
||||
/* Extracted from glibc sysdeps/posix/tempname.c. See also tmpdir.c. */
|
||||
|
||||
#if !_LIBC
|
||||
# include <config.h>
|
||||
# include "tempname.h"
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef __set_errno
|
||||
# define __set_errno(Val) errno = (Val)
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#ifndef P_tmpdir
|
||||
# define P_tmpdir "/tmp"
|
||||
#endif
|
||||
#ifndef TMP_MAX
|
||||
# define TMP_MAX 238328
|
||||
#endif
|
||||
#ifndef __GT_FILE
|
||||
# define __GT_FILE 0
|
||||
# define __GT_DIR 1
|
||||
# define __GT_NOCREATE 2
|
||||
#endif
|
||||
#if !_LIBC && (GT_FILE != __GT_FILE || GT_DIR != __GT_DIR \
|
||||
|| GT_NOCREATE != __GT_NOCREATE)
|
||||
# error report this to bug-gnulib@gnu.org
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/time.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#if _LIBC
|
||||
# define struct_stat64 struct stat64
|
||||
#else
|
||||
# define struct_stat64 struct stat
|
||||
# define __gen_tempname gen_tempname
|
||||
# define __getpid getpid
|
||||
# define __gettimeofday gettimeofday
|
||||
# define __mkdir mkdir
|
||||
# define __open open
|
||||
# define __lxstat64(version, file, buf) lstat (file, buf)
|
||||
# define __secure_getenv secure_getenv
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <hp-timing.h>
|
||||
# if HP_TIMING_AVAIL
|
||||
# define RANDOM_BITS(Var) \
|
||||
if (__builtin_expect (value == UINT64_C (0), 0)) \
|
||||
{ \
|
||||
/* If this is the first time this function is used initialize \
|
||||
the variable we accumulate the value in to some somewhat \
|
||||
random value. If we'd not do this programs at startup time \
|
||||
might have a reduced set of possible names, at least on slow \
|
||||
machines. */ \
|
||||
struct timeval tv; \
|
||||
__gettimeofday (&tv, NULL); \
|
||||
value = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; \
|
||||
} \
|
||||
HP_TIMING_NOW (Var)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Use the widest available unsigned type if uint64_t is not
|
||||
available. The algorithm below extracts a number less than 62**6
|
||||
(approximately 2**35.725) from uint64_t, so ancient hosts where
|
||||
uintmax_t is only 32 bits lose about 3.725 bits of randomness,
|
||||
which is better than not having mkstemp at all. */
|
||||
#if !defined UINT64_MAX && !defined uint64_t
|
||||
# define uint64_t uintmax_t
|
||||
#endif
|
||||
|
||||
#if _LIBC
|
||||
/* Return nonzero if DIR is an existent directory. */
|
||||
static int
|
||||
direxists (const char *dir)
|
||||
{
|
||||
struct_stat64 buf;
|
||||
return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
|
||||
}
|
||||
|
||||
/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is
|
||||
non-null and exists, uses it; otherwise uses the first of $TMPDIR,
|
||||
P_tmpdir, /tmp that exists. Copies into TMPL a template suitable
|
||||
for use with mk[s]temp. Will fail (-1) if DIR is non-null and
|
||||
doesn't exist, none of the searched dirs exists, or there's not
|
||||
enough space in TMPL. */
|
||||
int
|
||||
__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
|
||||
int try_tmpdir)
|
||||
{
|
||||
const char *d;
|
||||
size_t dlen, plen;
|
||||
|
||||
if (!pfx || !pfx[0])
|
||||
{
|
||||
pfx = "file";
|
||||
plen = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
plen = strlen (pfx);
|
||||
if (plen > 5)
|
||||
plen = 5;
|
||||
}
|
||||
|
||||
if (try_tmpdir)
|
||||
{
|
||||
d = __secure_getenv ("TMPDIR");
|
||||
if (d != NULL && direxists (d))
|
||||
dir = d;
|
||||
else if (dir != NULL && direxists (dir))
|
||||
/* nothing */ ;
|
||||
else
|
||||
dir = NULL;
|
||||
}
|
||||
if (dir == NULL)
|
||||
{
|
||||
if (direxists (P_tmpdir))
|
||||
dir = P_tmpdir;
|
||||
else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp"))
|
||||
dir = "/tmp";
|
||||
else
|
||||
{
|
||||
__set_errno (ENOENT);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
dlen = strlen (dir);
|
||||
while (dlen > 1 && dir[dlen - 1] == '/')
|
||||
dlen--; /* remove trailing slashes */
|
||||
|
||||
/* check we have room for "${dir}/${pfx}XXXXXX\0" */
|
||||
if (tmpl_len < dlen + 1 + plen + 6 + 1)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx);
|
||||
return 0;
|
||||
}
|
||||
#endif /* _LIBC */
|
||||
|
||||
/* These are the characters used in temporary file names. */
|
||||
static const char letters[] =
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
|
||||
/* Generate a temporary file name based on TMPL. TMPL must match the
|
||||
rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
|
||||
The name constructed does not exist at the time of the call to
|
||||
__gen_tempname. TMPL is overwritten with the result.
|
||||
|
||||
KIND may be one of:
|
||||
__GT_NOCREATE: simply verify that the name does not exist
|
||||
at the time of the call.
|
||||
__GT_FILE: create the file using open(O_CREAT|O_EXCL)
|
||||
and return a read-write fd. The file is mode 0600.
|
||||
__GT_DIR: create a directory, which will be mode 0700.
|
||||
|
||||
We use a clever algorithm to get hard-to-predict names. */
|
||||
int
|
||||
__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
|
||||
{
|
||||
int len;
|
||||
char *XXXXXX;
|
||||
static uint64_t value;
|
||||
uint64_t random_time_bits;
|
||||
unsigned int count;
|
||||
int fd = -1;
|
||||
int save_errno = errno;
|
||||
struct_stat64 st;
|
||||
|
||||
/* A lower bound on the number of temporary files to attempt to
|
||||
generate. The maximum total number of temporary file names that
|
||||
can exist for a given template is 62**6. It should never be
|
||||
necessary to try all of these combinations. Instead if a reasonable
|
||||
number of names is tried (we define reasonable as 62**3) fail to
|
||||
give the system administrator the chance to remove the problems. */
|
||||
#define ATTEMPTS_MIN (62 * 62 * 62)
|
||||
|
||||
/* The number of times to attempt to generate a temporary file. To
|
||||
conform to POSIX, this must be no smaller than TMP_MAX. */
|
||||
#if ATTEMPTS_MIN < TMP_MAX
|
||||
unsigned int attempts = TMP_MAX;
|
||||
#else
|
||||
unsigned int attempts = ATTEMPTS_MIN;
|
||||
#endif
|
||||
|
||||
len = strlen (tmpl);
|
||||
if (len < 6 + suffixlen || memcmp (&tmpl[len - 6 - suffixlen], "XXXXXX", 6))
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* This is where the Xs start. */
|
||||
XXXXXX = &tmpl[len - 6 - suffixlen];
|
||||
|
||||
/* Get some more or less random data. */
|
||||
#ifdef RANDOM_BITS
|
||||
RANDOM_BITS (random_time_bits);
|
||||
#else
|
||||
{
|
||||
struct timeval tv;
|
||||
__gettimeofday (&tv, NULL);
|
||||
random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
|
||||
}
|
||||
#endif
|
||||
value += random_time_bits ^ __getpid ();
|
||||
|
||||
for (count = 0; count < attempts; value += 7777, ++count)
|
||||
{
|
||||
uint64_t v = value;
|
||||
|
||||
/* Fill in the random bits. */
|
||||
XXXXXX[0] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[1] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[2] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[3] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[4] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[5] = letters[v % 62];
|
||||
|
||||
switch (kind)
|
||||
{
|
||||
case __GT_FILE:
|
||||
fd = __open (tmpl,
|
||||
(flags & ~O_ACCMODE)
|
||||
| O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
|
||||
break;
|
||||
|
||||
case __GT_DIR:
|
||||
fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
|
||||
break;
|
||||
|
||||
case __GT_NOCREATE:
|
||||
/* This case is backward from the other three. __gen_tempname
|
||||
succeeds if __xstat fails because the name does not exist.
|
||||
Note the continue to bypass the common logic at the bottom
|
||||
of the loop. */
|
||||
if (__lxstat64 (_STAT_VER, tmpl, &st) < 0)
|
||||
{
|
||||
if (errno == ENOENT)
|
||||
{
|
||||
__set_errno (save_errno);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
/* Give up now. */
|
||||
return -1;
|
||||
}
|
||||
continue;
|
||||
|
||||
default:
|
||||
assert (! "invalid KIND in __gen_tempname");
|
||||
abort ();
|
||||
}
|
||||
|
||||
if (fd >= 0)
|
||||
{
|
||||
__set_errno (save_errno);
|
||||
return fd;
|
||||
}
|
||||
else if (errno != EEXIST)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* We got out of the loop because we ran out of combinations to try. */
|
||||
__set_errno (EEXIST);
|
||||
return -1;
|
||||
}
|
50
lib/tempname.h
Normal file
50
lib/tempname.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
/* Create a temporary file or directory.
|
||||
|
||||
Copyright (C) 2006, 2009-2013 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/>. */
|
||||
|
||||
/* header written by Eric Blake */
|
||||
|
||||
#ifndef GL_TEMPNAME_H
|
||||
# define GL_TEMPNAME_H
|
||||
|
||||
# include <stdio.h>
|
||||
|
||||
# ifdef __GT_FILE
|
||||
# define GT_FILE __GT_FILE
|
||||
# define GT_DIR __GT_DIR
|
||||
# define GT_NOCREATE __GT_NOCREATE
|
||||
# else
|
||||
# define GT_FILE 0
|
||||
# define GT_DIR 1
|
||||
# define GT_NOCREATE 2
|
||||
# endif
|
||||
|
||||
/* Generate a temporary file name based on TMPL. TMPL must match the
|
||||
rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
|
||||
The name constructed does not exist at the time of the call to
|
||||
gen_tempname. TMPL is overwritten with the result.
|
||||
|
||||
KIND may be one of:
|
||||
GT_NOCREATE: simply verify that the name does not exist
|
||||
at the time of the call.
|
||||
GT_FILE: create a large file using open(O_CREAT|O_EXCL)
|
||||
and return a read-write fd. The file is mode 0600.
|
||||
GT_DIR: create a directory, which will be mode 0700.
|
||||
|
||||
We use a clever algorithm to get hard-to-predict names. */
|
||||
extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind);
|
||||
|
||||
#endif /* GL_TEMPNAME_H */
|
1321
lisp/ChangeLog
1321
lisp/ChangeLog
File diff suppressed because it is too large
Load diff
|
@ -5182,7 +5182,7 @@
|
|||
inserted.
|
||||
(Info-hide-note-references): Fix doc and customize type.
|
||||
|
||||
2003-03-02 Matt Swift <swift@alum.mit.edu>
|
||||
2003-03-02 Matthew Swift <swift@alum.mit.edu>
|
||||
|
||||
* emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column):
|
||||
New custom variable.
|
||||
|
@ -5228,7 +5228,7 @@
|
|||
(tramp-send-region): Correct debug message.
|
||||
(tramp-bug): Add `tramp-chunksize'.
|
||||
|
||||
2003-02-26 Matt Swift <swift@alum.mit.edu>
|
||||
2003-02-26 Matthew Swift <swift@alum.mit.edu>
|
||||
|
||||
* startup.el: Streamline code in several functions for efficiency
|
||||
and readability. Rephrase booleans to avoid `(not noninteractive)'.
|
||||
|
|
|
@ -5119,7 +5119,7 @@
|
|||
(x-setup-function-keys, xw-defined-colors): Merge x- and w32-
|
||||
definitions here.
|
||||
|
||||
2010-10-24 T.V. Raman <tv.raman.tv@gmail.com> (tiny change)
|
||||
2010-10-24 T. V. Raman <tv.raman.tv@gmail.com> (tiny change)
|
||||
|
||||
* net/mairix.el (mairix-searches-mode-map):
|
||||
* mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change.
|
||||
|
|
|
@ -4569,7 +4569,7 @@
|
|||
* bookmark.el (bookmark-completing-read): Set the completion category
|
||||
to `bookmark' (bug#11131).
|
||||
|
||||
2012-10-26 Bastien <bzg@altern.org>
|
||||
2012-10-26 Bastien Guerry <bzg@altern.org>
|
||||
Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* face-remap.el: Use lexical-binding.
|
||||
|
@ -9712,7 +9712,7 @@
|
|||
* international/mule-cmds.el (mule-menu-keymap)
|
||||
(set-language-environment, set-locale-environment): Doc tweaks.
|
||||
|
||||
2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com>
|
||||
2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com>
|
||||
|
||||
* cus-face.el (custom-face-attributes): Add wave-style underline
|
||||
attribute.
|
||||
|
|
|
@ -7617,7 +7617,7 @@
|
|||
Delete the binding for toggle-enable-multibyte-characters.
|
||||
(mule-menu-keymap): Delete the menu item for it.
|
||||
|
||||
1997-12-17 Peter Galbraith <galbraith@mixing.qc.dfo.ca>
|
||||
1997-12-17 Peter S Galbraith <galbraith@mixing.qc.dfo.ca>
|
||||
|
||||
* simple.el (copy-region-as-kill):
|
||||
Deactivate mark in transient-mark-mode.
|
||||
|
@ -19637,7 +19637,7 @@
|
|||
|
||||
* term/x-win.el (function-key-map): Define iso-lefttab.
|
||||
|
||||
1997-03-24 Vince Del Vecchio <vdelvecc@spd.analog.com>
|
||||
1997-03-24 Vincent Del Vecchio <vdelvecc@spd.analog.com>
|
||||
|
||||
* mh-utils.el (mh-find-progs): When looking for mh-lib, construct
|
||||
likely paths based on mh-progs rather than using a static list.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Maintenance productions for the Lisp directory
|
||||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
|
|
@ -856,7 +856,7 @@ return value is that of `abbrev-insert'.)"
|
|||
(endmark (copy-marker wordend t)))
|
||||
(unless (or ;; executing-kbd-macro
|
||||
noninteractive
|
||||
(window-minibuffer-p (selected-window)))
|
||||
(window-minibuffer-p))
|
||||
;; Add an undo boundary, in case we are doing this for
|
||||
;; a self-inserting command which has avoided making one so far.
|
||||
(undo-boundary))
|
||||
|
|
|
@ -906,15 +906,8 @@ on the format of these lists."
|
|||
;;;###autoload
|
||||
(defun align-regexp (beg end regexp &optional group spacing repeat)
|
||||
"Align the current region using an ad-hoc rule read from the minibuffer.
|
||||
BEG and END mark the limits of the region. This function will prompt
|
||||
for the REGEXP to align with. If no prefix arg was specified, you
|
||||
only need to supply the characters to be lined up and any preceding
|
||||
whitespace is replaced. If a prefix arg was specified, the full
|
||||
regexp with parenthesized whitespace should be supplied; it will also
|
||||
prompt for which parenthesis GROUP within REGEXP to modify, the amount
|
||||
of SPACING to use, and whether or not to REPEAT the rule throughout
|
||||
the line. See `align-rules-list' for more information about these
|
||||
options.
|
||||
BEG and END mark the limits of the region. Interactively, this function
|
||||
prompts for the regular expression REGEXP to align with.
|
||||
|
||||
For example, let's say you had a list of phone numbers, and wanted to
|
||||
align them so that the opening parentheses would line up:
|
||||
|
@ -925,8 +918,29 @@ align them so that the opening parentheses would line up:
|
|||
Joe (123) 456-7890
|
||||
|
||||
There is no predefined rule to handle this, but you could easily do it
|
||||
using a REGEXP like \"(\". All you would have to do is to mark the
|
||||
region, call `align-regexp' and type in that regular expression."
|
||||
using a REGEXP like \"(\". Interactively, all you would have to do is
|
||||
to mark the region, call `align-regexp' and enter that regular expression.
|
||||
|
||||
REGEXP must contain at least one parenthesized subexpression, typically
|
||||
whitespace of the form \"\\\\(\\\\s-*\\\\)\". In normal interactive use,
|
||||
this is automatically added to the start of your regular expression after
|
||||
you enter it. You only need to supply the characters to be lined up, and
|
||||
any preceding whitespace is replaced.
|
||||
|
||||
If you specify a prefix argument (or use this function non-interactively),
|
||||
you must enter the full regular expression, including the subexpression.
|
||||
The function also then prompts for which subexpression parenthesis GROUP
|
||||
\(default 1) within REGEXP to modify, the amount of SPACING (default
|
||||
`align-default-spacing') to use, and whether or not to REPEAT the rule
|
||||
throughout the line.
|
||||
|
||||
See `align-rules-list' for more information about these options.
|
||||
|
||||
The non-interactive form of the previous example would look something like:
|
||||
\(align-regexp (point-min) (point-max) \"\\\\(\\\\s-*\\\\)(\")
|
||||
|
||||
This function is a nothing more than a small wrapper that helps you
|
||||
construct a rule to pass to `align-region', which does the real work."
|
||||
(interactive
|
||||
(append
|
||||
(list (region-beginning) (region-end))
|
||||
|
@ -1498,6 +1512,9 @@ aligner would have dealt with are."
|
|||
(setq rule-beg (match-beginning first)
|
||||
save-match-data (match-data))
|
||||
|
||||
(or rule-beg
|
||||
(error "No match for subexpression %s" first))
|
||||
|
||||
;; unless the `valid' attribute is set, and tells
|
||||
;; us that the rule is not valid at this point in
|
||||
;; the code..
|
||||
|
|
|
@ -720,17 +720,17 @@ icon/bullet.")
|
|||
;;;_ . Hooks and hook helpers
|
||||
;;;_ , major command-loop business:
|
||||
;;;_ > allout-widgets-pre-command-business (&optional recursing)
|
||||
(defun allout-widgets-pre-command-business (&optional recursing)
|
||||
(defun allout-widgets-pre-command-business (&optional _recursing)
|
||||
"Handle actions pending before `allout-mode' activity."
|
||||
)
|
||||
;;;_ > allout-widgets-post-command-business (&optional recursing)
|
||||
(defun allout-widgets-post-command-business (&optional recursing)
|
||||
(defun allout-widgets-post-command-business (&optional _recursing)
|
||||
"Handle actions pending after any `allout-mode' commands.
|
||||
|
||||
Optional RECURSING is for internal use, to limit recursion."
|
||||
;; - check changed text for nesting discontinuities and escape anything
|
||||
;; that's: (1) asterisks at bol or (2) excessively nested.
|
||||
(condition-case failure
|
||||
(condition-case nil
|
||||
|
||||
(when (and (boundp 'allout-mode) allout-mode)
|
||||
|
||||
|
@ -811,7 +811,7 @@ Optional RECURSING is for internal use, to limit recursion."
|
|||
(goto-char (widget-get this-widget :from))
|
||||
(not (bolp)))
|
||||
(if (not
|
||||
(condition-case err
|
||||
(condition-case nil
|
||||
(yes-or-no-p
|
||||
(concat "Misplaced item won't be recognizable "
|
||||
" as part of outline - rectify? "))
|
||||
|
@ -873,7 +873,7 @@ Optional RECURSING is for internal use, to limit recursion."
|
|||
(error
|
||||
(substitute-command-keys allout-structure-unruly-deletion-message)))))
|
||||
;;;_ > allout-widgets-after-change-handler
|
||||
(defun allout-widgets-after-change-handler (beg end prelength)
|
||||
(defun allout-widgets-after-change-handler (_beg _end _prelength)
|
||||
"Reconcile what needs to be reconciled for allout widgets after edits."
|
||||
)
|
||||
;;;_ > allout-current-decorated-p ()
|
||||
|
@ -999,7 +999,6 @@ Generally invoked via `allout-exposure-change-functions'."
|
|||
;; have to distinguish between concealing and exposing so that, eg,
|
||||
;; `allout-expose-topic's mix is handled properly.
|
||||
handled-expose
|
||||
handled-conceal
|
||||
covered
|
||||
deactivate-mark)
|
||||
|
||||
|
@ -1188,7 +1187,7 @@ Dispatched by `allout-widgets-post-command-business' in response to
|
|||
(let* ((allout-undo-exposure-in-progress t)
|
||||
;; inhibit undo recording while twiddling exposure to track undo:
|
||||
(widgets allout-widgets-undo-exposure-record)
|
||||
widget widget-start-marker widget-end-marker
|
||||
widget-start-marker widget-end-marker
|
||||
from-state icon-start-point to-state
|
||||
handled covered)
|
||||
(setq allout-widgets-undo-exposure-record nil)
|
||||
|
@ -1552,7 +1551,7 @@ recursive operation."
|
|||
;;;_ > allout-decorate-item-and-context (item-widget &optional redecorate
|
||||
;;; blank-container parent)
|
||||
(defun allout-decorate-item-and-context (item-widget &optional redecorate
|
||||
blank-container parent)
|
||||
blank-container _parent)
|
||||
"Create or adjust widget decorations for ITEM-WIDGET and neighbors at point.
|
||||
|
||||
The neighbors include its siblings and parent.
|
||||
|
@ -1593,12 +1592,8 @@ We return the item-widget corresponding to the item at point."
|
|||
steady-point))
|
||||
(parent (and (not is-container)
|
||||
(allout-get-or-create-parent-widget)))
|
||||
parent-flags parent-depth
|
||||
successor-sibling
|
||||
body
|
||||
doing-item
|
||||
sub-item-widget
|
||||
depth
|
||||
reverse-siblings-chart
|
||||
(buffer-undo-list t))
|
||||
|
||||
|
@ -1615,7 +1610,6 @@ We return the item-widget corresponding to the item at point."
|
|||
;; `allout-goto-prefix' will go to first non-container item:
|
||||
(allout-goto-prefix)
|
||||
(allout-next-heading))
|
||||
(setq depth (allout-recent-depth))
|
||||
(setq reverse-siblings-chart (list allout-recent-prefix-beginning))
|
||||
(while (allout-next-sibling)
|
||||
(push allout-recent-prefix-beginning reverse-siblings-chart)))
|
||||
|
@ -1702,7 +1696,6 @@ Point is left at the last sibling in the visible subtree."
|
|||
(pending-chart (or chart (allout-chart-subtree nil 'visible)))
|
||||
item-widget
|
||||
previous-sibling-point
|
||||
previous-sibling
|
||||
recent-sibling-point)
|
||||
(setq pending-chart (nreverse pending-chart))
|
||||
(dolist (sibling-point pending-chart)
|
||||
|
@ -1753,9 +1746,7 @@ may have subitems.)"
|
|||
(icon-start (1- icon-end))
|
||||
body-start
|
||||
body-end
|
||||
bullet
|
||||
has-subitems
|
||||
(contents-depth (1+ depth))
|
||||
)
|
||||
(widget-put item-widget :depth depth)
|
||||
(if is-container
|
||||
|
@ -1783,7 +1774,7 @@ may have subitems.)"
|
|||
|
||||
;; cue area:
|
||||
(setq body-start icon-end)
|
||||
(widget-put item-widget :bullet (setq bullet (allout-get-bullet)))
|
||||
(widget-put item-widget :bullet (allout-get-bullet))
|
||||
(if (equal (char-after body-start) ? )
|
||||
(setq body-start (1+ body-start)))
|
||||
(widget-put item-widget :body-start body-start)
|
||||
|
@ -1809,7 +1800,7 @@ may have subitems.)"
|
|||
;; has a subsequent item:
|
||||
(not (= body-end (point-max)))
|
||||
;; subsequent item is deeper:
|
||||
(< depth (setq contents-depth (allout-recent-depth))))))
|
||||
(< depth (allout-recent-depth)))))
|
||||
;; note :expanded - true if widget item's content is currently visible?
|
||||
(widget-put item-widget :expanded
|
||||
(and has-subitems
|
||||
|
@ -1818,7 +1809,7 @@ may have subitems.)"
|
|||
(goto-char allout-recent-prefix-beginning)
|
||||
(not (allout-hidden-p)))))))
|
||||
;;;_ > allout-set-boundary-marker (boundary position &optional current-marker)
|
||||
(defun allout-set-boundary-marker (boundary position &optional current-marker)
|
||||
(defun allout-set-boundary-marker (_boundary position &optional current-marker)
|
||||
"Set or create item widget BOUNDARY type marker at POSITION.
|
||||
|
||||
Optional CURRENT-MARKER is the marker currently being used for
|
||||
|
@ -1872,8 +1863,8 @@ reapplying this method will rectify the glyphs."
|
|||
|
||||
(when (not (widget-get item-widget :is-container))
|
||||
(let* ((depth (widget-get item-widget :depth))
|
||||
(parent-depth (and parent-widget
|
||||
(widget-get parent-widget :depth)))
|
||||
;; (parent-depth (and parent-widget
|
||||
;; (widget-get parent-widget :depth)))
|
||||
(parent-flags (and parent-widget
|
||||
(widget-get parent-widget :guide-column-flags)))
|
||||
(parent-flags-depth (length parent-flags))
|
||||
|
@ -1894,7 +1885,7 @@ reapplying this method will rectify the glyphs."
|
|||
(increment (length allout-header-prefix))
|
||||
reverse-flags
|
||||
guide-name
|
||||
extenders paint-extenders
|
||||
extenders
|
||||
(inhibit-read-only t))
|
||||
|
||||
(when (not (equal was-flags flags))
|
||||
|
@ -2017,8 +2008,8 @@ reapplying this method will rectify the glyphs."
|
|||
(let* ((cue-start (or (widget-get item-widget :distinctive-end)
|
||||
(widget-get item-widget :icon-end)))
|
||||
(body-start (widget-get item-widget :body-start))
|
||||
(expanded (widget-get item-widget :expanded))
|
||||
(has-subitems (widget-get item-widget :has-subitems))
|
||||
;(expanded (widget-get item-widget :expanded))
|
||||
;(has-subitems (widget-get item-widget :has-subitems))
|
||||
(inhibit-read-only t))
|
||||
|
||||
(allout-item-element-span-is item-widget :cue-span cue-start body-start)
|
||||
|
@ -2032,7 +2023,6 @@ Optional FORCE means force reassignment of the region property."
|
|||
(let* ((allout-inhibit-body-modification-hook t)
|
||||
(body-start (widget-get item-widget :body-start))
|
||||
(body-end (widget-get item-widget :body-end))
|
||||
(body-text-end body-end)
|
||||
(inhibit-read-only t))
|
||||
|
||||
(allout-item-element-span-is item-widget :body-span
|
||||
|
@ -2135,9 +2125,7 @@ of the current span, if established, or nil if not yet set.
|
|||
When the START and END are passed, return the distance that the
|
||||
start of the item moved. We return 0 if the span was not
|
||||
previously established or is not moved."
|
||||
(let ((overlay (widget-get item-widget :span-overlay))
|
||||
was-start was-end
|
||||
changed)
|
||||
(let ((overlay (widget-get item-widget :span-overlay)))
|
||||
(cond ((not overlay) (when start
|
||||
(setq overlay (make-overlay start end nil t nil))
|
||||
(overlay-put overlay 'button item-widget)
|
||||
|
@ -2259,7 +2247,7 @@ of the buffer."
|
|||
(allout-get-or-create-item-widget redecorate)))
|
||||
;;;_ : X- Item ancillaries
|
||||
;;;_ >X allout-body-modification-handler (beg end)
|
||||
(defun allout-body-modification-handler (beg end)
|
||||
(defun allout-body-modification-handler (_beg _end)
|
||||
"Do routine processing of body text before and after modification.
|
||||
|
||||
Operation is inhibited by `allout-inhibit-body-modification-handler'."
|
||||
|
@ -2281,7 +2269,7 @@ Operation is inhibited by `allout-inhibit-body-modification-handler'."
|
|||
;; operation.
|
||||
(cond (allout-inhibit-body-modification-hook nil)))
|
||||
;;;_ >X allout-graphics-modification-handler (beg end)
|
||||
(defun allout-graphics-modification-handler (beg end)
|
||||
(defun allout-graphics-modification-handler (beg _end)
|
||||
"Protect against incoherent deletion of decoration graphics.
|
||||
|
||||
Deletes allowed only when `inhibit-read-only' is t."
|
||||
|
|
|
@ -74,6 +74,9 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(declare-function epa-passphrase-callback-function
|
||||
"epa" (context key-id handback))
|
||||
|
||||
;;;_* Dependency loads
|
||||
(require 'overlay)
|
||||
(eval-when-compile
|
||||
|
@ -2121,8 +2124,8 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
|
|||
|
||||
;;;_ > allout-overlay-insert-in-front-handler (ol after beg end
|
||||
;;; &optional prelen)
|
||||
(defun allout-overlay-insert-in-front-handler (ol after beg end
|
||||
&optional prelen)
|
||||
(defun allout-overlay-insert-in-front-handler (ol after beg _end
|
||||
&optional _prelen)
|
||||
"Shift the overlay so stuff inserted in front of it is excluded."
|
||||
(if after
|
||||
;; ??? Shouldn't moving the overlay should be unnecessary, if overlay
|
||||
|
@ -2131,7 +2134,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
|
|||
;;;_ > allout-overlay-interior-modification-handler (ol after beg end
|
||||
;;; &optional prelen)
|
||||
(defun allout-overlay-interior-modification-handler (ol after beg end
|
||||
&optional prelen)
|
||||
&optional _prelen)
|
||||
"Get confirmation before making arbitrary changes to invisible text.
|
||||
|
||||
We expose the invisible text and ask for confirmation. Refusal or
|
||||
|
@ -2194,7 +2197,7 @@ See `allout-overlay-interior-modification-handler' for details."
|
|||
(allout-overlay-interior-modification-handler
|
||||
overlay nil beg end nil))))))
|
||||
;;;_ > allout-isearch-end-handler (&optional overlay)
|
||||
(defun allout-isearch-end-handler (&optional overlay)
|
||||
(defun allout-isearch-end-handler (&optional _overlay)
|
||||
"Reconcile allout outline exposure on arriving in hidden text after isearch.
|
||||
|
||||
Optional OVERLAY parameter is for when this function is used by
|
||||
|
@ -2733,7 +2736,7 @@ starting point, and PREV-DEPTH is depth of prior topic."
|
|||
; and maybe not preferable.
|
||||
))
|
||||
;;;_ > allout-chart-siblings (&optional start end)
|
||||
(defun allout-chart-siblings (&optional start end)
|
||||
(defun allout-chart-siblings (&optional _start _end)
|
||||
"Produce a list of locations of this and succeeding sibling topics.
|
||||
Effectively a top-level chart of siblings. See `allout-chart-subtree'
|
||||
for an explanation of charts."
|
||||
|
@ -3051,7 +3054,7 @@ Returning depth if successful, nil if not."
|
|||
nil))
|
||||
)
|
||||
;;;_ > allout-up-current-level (arg)
|
||||
(defun allout-up-current-level (arg)
|
||||
(defun allout-up-current-level (_arg)
|
||||
"Move out ARG levels from current visible topic."
|
||||
(interactive "p")
|
||||
(let ((start-point (point)))
|
||||
|
@ -3198,7 +3201,7 @@ Presumes point is at the start of a topic prefix."
|
|||
"Go back to the first sibling at this level, visible or not."
|
||||
(allout-end-of-level 'backward))
|
||||
;;;_ > allout-end-of-level (&optional backward)
|
||||
(defun allout-end-of-level (&optional backward)
|
||||
(defun allout-end-of-level (&optional _backward)
|
||||
"Go to the last sibling at this level, visible or not."
|
||||
|
||||
(let ((depth (allout-depth)))
|
||||
|
@ -3930,7 +3933,7 @@ Maintains outline hanging topic indentation if
|
|||
(if (or allout-former-auto-filler allout-use-hanging-indents)
|
||||
(funcall use-auto-fill-function)))))
|
||||
;;;_ > allout-reindent-body (old-depth new-depth &optional number)
|
||||
(defun allout-reindent-body (old-depth new-depth &optional number)
|
||||
(defun allout-reindent-body (old-depth new-depth &optional _number)
|
||||
"Reindent body lines which were indented at OLD-DEPTH to NEW-DEPTH.
|
||||
|
||||
Optional arg NUMBER indicates numbering is being added, and it must
|
||||
|
@ -4559,7 +4562,7 @@ Topic exposure is marked with text-properties, to be used by
|
|||
(if next (goto-char next)))))
|
||||
(set-buffer-modified-p was-modified))))
|
||||
;;;_ > allout-yank-processing ()
|
||||
(defun allout-yank-processing (&optional arg)
|
||||
(defun allout-yank-processing (&optional _arg)
|
||||
|
||||
"Incidental allout-specific business to be done just after text yanks.
|
||||
|
||||
|
@ -5521,7 +5524,7 @@ header and body. The elements of that list are:
|
|||
;;_ > allout-process-exposed (&optional func from to frombuf
|
||||
;;; tobuf format)
|
||||
(defun allout-process-exposed (&optional func from to frombuf tobuf
|
||||
format start-num)
|
||||
format _start-num)
|
||||
"Map function on exposed parts of current topic; results to another buffer.
|
||||
|
||||
All args are options; default values itemized below.
|
||||
|
@ -5685,7 +5688,7 @@ used verbatim."
|
|||
|
||||
;;;_ - LaTeX formatting
|
||||
;;;_ > allout-latex-verb-quote (string &optional flow)
|
||||
(defun allout-latex-verb-quote (string &optional flow)
|
||||
(defun allout-latex-verb-quote (string &optional _flow)
|
||||
"Return copy of STRING for literal reproduction across LaTeX processing.
|
||||
Expresses the original characters (including carriage returns) of the
|
||||
string across LaTeX processing."
|
||||
|
@ -5706,7 +5709,7 @@ across LaTeX processing, within the context of a `verbatim'
|
|||
environment. Leaves point at the end of the line."
|
||||
(let ((inhibit-field-text-motion t))
|
||||
(beginning-of-line)
|
||||
(let ((beg (point))
|
||||
(let (;(beg (point))
|
||||
(end (point-at-eol)))
|
||||
(save-match-data
|
||||
(while (re-search-forward "\\\\"
|
||||
|
@ -5790,7 +5793,7 @@ environment. Leaves point at the end of the line."
|
|||
(set-buffer buffer)
|
||||
(insert "\n\\end{document}\n"))
|
||||
;;;_ > allout-latexify-one-item (depth prefix bullet text)
|
||||
(defun allout-latexify-one-item (depth prefix bullet text)
|
||||
(defun allout-latexify-one-item (depth _prefix bullet text)
|
||||
"Insert LaTeX commands for formatting one outline item.
|
||||
|
||||
Args are the topics numeric DEPTH, the header PREFIX lead string, the
|
||||
|
@ -6359,7 +6362,7 @@ save. See `allout-encrypt-unencrypted-on-saves' for more info."
|
|||
;;;###autoload
|
||||
(defalias 'outlinify-sticky 'outlineify-sticky)
|
||||
;;;###autoload
|
||||
(defun outlineify-sticky (&optional arg)
|
||||
(defun outlineify-sticky (&optional _arg)
|
||||
"Activate outline mode and establish file var so it is started subsequently.
|
||||
|
||||
See `allout-layout' and customization of `allout-auto-activation'
|
||||
|
|
|
@ -40,11 +40,11 @@
|
|||
;;
|
||||
;; SGR control sequences are defined in section 3.8.117 of the ECMA-48
|
||||
;; standard (identical to ISO/IEC 6429), which is freely available as a
|
||||
;; PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>. The
|
||||
;; "Graphic Rendition Combination Mode (GRCM)" implemented is
|
||||
;; "cumulative mode" as defined in section 7.2.8. Cumulative mode means
|
||||
;; that whenever possible, SGR control sequences are combined (ie. blue
|
||||
;; and bold).
|
||||
;; PDF file <URL:http://www.ecma-international.org/publications/standards/Ecma-048.htm>.
|
||||
;; The "Graphic Rendition Combination Mode (GRCM)" implemented is
|
||||
;; "cumulative mode" as defined in section 7.2.8. Cumulative mode
|
||||
;; means that whenever possible, SGR control sequences are combined
|
||||
;; (ie. blue and bold).
|
||||
|
||||
;; The basic functions are:
|
||||
;;
|
||||
|
|
|
@ -1121,7 +1121,7 @@ If non-nil TEXT is a string that will be printed as a heading."
|
|||
(apropos-print-doc 2
|
||||
(if (commandp symbol)
|
||||
'apropos-command
|
||||
(if (apropos-macrop symbol)
|
||||
(if (macrop symbol)
|
||||
'apropos-macro
|
||||
'apropos-function))
|
||||
(not nosubst))
|
||||
|
@ -1139,17 +1139,6 @@ If non-nil TEXT is a string that will be printed as a heading."
|
|||
(prog1 apropos-accumulator
|
||||
(setq apropos-accumulator ()))) ; permit gc
|
||||
|
||||
(defun apropos-macrop (symbol)
|
||||
"Return t if SYMBOL is a Lisp macro."
|
||||
(and (fboundp symbol)
|
||||
(consp (setq symbol
|
||||
(symbol-function symbol)))
|
||||
(or (eq (car symbol) 'macro)
|
||||
(if (autoloadp symbol)
|
||||
(memq (nth 4 symbol)
|
||||
'(macro t))))))
|
||||
|
||||
|
||||
(defun apropos-print-doc (i type do-keys)
|
||||
(let ((doc (nth i apropos-item)))
|
||||
(when (stringp doc)
|
||||
|
|
|
@ -271,9 +271,7 @@ This variable becomes buffer local when set in any fashion.")
|
|||
:type 'boolean
|
||||
:version "24.4")
|
||||
|
||||
(defcustom auto-revert-use-notify
|
||||
;; We use the support of the local filesystem as default.
|
||||
(file-notify-supported-p temporary-file-directory)
|
||||
(defcustom auto-revert-use-notify t
|
||||
"If non-nil Auto Revert Mode uses file notification functions.
|
||||
You should set this variable through Custom."
|
||||
:group 'auto-revert
|
||||
|
@ -512,8 +510,7 @@ will use an up-to-date value of `auto-revert-interval'"
|
|||
(set (make-local-variable 'auto-revert-use-notify) nil))
|
||||
|
||||
(when (and buffer-file-name auto-revert-use-notify
|
||||
(not auto-revert-notify-watch-descriptor)
|
||||
(file-notify-supported-p buffer-file-name))
|
||||
(not auto-revert-notify-watch-descriptor))
|
||||
(setq auto-revert-notify-watch-descriptor
|
||||
(ignore-errors
|
||||
(file-notify-add-watch
|
||||
|
@ -598,14 +595,14 @@ This is an internal function used by Auto-Revert Mode."
|
|||
(setq size
|
||||
(nth 7 (file-attributes
|
||||
buffer-file-name)))))
|
||||
(and (file-readable-p buffer-file-name)
|
||||
(not (verify-visited-file-modtime buffer)))))
|
||||
(funcall (or buffer-stale-function
|
||||
#'buffer-stale--default-function)
|
||||
t)))
|
||||
(and (or auto-revert-mode
|
||||
global-auto-revert-non-file-buffers)
|
||||
revert-buffer-function
|
||||
(boundp 'buffer-stale-function)
|
||||
(functionp buffer-stale-function)
|
||||
(funcall buffer-stale-function t))))
|
||||
(funcall (or buffer-stale-function
|
||||
#'buffer-stale--default-function)
|
||||
t))))
|
||||
eob eoblist)
|
||||
(setq auto-revert-notify-modified-p nil)
|
||||
(when revert
|
||||
|
|
|
@ -1220,7 +1220,7 @@ if `inhibit-field-text-motion' is non-nil."
|
|||
(define-key map "n" 'number-to-register)
|
||||
(define-key map "+" 'increment-register)
|
||||
(define-key map "w" 'window-configuration-to-register)
|
||||
(define-key map "f" 'frame-configuration-to-register)
|
||||
(define-key map "f" 'frameset-to-register)
|
||||
map)
|
||||
"Keymap for subcommands of C-x r.")
|
||||
(define-key ctl-x-map "r" ctl-x-r-map)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue